8. listopadu 2007, 10.00 | Po pauze se opět vracíme s dalšími díly seriálu, který se věnuje programování v prostředí Cocoa operačního systému Mac OS X: Leopard je mezi námi, takže je na čase se podívat na to, co nového přinesl programátorům.
Po pauze se opět vracíme s dalšími díly seriálu, který se věnuje programování v prostředí Cocoa operačního systému Mac OS X: Leopard je mezi námi, takže je na čase se podívat na to, co přinesl nového programátorům.
Ačkoli mezi novinkami snad nejsou tak zásadní balíky, jako byla Core Data v době Tygra – mimochodem, dle mých zkušeností jedno z nejošklivějších zklamání: Core Data jsou skvěle navržena, leč prachmizerně implementována, a obsahují řadu velmi nepříjemných chyb a problémů. Bohužel, jak se zdá, Leopard tuto tradici dodržel (vůbec mám v poslední době nepříjemný dojem, že čím více úsilí Apple vkládá do všelijakých iPhonů a iPodů, tím méně času zbývá na software) –. Nových věcí je dost a dost na to, aby nám vystačily na několik zajímavých dílů.
Objective C 2.0
Už před časem jsme psali, že po dlouhých letech, kdy nebylo zapotřebí do jazyka Objective C nikterak zasahovat, se firma Apple rozhodla jazyk rozšířit a vylepšit doplněním nových služeb.
Ukážeme si je samozřejmě podrobně i s jejich výhodami a nevýhodami: ti, kdo měli až dosud hrůzu z paradigmatu retain/release, jistě potěší, že Objective C nyní podporuje plně automatický garbage collector. Přitom původní systém správy paměti je stále k dispozici a každý proces si může vybrat to, co jeho programátorovi lépe vyhovovalo: pohodlnější GC, nebo efektivnější retain/release.
64 je dvakrát tolik než 32
Ani o podpoře 64bitového režimu práce jsme se před časem nezapomněli zmínit; tehdy ovšem operační systém obsahoval knihovny a další podporu jen v omezené míře, pouze pro "obyčejné programy" – runtime Objective C a naše Kakao měly smůlu.
Leopard to změnil: od nynějška je k dispozici plně 64bitový režim práce i v Objective C a pro všechny standardní knihovny Apple; změny a nové možnosti, jež to přineslo, nám rozhodně vystačí na samostatný článek.
Nové třídy, nové služby...
Foundation a AppKit ovšem nezůstaly pozadu, a nabízejí řadu nových tříd – a nových služeb ve třídách starých. Obě knihovny samozřejmě nyní plně podporují výše zmíněnou práci ve čtyřiašedesátibitovém režimu; kromě toho máme k dispozici řadu dalších novinek.
Ve Foundation Kitu kupříkladu nalezneme třídy NSOperation a NSOperationQueue, jež pro jednoduché případy nabízejí pohodlnou možnost rozdělení práce do více samostatných vláken, aniž by se programátor musel vůbec něčím takovým zabývat.
AppKit pak nabízí paletu nových možností, zahrnujících kupříkladu předpřipravený editor predikátů, výrazně rozšířený (a snad i opravený) NSTreeController – a že toho měl zapotřebí! –, nové API pro dynamické animace obecných "views" založené na Core Animation, a předlouhou řadu dalších novinek, z nichž si ukážeme alespoň ty nejdůležitější.
... a celé nové knihovny
Novinkou je již zmíněná knihovna Core Animation, jež nabízí možnost velmi pohodlných animací viditelných objektů. Mám sice trochu obavu, zda tyto možnosti nebudou zneužívány pro "pouťově" vypadající aplikace, ale v základu jde o služby velmi rozumné – umožňují snadno zajistit takové věci, že např. uzavření panelu neproběhne skokem, ale dynamicky apod.
Framework Image Kit nabízí řadu služeb pro pohodlnou práci s obrázky, jejich zobrazování i základní úpravy: do jisté míry by se dalo říci, že libovolná aplikace má nyní k dispozici tytéž možnosti jako iPhoto :)
Další zajímavou knihovnou je Calendar Store, jež nabízí přístup k "databázi" tvořící základ kalendáře, jehož uživatelským rozhraním je aplikace iCal; nyní tedy kterákoli aplikace může snadno pracovat s kalendářovými záznamy (podobně, jako již dávno má k dispozici pohodlný framework pro práci s údaji z adresáře).
Velmi zajímavě vypadá Scripting Bridge: tento framework slibuje přímou a nativní podporu pro spolupráci mezi aplikacemi – tedy zhruba to, co nikdy nedokázal pořádně zajistit nenativní a syntakticky poněkud šílený AppleScript. Doufejme jen, že byl nad novou knihovnu přepsán také Automator, a že konečně funguje pořádně!
Ačkoli bohužel nejde o objektový framework, stojí za alespoň stručnou zmínku knihovna FSEvent, jež se stará o předávání notifikací o změnách v systému souborů.
K novým možnostem jsou i nové nástroje
Podobně jako Tygr přišel s Xcode 2, přináší Leopard další velkou versi standardního vývojového prostředí Apple, Xcode 3. Konečně již jde o změnu pouze evoluční a nikoli revoluční – zdá se, že po letech a až příliš mnoha pokusech a slepých uličkách mají konečně u Apple základy vývojového prostředí rozumné a dále na nich staví.
Nové Xcode sice na první pohled vypadá velmi podobně jako "dvojka", přináší však řadu velmi zajímavých novinek, usnadňujících práci a zjednodušujících vývojový cyklus. Rozhodně sem patří např. Research Assistant – velmi šikovné okénko, jež neustále zobrazuje aktuální informace o symbolu, na němž je právě kurzor. Hodně času ušetří i "mini debugger" – plovoucí okénko, jež umožňuje vyvolávat základní služby debuggeru nad libovolnou aplikací, spuštěnou z Xcode, aniž by bylo zapotřebí přepínat do debuggeru. Jakkoli zvýrazňování úrovně vnoření samo působí lehce pouťovým dojmem:
– a to obrázek ani nezachytil, že bíle vyznačená oblast krátce zapulsuje! –, možnost skrývat bloky zdrojového textu, jež je s ním spojena (a jež tak mimochodem po patnácti letech vrátila zpět samozřejmost Editu z NeXTStepu!) je hodně praktická.
Ti, kdo i přes výše zmíněné chyby a problémy využívají knihovnu Core Data, jistě uvítají bohatou podporu tzv. "mapovacích modelů", umožňujících v grafickém prostředí specifikovat postup přechodu od starší verse dat k nové –. Tedy něco, co až dosud bylo nutno velmi pracně programovat.
A aby bylo novinek více, nové Xcode vedle Objective C podporuje také interpretované jazyky Ruby a Python.
Ubicumque dulce est, ibi et acidum invenies: bohužel z Xcode zcela zmizely podpůrné prostředky pro programování ve WebObjects – především nenahraditelný WOBuilder. Ne že by se firma Apple vzdávala WebObjects, právě naopak – součástí Xcode 3 je nová, podstatně rozšířená verse WebObjects 5.4 (mezi její novinky patří kupříkladu nový formát templates, spojující .html i .wod do společného souboru, a řada dalších). Vývojovým prostředím pro WebObjects však nadále nemá být Xcode, nýbrž otevřený javský systém Eclipse s pluginem WOLips. Jakkoli není sporu o tom, že Eclipse jako systém zaměřený a specializovaný na vývoj v Javě dokáže nabídnou daleko lepší služby (ten, kdo někdy zkusil v rámci Xcode spustit javu pod debuggerem ví, co mám na mysli), vůbec z toho nemám radost: mnohem lépe mi vyhovovalo využívat jedno společné IDE pro všechny projekty.
Ostatně stran Javy – zdá se, že u Apple konečně pochopili to, co bylo komukoli, kdo v té věci kdy zkusil programovat, jasné od prvního pohledu: jedná se o kombinaci ďábelské rychlosti Smalltalku s jemnou elegancí C++, a nejenže Java není beznadějně s to konkurovat vývojovému systému založenému na Objective C, ale začíná být zřejmé, že lze lépe a efektivněji vyvíjet i ve výše zmíněných skriptech jako Ruby či Python. Apple tedy tuto slepou uličku zvolna opouští: Java Bridge již není nadále podporován, a sama Java dostává právě takovou pozornost, jakou si zaslouží, to jest mizivou :)
K novému Xcode je také nový Interface Builder; tentokrát jde o změnu revoluční – aplikace je napsána od základu znovu, nabízí přepracované GUI a mnohem lepší integraci s Xcode. Na nový Interface Builder se samozřejmě podíváme velmi podrobně.
Naopak jen velmi stručně se podíváme na aplikaci Dashcode, určenou pro sestavování "widgetů" pro dashboard; ušetřený čas věnujeme podrobnějšímu pohledu na nový univerzální prostředek pro hledání problémů s pamětí i výkonem (nebo čímkoli jiným) v aplikacích – novému programu Instruments.