A Cocoa az Apple objektumorientált programnyelve a macOS és iOS rendszerekre, amely előre elkészített szoftver könyvtárakat, alkalmazás futtató felületet és integrált fejlesztői környezetet tartalmaz. A Cocoa az iOS kizárólagos és a macOS előnyben részesített programnyelve, amely segítségével a különféle rendszer szolgáltatások a legoptimálisabban, a legjobb felhasználói élményt nyújtva kihasználhatók.

A Cocoa remek példa arra, hogy Steve Jobs mennyire látta a jövőt! Bár a Cocoa alkalmazások roppant modern és újszerű megjelenésűek, maga a nyelv 1989-ben született, amikor Jobs második vállalkozása, a NeXT üzemelt. Ennek a cégnek a terméke volt NeXTSTEP, Jobs ugyanis felismerte, hogy például a Windows rendszerrel úgy lehet felvenni a versenyt, ha egyrészt megkönnyítik a fejlesztők dolgát, ezzel motiválva őket, másrészt pedig jobban optmalizálttá, gyorsabbá teszik a rendszert azáltal, hogy rengeteg szolgáltatást csak meg kell hívni, mert a rendszerbe van integrálva.

A NeXTSTEP nem keretrendszereket tartalmazott, hanem dinamikusan megosztott könyvtárakat, úgynevezett csomagokat (kit). Ez fejlődött aztán osztályokká, amikor a cég figyelme a professzionális hangszerkesztés irányába fordult: ekkor megjelent a Sound Kit és a Music Kit nevű Objective-C osztály, amely rendszerszintű hang és zene szintetizáló szolgáltatásokat biztosított.

Steve Jobs a NeXTSTEP elterjesztése érdekében azt 1993-ban Intel, HP és Sparc rendszerekre is kiadta, és ekkor indult meg az együttműködés a Sun Microsystems céggel annak érdekében, hogy OpenStep néven a Solaris rendszereken is elérhetővé váljon a NeXTSTEP. Érdekesség, hogy az OpenStep API 1994-es megjelenésekor alkalmazták először az NS előtagot a fájlnevekben, amely azóta is alapeleme a Cocoa alapú alkalmazásoknak.

A NeXTSTEP a törekvések ellenére sosem terjedt el, és maga a NeXT Computer is mellékága maradt a számítástechnikának, mígnem 1997-ben Steve Jobs visszatérésével párhuzamban az Apple fejlesztőkkel és tudástárral együtt felvásárolta a céget, a NeXT beolvadt az Apple-be.

Gyakorlatilag a NeXT tudása alapozta meg azt a UNIX alapú operációs rendszert, amelyet ma macOS néven ismerünk. Az OpenStep új neve Yellow Box lett, és a macOS Server mellett a Windows rendszerekben is tovább élt egy ideig, de végül a macOS megjelenésével teljesedett ki és fejlődött tovább immáron Cocoa néven.

A Cocoa objektumorientált keretrendszere révén a fejlesztők úgy alkalmazhatnak a programjukban különféle szolgáltatásokat, hogy azokat nem kell megírniuk, csak bekapcsolják az Apple által kínált megoldást ("osztályt"). Ennek előnye, hogy ez nem igényel pluszmunkát, mivel az Apple teljesen használható formában kínálja az objektumot, illetve bárhol alkalmazzuk, ugyanúgy fog kinézni, tehát a felhasználók számára is ismerős lesz mind a felület, mind a funkciók működése.

Ilyen például a betűcsaládok kiválasztásának palettája (Fonts), a programok többségében Command + T paranccsal nyitható felület, amely ugyanúgy néz ki a Preview, TextEdit, Mail és sok egyéb Cocoa alapú programban.

A Cocoa sok egyéb rendszerszolgáltatást magában foglal, amelyet demonstrálhatunk akár úgy, hogy alkotunk egy programot, amely egyetlen sor kódot sem tartalmaz. Egy ilyen program elindul, ha duplán kattintunk rá, megjelenik az ikonja a dokkon, megjelennek a felső menüi, lesz egy ablaka Window néven, elrejti magát, ha ilyen parancsot adunk neki, nem zavar más futó alkalmazásokat, kilép, ha arra utasítjuk. Ezen kívül mozgathatjuk, átméretezhetjük, minimalizálhatjuk az ablakát, sőt, ki is nyomtathatjuk a tartalmát a Print paranccsal. Ezeket a szolgáltatásokat nevezzük alapvető alkalmazás keretrendszernek, amelyeket minden fejlesztő alapból elér, ha a macOS rendszerre program írását kezdi.



Egy következő réteg a felhasználói felületi objektumok sora: a Cocoa révén sokféle alapvető vagy extra szolgáltatást, interfész elemet elérhetünk anélkül, hogy programozási műveleteket kellene végrehajtani. Ilyenek pédául: ablakok, szövegmezők, képmegjelenítés, dátum választó, párbeszédablakok, palástablakok, vezérlő felületek, táblázat nézetek, folyamatábrák, gombok, görgetősávok, opciódobozok (úgynevezett radio button), színválasztó felület (Color paletta), fiókablakok (úgynevezett drawer). Ezen kívül a Cocoa felhasználói interfész elemei közé tartoznak a rendszerbe integrált hozzáférési szolgáltatások (Accessibility), a különféle szolgáltatás elemek ellenőrzése és a szolgáltatások közötti kapcsolat létrehozása és fenntartása.

A Cocoa széles körű rajzolási és képfeldolgozási elemeket is kínál. A Grapher nevű alkalmazás a Utilities mappában egy példa arra, hogy miként képes a Cocoa ábrázolási funkciója koordináta geometriai alakzatokat alkotni. A képfeldolgozás és képalkotási funkciókra jó példa a Preview alkalmazás, amely képes képeket konvertálni, PDF iratokat létrehozni, illetve a Core Image alapú képjavító funkciói révén vizuális javítást végrehajtani egy képen. A Core Image funkciókat összegző paletta többféle programban visszaköszön, módosított megjelenése látható az iPhoto felületén.

A Cocoa felépítése révén megkönnyíti a lokalizációt: az interfész elemek egyszerűen szerkeszthetőek, a párbeszéd ablakok feliratai, a program hosszabb szövegei és a segítő állományok külön szövegfájlban találhatóak, ahol egyszerű szövegpárok láthatóak elől az angol, jobbra a lokalizált szöveggel.

Roppant fontos eleme a Cocoa nyelvnek a macOS rendszerben a szöveg: a Cocoa alkalmazások mindegyike Unicode támogatású, mindegyike képes használni a rendszerben lévő vagy utólag telepített szabad forrású helyesírás ellenőrzőket, mindegyik hozzáfér a rendszer betűcsaládjaihoz és eléri a betűmegjelenési képességeket. A leglátványosabb terület, ahol a Cocoa messze túllép az agg Carbon programnyelven, az éppen a szövegkezelés területe.

Megjegyzés: A Mac OS klasszikus változataiban is elérhető nagy programok - például az Adobe alkalmazások - általában nem kerültek újraírásra a macOS rendszer megjelenésekor, hanem egyszerűen "portolva" lettek, azaz a programot futás közben dinamikusan fordítja le a rendszer. Emiatt azonban ezen alkalmazások nem képesek natív sebességgel futni, nagyon leegyszerűsítve emulálva futnak. Jó példa erre az Adobe Fireworks alkalmazás, amely Mac OS 9 alatt igen fürge program volt, de a macOS rendszerben gyakorlatilag használhatatlan. Sok esetben - mint az Adobe programoknál - a fejlesztők nem fordítanak külön erőforrásokat a Mac alapú fejlesztésre, hanem a dinamikus felhasználói élmény rémét, a Java keretrendszert használják. Ez az oka, hogy például egy-egy Adobe program első indításakor az a Java környezet telepítését követeli. Ezen programok többségének van natív Cocoa alapú alternatívája, a MacMag.hu szerkesztése során korábban alapvető Fireworks helyett például a Pixelmator alkalmazás látja el natív sebességgel a funkciókat.



A macOS rendszerben a hálózat kezelés (Networking), a nyomtatás (Printing), a multimédia tartalmak kezelése (QuickTime alapon), a visszavonások kezelése (Undo management), alkalmazások közti adatcsere mind-mind rendszer szolgáltatás, amely mögött Cocoa alapú keretek állnak. Ezen kívül a macOS felhasználók számára a Cocoa lehetőséget ad dokumentum alapú alkalmazások létrehozására - vagyis olyan program alkotására, amelynek nincsen alapból ablaka, csak ha egy dokumentumot megnyitunk benne - ilyen például a TextEdit, a Preview vagy a Pages. Fontos alap szolgáltatás még a szkriptelhetőség, amely révén felhasználói szintű utasításokat adhatunk egy-egy alkalmazás Cocoa osztályainak, funkcióinak. A szkriptek egyrészt felhasználói szintről, másrészt alkalmazás szintről is működhetnek.

Az Apple a fejlesztők számára az Xcode nevű programot kínálja, amely révén Cocoa alapú alkalmazásokat hozhatunk létre és tesztelhetünk a macOS és iOS rendszerek számára. Az Xcode az Apple beépített fejlesztői környezete (integrated development environment).

Az Xcode a következő programnyelveket támogatja: C, C++, Objective-C, Objective-C++. Képes alkalmazásokat, parancssoros eszközöket, kereteket, bővítményeket, kernel kiegészítőket és csomagokat (bundle) létrehozni. Az Xcode a Cocoa alapú alkalmazások létrehozására (compile) a következő opciókat kínálja: GCC (GNU C compiler), LLCM-GCC (Low Level Virtual Machine GNU C compiler), Clang (LLVM-GCC front end). Az Xcode mellé az Apple az Interface Builder nevű felület építő alkalmazást kínálja, amely révén saját elképzeléseink szerint alkothatjuk meg a programunk megjelenését.

Bővebben a Cocoa technológiáról az Apple Developer lapon…

© MacMag.hu | Cikk: Birincsik József 2013. 09. 23.

Forrás: developer.apple.com