Az Objective-C programozási nyelv

Fordítók



Általános információ

Többféle fordító létezik. A nyelvet az Apple fejleszti, ezért főként az ő fordítóik terjedtek el. Az Apple fordítói a GNU Compiler Collection-ön alapulnak, így a GCC tartalmaz Objective-C fordítót is. Mivel az Objective-C szintaxis a C/C++ szintaxis bővítése, működnek mindhárom nyelven írt forráskódokra. A fájlokat a kiterjesztésük alapján különböztetik meg: az Objective-C források .m, a tisztán C kódokat tartalmazó források .c, az Objective-C-t használó C++ források .mm kiterjesztéssel rendelkeznek.

A GNUStep project

A GNUStep project célja hogy egy jól használható implementációt adjon az egykori NEXTStep API-hoz, illetve a jelenlegi Cocoa könyvtárszerkezethez minnél több platformon.

Rövid történeti áttekintés

Az 1980-as években Alakult a NEXTStep vállalat, amely céljául az új generációs hardware és software monponensek fejlesztését tűzte ki. A vállalat nagy sikereket tudhatott magáévá, a software komponensek terén nyújtott kitűnő eredményeinek köszönhetően. Megalkották a saját operációs környezetüket amely NEXTStep néven vált híressé. A vállalat egyre inkább a software fejlesztések irányába tolódott el.

A NEXTStep operációs környezet legnagyobb elónye a nagyon rugalmas és modern objetumoriantált kezelő és programozói felülete volt. Akkora sikernek örvendett hogy a fejlesztők úgy döntöttek hogy platformfüggetlen API-ként is létrehozzák hogy a software ipar mégnagyobb területén jelen legyenek. Az elkészült kereszt platformos API az OPENStep névre halgatott. Azonban alig hogy ez elkészült az Apple cég hivatalosan is bejelentette hogy felvásárolta a NEXTStep-et.

Az Apple természetesen felhasználta a NEXTStep környezetet az akkoriban fejlesztés alatt álló legújabb operásiós rendszerének magjaként a MAC OS X-hez. Az Apple hozzátette a saját fejlesztéseit a NEXTStep környezethez, amely lassacskán divergálni kezdett a nyilt szabványú OPENStep-től. Igy alakult ki az Apple fejlesztőinek kezei alatt a NEXTStep-ből a ma is használt Cocoa magja.

Az OPENStep nyilvánosságrahozása után számos kisérleti projekt indult az API teljes implementációját megcélozva. Ezen projektek egyike a ma is működő GNUStep, melynek alapjai a nyiltforráskódú linux világban gyökereznek. A GNUStep eredeti céljának tekintette hogy minnél számosabb platformon használhatóvá tegye az OPENStep API-t. Mikor azonban az Apple Cocoa-ja egyre távolabb került az eredeti OPENStep-től A GNUStep fejleszői feladatuknak tartották hogy lépést tartasank a Cocoa irányvonalával, miközben maximális mértékben hűek maradjanak az OPENStep szellemiségéhez. Megpróbálják ötvözni mindkét keretrendszer erősségeit miközben a gyengeségektől megpróbálnak megszabadulni, úgy, hogy a kész rendszer kompatibilis maaradjon az élő Cocoa-val.

A GNUStep sajnos nagyon sok könyvtári csomag kifejlesztését nem tartja feladatának, amiket az Apple adott a Cocoa-hoz. Így hát számos osztály amely szerves részét képezi az Apple fejlesztők eszköztárának, még mindig nem használható minden a GNUStep által támogatott platformon. Sőt könnyedén talalhatóak olyan a Cocoa által támogatott osztályok pl.: az AppKit-ben amelyek nem képezik a GNUStep AppKit-jének a részét.

GNUStep használata Windows alatt

Windows alatti fordításhoz használhatjuk a GNUStep rendszert és fejlesztőkörnyezetet, a következő címről: http://www.gnustep.org/experience/Windows.html

Innen telepítendő:

Ezek után a C:\GNUStep\home\felhasználónév mappában hozhatjuk létre programjainkat. Érdemes azonban minden projektet külön mappába letrehozni. Új mappát a linux rendszerek szokásos paranccsal hozhatunk létre miutány elindítottuk a korábban felinstallált GNUStep környezetet a start menüből. Start menü -< GNUStep -< Shell

mkdir MyFirstProject

A 'home/MyFirstProject/hello.m' program fordítása:

gcc -o hello hello.m -I /GNUstep/System/Library/Headers \ -L /GNUstep/System/Library/Libraries -lobjc \ -lgnustep-base -fconstant-string-class=NSConstantString

Fontos, hogy a fordításnál megadjuk a szabványos Objective-C osztálykönyvtárat, mivel ennek használata nem automatikus, mint pl. C++ -nál. Ennek hiányában hibaüzenettel figyelmeztet a fordító.

A GNUStep Shell-ben egy Linux-szerű környezetet használhatunk programjaink fordításához, futtatásához, és teszteléséhez, de szabványos windows programként is futtathatóak lesznek.

GNUMakefile-ok használata Windows alatt

A Fejlesztők nagy szerencéjére a GNUStep környezet tartalmaz néhány előre definiált linux stílusú makefile-t. Ezeket a makefile-okat kiegészthetjük saját forrásaink neveivel, majd egyszerűen futtahatjuk a linux rendszerek alatt jól megszokott make utasítást a shell-ben. Ennek hatására az egyes alkalmazás típusokhoz szükséges kapcsolók valamint forrásállományok autómatikusan hozzá lesznek linkelve a saját projektünkhöz.

Példa egy egyszerű TOOL ( nem grafikus parancssori alkalmazás ) makefile-jára :

// GNUmakefile include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = Executable Executable_OBJC_FILES = application.m main.m include $(GNUSTEP_MAKEFILES)/tool.make

Néhány fontos részlet amire érdemes felhívni a figyelmet :

GNUStep használata Linux/Ubuntu alatt

Telepítenünk kell a GNUStep futtató és fejlesztő környezetet :

sudo apt-get install gnustep gnustep-devel

Ezután megpróbálhatjuk fordítani a forrásunkat. Vegyünk egy példát:

// hello.m #import int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"hello world"); [pool drain]; return 0; }

A fordítást a következő utasítással hajthatjuk végre:

gcc `gnustep-config --objc-flags` -lgnustep-base hello.m -o hello

Amennyiben hiba nélkül lefut a parancsunk, úgy futtathajtuk az alkalmazást. Azonban elképzelhető, hogy további csomagok szükségesek a fordításhoz. Például a következő hibaüzenetet kapjuk:

gcc: error trying to exec 'cc1obj': execvp: No such file or directory

Ez azt jelenti, hogy a gobjc csomag hiányzik a rendszerből. A csomag telepítésével a hiba megszűnik.

Ha mindezek ellenére sem akar fordulni valami miatt a programunk, akkor érdemes kipróbálni a Windows-os szekcióban leírtak alapján egy makefile-t készíteni, majd kiadni a következő két parancsot.

make
openapp ./<program neve.app>

sudo apt-get install gobjc

GNUStep System Preferences

A GNUStep System Preferences alkalmazásának segítségével a telepített gnustep környezetünk főbb beállításait menedzselhetjük. Technikailag az Apple OS X System Preferences klónja.

System Preferences
Hét modulból áll: Themes, Date & Time, File System, Modifier Keys, Fonts, Defaults and Volumes. Ha Windows-on használjuk a gnustep-et még fontos szerepe lehet.

GNUStep ProjektCenter

A ProjektCenter a GNUStep integrált fejlesztő eszköze (IDE), ami rapid fejlesztése, és könnyű alkalmazás menedzsmentet biztosít. Elkészítését a NeXT eredeti Project Builder alkalmazása és az Xcode ihlette. Segítséget nyújt új projekt indításában, a meglévők, valamint ezek forrásaink menedzselésében egy intuitív grafikai felhasználói felületen. Képes direkten makefile-t készíteni, amit aztán build-elni lehet promtból vagy magából az alkalmazásból is. Még mindig fejlesztés alatt áll, így várhatóak belőle újabb és újabb verziók.

GNUStep Gorm

Mielőtt a NeXT Computer Inc. forradalmasította a szofverfejlesztést az OpenStep API-val (Cocoa elődje), a grafikus interfészek tervezésének egy teljesen új módját is megalkotta a 90-es években. Ez volt az Interface Builder, ami az első alkalmazás volt ami a fejszetőnek lehetőséget adott gyorsan, szép felhasználói felület megalkotására, anélkül hogy mindent le keljen kódolnia. Drag & drop technikával rakhatta össze a felületet, például ablakok, gombok, és beviteli mezők elhelyezésével, és testreszabásával, valamint funkciók és változók összerendelésével. Ezáltal több időt hagyva a program fő funkciót megvalósító kódok kidolgozására. A GNUStep projekt része ként, ennek szellemében hozták létre a Gorm alkalmazást, ami a feljebb felsorolt összes lehetőséget biztosítja, továbbá képes együttműködni az előbb ismertetett ProjectCenter-el, és csakúgy, mint az még ez a termék is fejlesztés alatt áll.

GNUStep, és alkalmazásainak telepítése

A GNUStep, és alkalmazásainak telepítéséhez látogassunk el a projekt oldalára, azon belül a Download szekcióba, jelen esetben azon belül is a Windows Installer részhez: --Ezen a linken--

GNUstep install
A fenti kép fogad minket, érdemes a stabil verziókat használni, és a kiválasztott verzióhoz tartozó alkalmazásokat, különben sok problémánk lesz a későbbiekben. Ezért a pirossal bekeretezett linkeket használjuk, és a telepítés menetében haladjunk fentről lefele. A linkek futtatható fájlra mutatnak és telepítésük egyszerű varázslóval történik.
Több problémába is belefutottam a telepítéseknél, de ezek főleg amiatt voltak, mert a GNUStep környezet verziójától függően csak bizonyos verziójú alkalmazásokat támogat. Egy komoly gondom akadt csak, ez pedig az volt, hogy a ProjectCenter bár elindult, de nem jelent meg sehol az alkalmazás, csupán a Log-ja. Némi kutakodás után kiderült, hogy például ennek orvosolásához kell a System Preferences. Azt megnyitva, a Themes menüben át kell alítani a WinUXThem-ről GNUstep témára. Ezután rendben fog működni a ProjectCenter is.
Az installálást Windows 8 Enterprise x64 operációs rendszeren végeztem.

A fent bemutatott GNUstep alkalmazások használatát a példaprogramok fejezetben, tutorial segítségével be is mutatom.