Hlavní navigace

MAC OS X je taky unix (3): Dědictví NeXTStepu

Adam Šindelář 19. 5. 2005

Dnešní díl Mac OS X bych chtěl začít malou omluvou; před týdnem jsem vám na dnešek slíbil nahlédnutí do Javy, Cocoa a OpenGL, ale tu posledně jmenovanou technologii tu dnes nenajdete. Když jsem procházel a doplňoval informace v dnešním článku, rozrostlo se povídání o Cocoa a Javě a na OpenGL už tedy nezbylo místo.

Cocoa

Pojďme tedy nahlédnout do objektového frameworku Cocoa vycházejícího z NeXTStepu. Jedná se o víceúrovňové API zajišťující snadný a rychlý přístup k určené podmnožině funkcí systému, stejně jako jednoduché propojení s dalšími systémovými knihovnami a frameworky. Aplikace využívající Cocoa mohou být napsány v Objective C nebo v Javě, a pokud jim nestačí kakaové funkce, mohou přistupovat i ke Carbon API a dalším součástem systému.

Díky svým NeXTStepovým kořenům je Cocoa velmi blízká například GNUstepu, ovšem vyvíjí se rychleji a je rozsáhlejší, takže portování Mac OS X aplikací na GNU systémy není rozhodně jednoduché. Všechny třídy v tomto frameworku se dají snadno identifikovat podle prefixu NS a můžeme si je rozdělit do dvou základních skupin.

Application Kit

Třídy Application Kitu, někdy zvaného také Cocoa Application Framework nebo prostě AppKit, slouží především k tvorbě frontendu programu – poskytují snadný přístup k technologiím jako QuickTime a OpenGL a snadnou integraci do zbytku systému. Všechny aplikace používající Application Kit samy od sebe reagují na stejné klávesové zkratky, automaticky pracují s kontrolou pravopisu, spolupracují v drag&drop a všemožně se chovají jako správní obyvatelé Mac OS X.

Foundation

Foundation třídy poskytují jednoduchý přístup k nízkoúrovňovým funkcím systému. Sem patří například vlákna, síťování a práce s daty. Foundation se většinou používá při psaní backendu aplikace. V Tigeru do této části API přibylo několik dalších nástrojů, například framework zvaný Core Data pro snadné zpracování dat podle programem definovaných pravidel. Stojí za zmínku, že vývojářské nástroje Applu (zejména XCode) obsahují tzv. Perfomance Tools, které jsou zaměřené především na Cocoa aplikace.

Tiger do Cocoa přispěl kromě technologie Core Data také mnoha desítkami drobných vylepšení, funkcemi pro integraci s novými technologiemi jako Spotlight nebo Core Image a také kompletně novým API pro Quick Time, PDFKit, synchronizaci a 64bitový backend. Apple si od tohoto kroku slibuje přilákání vývojářů z jiných platforem.

Cocoa je pravděpodobně nejpoužívanější, nejdůležitější a nejlépe integrovaný framework v dnešním Mac OS a jeho implementace prostupuje celým systémem. Důležitými rysy jsou vysoká míra integrace a abstrakce a jednoduché a intuitivní použití. Řekli jsme si, že kromě Objective C je možným jazykem pro Cocoa i Java; povězme si tedy něco o Javě v Mac OS X.

Java

Na rozdíl od implementací na jiných platformách si Apple vyvinul svou verzi Javy sám a začlenil ji rovnou do nízkoúrovňových součástí Mac OS X. V systému najdete Javu 2 Standard Edition ve verzi 1.4.2 včetně Java Developer Kitu integrovaného do vývojového prostředí XCode. Javové aplikace mají přístup k objektovému frameworku Cocoa, mohou exportovat akce do Apple Scriptu (a tedy i Automatoru), vypadají stejně jako nativní programy, a pokud si zrovna samy neimplementují kdeco, ani nepoznáte, že děláte s Java Virtual Machine. Java aplikace se také chovají podle accessibility pravidel, podporují macovské Services i hlasové ovládání či čtení textu.

Tohle vše bohužel platí pouze, pokud se autor aplikace nějak sám snaží o integraci s Mac OS X; pokud tedy například program používá vlastní widgety, nejsou nahrazeny nativním aqua vzhledem. Ale i možnost a jednoduchost portování se cení a při pohledu například na takový jEdit je vidět, že applovská Java skutečně má své nepopiratelné přednosti. Stejný pohled nám bohužel odhalí i druhý kámen úrazu, a tím je rychlost. Ačkoliv se Apple chlubí revoluční technologií umožňující sdílení Java knihoven a ušetření paměti, realita je bohužel až tristně pomalá a jak startovací časy, tak i výkon Java aplikací na Mac OS X uživatele nepotěší. Obecně se dá říct, že je-li program vyladěný pro Mac OS X, běhá poměrně svižně, ale standardní multiplatformní aplikace jsou většinou o dost pomalejší než na srovnatelných sestavách s jiným operačním systémem.

Apple si je, zdá se, vědom těchto nedostatků a problému se věnuje. Doslova s každým setinkovým updatem systému se implementace Javy zlepšuje a zrychluje a je pravděpodobné, že se časem podaří všechny chyby a zádrhele vychytat a Mac OS X se bude moci chlubit nejen skvělou integrací Javy, ale i její rychlostí.

Objective C

Objective C je samostatný a velmi univerzální a (dle mého názoru) krásný programovací jazyk, který byl poprvé představen v NeXTStepu společnosti NeXT. Postupně byl portován na mnoho platforem, a tak si ho dnes mohou uživatelé GNU/Linuxu užít například pomocí knihovny GNUStep. Nebudu se zde zabývat sémantikou, syntaxí ani fungováním Objective C, pouze vyjasním několik základních záležitostí, aby nedošlo ke zbytečným omylům.

Objective C je, jak už název říká, objektový jazyk. Na rozdíl od C++ má Objective C skutečné objekty a ne pouze trochu vylepšené structy, a přestože si mnoho lidí myslí opak, dokáže pracovat s knihovnami napsanými pro C a C++. Tento jazyk je mnohem podobnější SmallTalku než svému původnímu vzoru; třídy se chovají jako normální objekty, komunikace probíhá výměnou zpráv a všeobecné pojetí se kloní k oddělení definice a implementace entit v programu. Pokud vás Objective C zajímá, je Mac OS X nejlepší platformou, kde se mu můžete věnovat. Tento jazyk byl vybrán nejen díky dědictví NeXTStepu, ale také protože je jednoduché v něm psát. Pro více informací nejen o Objective-C doporučuji seriál Nastal čas na kakao na serveru Mujmac.cz.

Toliko tedy povídání o dědictví NeXTStepu, příště se podíváme na tradičnější C++ framework zvaný Carbon, krátce nahlédneme do starého Mac OS 9 a na s tím související implementaci X11 a správu procesů a vláken v Mac OS X. Na slibované OpenGL dojde později, pravděpodobně až se dostaneme k multimediálním knihovnám.

Našli jste v článku chybu?

19. 5. 2005 17:17

Nevím sice co tenhle test říká o výkonu počítače (chápu to správně tak že mac je 20x pomalejší než ty ostatní počítače?) ale už z výsledků bych tipoval že něco jako výkon interpretru shellových scriptů či něco podobného :)

Podpořit své tvrzení benchmarky bych samozřejmě mohl a na internetu si jich kdokoliv může najít kolik chce. Faktem ale je, že do těhle čísel se dá zabalit ledacos... stejně jako si MS vytvoří studii ukazující pomalost a děravost Linuxu, může si Apple udělat studii ukazující o…

7. 4. 2006 3:19

Roman (neregistrovaný)
Tak jsem to take zkusil...
vim, ze to moc informativni neni, ale jen tak pro predstavu
Macbook Pro
Procesor: 2GHz Intel Core Duo
Memory 2GB DDR2

time sh -c 'echo 2^1000000 | bc >/dev/null'

real 0m10.702s
user 0m10.654s
sys 0m0.040s









DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat