|
door Georges Tarbouriech <georges.t(at)linuxfocus.org> Over de auteur: Georges is reeds lang Unix gebruiker. Hij houdt van GNUstep en de tools die dit fantastische framework levert. Vertaald naar het Nederlands door: Guus Snijders <ghs(at)linuxfocus.org> |
Gorm en ProjectCenter, de RAD tools van GNUstepKort:
RAD staat voor Rapid Application Development (snel applicaties ontwikkelen). Aan het eind van de jaren '80 toen NeXTstep werd gelanceerd, kwam het met een ongelofelijke tool, genaamd InterfaceBuilder. In combinatie met een andere tool, genaamd ProjectBuilder, was het mogelijk om applicaties in een oogwenk te bouwen. GNUstep biedt een vrije versie van deze tools, genaamd Gorm.app en ProjectCenter.app. |
Sinds de prehistory van computers is het ontwikkelen van software een
enorme uitdaging geweest. Computers waren omvangrijk, maar met weinig
vermogen. Ze waren nogal duur, er waren er niet echt veel en
ontwikkelaars waren niet in staat om ze vaak te gebruiken, daar ze ze
moesten delen met anderen. Toen probeerden onderzoekers om een manier
te vinden om computers meer dan een taak tegelijk uit te voeren, om zo
de efficiëntie te verhogen. Uiteraard moesten ze programmeer talen
ontwerpen en bouwen, en daarin rekening hoduen met de beperkte resources
van de beschikbare computers.
Zodoende verschenen in de jaren 60 verschillende nieuwe talen: LISP,
FORTRAN, BASIC, Algol68, BCPL, enz. Daarna kwam de taal B, ontwikkeld
vanuit de genoemde BCPL, en werd al snel de C taal. Dit laatste
veranderde de wereld van programmeren.
De Object georiënteerde talen (SmallTalk, Objective C, C++, enz)
verschenen later, tijdens het "grafische era".
In de jaren 80 boden sommige machines graphische besturingssystemen
(Apple Macintosh, Commodore, Amiga, Atari ST, enz) en het X Window System
werd ontwikkeld. Rond dezelfde tijd was een bedrijf bezig met een GUI
voor IBM OS2, genaamd Presentation Manager. Voordat dat klaar was,
lanceerde dit bedrijf een "eigen" GUI voor zijn DOS, genaamd...
Windos. De eerste twee versies waren nauwelijks bruibkaar, maar... de
derde begon alles. De MvAI (Microsoft very Artificial Intelligence
(Microsoft erg Kunstmatige Intelligentie)) was geboren!
Dat is, iedere gebruiker werd een computer wetenschapper, sindsdien
hebben we "grote" applicaties gezien, geschreven met Excel of Word en
Visual Basic :-(
Geen punt!
Lang voordat deze situatie ons bereikte, was NeXTstep gelukkig geboren,
en daarmee kwam Interface Builder. Deze tool staat je toe om een GUI te
bouwen voor je aplicatie in een erg korte tijd en met erg veel gemak.
Vanaf daar heeft dit soort tools zich verspreid. Tools zoals Omnis, 4D,
Delphi, Kylix, enz, om er een paar te noemen. Sommige hiervan zijn
multiplatform terwijl de meerderheid toegewijd is aan Windos. Merk op
dat er ook vrije toolkits zijn met een dergelijke filosofie, Gtk (Gimp
Tool Kit) bijvoorbeeld. Commerciële Unixen bieden ook dit soort
tools.
De belangrijkste feature van deze tools is dat je de code voor de 200
vensters van je applicatie niet hoeft te schrijven, maar alleen degene
die de data beheerd.
Of dit soort tools je aanstaan of niet is niet het punt. De ontwikkel
tijd is kort: het is een feit (vandaar de naam, "Rapid Application
Development").
GNUstep voorziet ons van vrije RAD
tools. Ze heten Gorm en ProjectCenter. Natuurlijk, deze tools zijn erg
"jong", maar ze werken. Laten we eens naar ze kijken.
Om Gorm en ProjectCenter te kunnen gebruiken, dien je ook GNUstep te
installeren. Dit valt echter buiten dit artikel. Alles wat je nodig
hebt is te vinden op de GNUstep website. Hier zijn broncode, HOWTOs, tutorials, enz te
vinden.
Je kunt ook deze artikelen lezen: GNUstep, de open source OpenStep
en GNUMail.app, het bewijs van
portabiliteit.
De tests voor dit artikel zijn gedaan onder FreeBSD 4.7 met Window
Maker 0.80.1, met gnustep-make-1.5.0, gnustep-base-1.5.0,
gnustep-gui-0.8.2 en gnustep-back-0.8.2. Deze laatste zijn de nieuwste
GNUstep unstable versies. Als je wilt, kun je ook de stable versies
gebruiken. Ten slotte hebben we gcc 3.0.4 als compiler gebruikt.
Gorm staat voor Graphic Object Relationship Modeler (of wellicht GNUstep
Object Relation Modeler, zoals staat in het README bestand). Het is
kloon van de eerder genoemde NeXTstep Interface Builder (of vandaag de
dag MacOS X).
Gorm is het werk van Richard Frith-Macdonald die het project startte.
Gregory Casamento is de huidige ontwikkelaar en doet het meeste van het
werk met Pierre-Yves Rivaille. De huidige versie is 0.1.9.
Nieuwere CVS snapshots zijn beschikbaar vanaf
http://savannah.gnu.org/projects/gnustep.
De nieuwste stabiele versie is te downloaden vanaf de GNUstep website.
De filosofie achter Gorm (en Interface Builder) is om de gebruiker te
voorzien van objecten, gevonden in pallets, en deze objecten naar lege
vensters te slepen om de grafische componenten van je applicatie te
ontwerpen.
Deze objecten kunnen knoppen, velden, aanvink-vakjes, panelen, enz.
Je kunt alles aan venster toevoegen om deze gebruikersvriendelijker te
maken. Vervolgens kun je deze aanpassen met inspectors. Vanuit de
inspectors kun je attributen veranderen, connecties definiëren,
grootte, help en classes voor de geselecteerde objecten aanpassen. Na
het aanmaken van een class kun je outlets en acties toevoegen aan de
objecten.
Vervolgens instantieer je de class, wat een nieuw object cre&eulm;ert
(de instantie) in het main venster van Gorm, en verbindt je de outlets
en de acties aan de corresponderende componenten. Dit kun je doen door
met de muis van de instantie naar het geselecteerde object te slepen om
outlets te verbinden en van het object naar de instantie om acties te
verbinden. Ten slotte creëer je het geraamte van de class bron
bestanden, en je bent klaar. Later meer hierover.
ProjectCenter is het "hart" van een project. Het is een kloon van
Project Builder uit NeXTstep en Mac OS X.
ProjectCenter is het werk van Philippe C.D.Robert en de huidige versie
is 0.3.0. Net als Gorm, kun je deze downloaden van de GNUstep website,
bij de Developer apps sectie. Uiteraard kun je ook het laatste CVS
snapshot gebruiken: dat hebben we voor dit artikel ook gedaan, dit was
versie 0.3.1.
Vanuit ProjectCenter kun je een project creëeren, de interface
(met Gorm), de broncode schrijven; je kunt dit project compileren en
uitvoeren (debug is nog niet beschikbaar). In het kort kun je alle
resources die voor het project nodig zijn beheren: broncode,
documentatie, bibliotheken, subprojecten, interfaces, enz.
Als je een nieuw project creëert, kun je het type aangeven. Je
kunt kiezen uit applicatie, bundel, tool, bibliotheek en Gorm applicatie.
Naast andere dingen levert ProjectCenter een editor waarin je de Gorm
skelet code kunt completeren.
Hoe werken Gorm en ProjectCenter samen? Erg goed, dank je!
Serieuzer, we zullen twee voorbeelden gebruiken om dit te illustreren.
Dit artikel is GEEN tutorial. Het idee is om te laten zien hoe
gemakkelijk het gebruik van deze tools is, en tegelijkertijd om te
demonstreren hoe je dezelfde code kunt gebruiken voor GNUstep (dus
vele Unix platformen... en, als je van "worstelen" houdt, ook voor
Windos) en MacOS X. Het enige dat je hoeft te doen is de interface
op ieder platform ontwerpen daar de nib (InterfaceBuilder of Gorm)
bestanden niet overdraagbaar zijn (tenminste, nog niet).
Het eerdergenoemde artikel over GNUMail.app liet de overdraagbaarheid
vanuit het oogpunt van de gebruiker zien. Dit artikel richt zich vooral
op het oogpunt van de ontwikkelaar, nog steeds met overdraagbaarheid in
gedachten. In GNUMail.app gebruikten we het werk van Ludovic en vrienden
en hier creëren we een GUI applicatie voor GNUstep en MacOS X.
Er zijn vele tutorials beschikbaar, zowel voor MacOS X als GNUstep. De
meeste over GNUstep zijn te vinden op de GNUstep website of op
http://www.gnustep.net, maar hier
zullen we er een paar noemen.
- Een applicatie die
gebruik maakt van Gorm en ProjectCenter door Pierre-Yves Rivaille.
- Nicola Pero's tutorial
pagina
- Een oudere tutorial over het creëren van een HTMLEditor http://stepwise.com/Articles/Technical/HTMLEditor/
Om meer te leren, kun je ook de broncode lezen, de nib bestanden,
enzovoort, van de bestaande GNUstep applicaties (Gorm, ProjectCenter,
GNUMail, GWorkspace, enz) en natuurlijk, de gnustep-examples
(voorbeelden).
Naast de vele MacOS X tutorials voor InterfaceBuilder die beschikbaar
zijn op het net, zullen we de volgende gebruiken als een eerste model:
http://www.macdevcenter.com/pub/a/mac/2001/05/18/cocoa.html.
De auteur, Mike Beam heeft veel gedegen tutorials geschreven, deze zijn
te vinden op http://www.macdevcenter.com/pub/ct/37.
Waarom deze? Omdat deze een werkende text editor levert zonder ook maar
een regel code te schrijven. Dit demonstreerd de kracht van deze
ontwikkeltools, of je nu werkt onder MacOS X of onder GNUstep.
Met ProjectCenter en Gorm.app onder GNUstep creëeren we een erg
eenvoudige tekst editor, in staat om te knippen, kopiëren en
plakken. Helaas zul je niet in staat zijn je werk op te slaan: vergeet
niet dat we geen enkele regel code zullen schrijven. Met ProjectBuilder
en InterfaceBuilder onder MacOS X zullen we hetzelfde doen. Uiteraard
is er een hoop te verbeteren aan deze editor, dit zullen we aan de lezer
overlaten als oefening. Zoals gezegd, dit artikel is geen tutorial!
Daar gaan we.
Open ProjecCenter.app en creëer een nieuw project, met de naam
Editor. Kies een Gorm Application project onderin het venster, voordat
je de naam opslaat. Dit levert je een Interfaces item in de linker
kolom van ProjectCenter.
Een klik op interfaces geeft Editor.gorm.
Dubbelklik op Editor.gorm en Gorm.app wordt geopend. Selecteer
het default venster (MyWindow) en gebruik de tool inspector om de naam
te veranderen in Editor in Attributes.
Sleep vanuit het palet een TextView naar het Editor venster. TexView is
het grootste object in de geselecteerde palet, te vinden via het meest
rechtse icoon bovenin het Palettes venster. Pas de grootte aan om het
venster te vullen en je bent klaar.
In de GormInternalViewEditor inspector (terwijl de TextView is
geselecteerd), kies Size (grootte), en verander de waarden om
ze te laten overeenkomen met de Editor venster afmetingen. Deze laatste
kunnen op dezelfde manier worden achterhaald, selecteer hiervoor het
venster en controleer de grootte in GormNSWindow inspector. Als je de X
en Y waarden niet veranderd, bijvoorbeeld, zul je niet in staat zijn de
volledige breedte van de editor te gebruiken, of je het venster nu
resized of niet.
Sla alles op in het Gorm Document menu en sluit deze af om terug te gaan
naar ProjectCenter. Selecteer het Build pictogram en klik op het nieuwe
build icoon in de tweede horizontale helft van het venster. Alles zou
goed moeten gaan als je de juiste voorkeuren hebt opgegeven voor je
compiler, debugger, enz. Als je bijvoorbeeld FreeBSD gebruikt, moet je
make in gmake (inclusief pad) veranderen. Dit kan door te klikken op het
Settings pictogram van ProjectCenter. Controleer ook de paden in het
Preferences menu in ProjectCenter.
Als de compilatie werkte (hij zou het moeten!), doe je hetzelfde met
Run en je zult de Editor applicatie zien verschijnen. Speel er
even mee, schrijven, knippen, plakken, enz. Uiteraard kun je het later
herstarten met het openapp commando.
Hoe lang kostte het? Wel, ik zou zeggen een paar minuten.
Er is niet veel te zeggen, daar je hetzelfde doet als hierboven. Hier
hoe het er uit ziet tijdens het ontwerpen van de GUI:
Nu kiezen we een ander voorbeeld van Mike Beam. Deze keer is het een
volledig werkende applicatie, in staat om data te beheren: een adresboek.
Mike's tutorial over het adresboek (zoals iedere andere) is aan te raden
leesstof, om te begrijpen hoe het "ding" werkt. Bekijk ook de tutorial
lijst daar Mike verschillende stappen van het ontwikelingsproces levert
voor een en dezelfde applicatie om deze te verbeteren.
En weer bouwen en draaien we de applicatie onder GNUstep en MacOS X.
Net als bij het Editor voorbeeld, start je ProjectCenter.app. Selecteer
een Gorm applicatie en noem deze AddressBook. Vanuit Projectcenter start
je Gorm door te dubbelklikken in Interfaces -> AdressBook.gorm. Sleep
een TableView van het palet naar het default venster. In andere woorden,
volg Mike's tutorial als je wilt onder MacOS X. Je zult een paar dingen
moeten aanpassen omdat ze verschillend werken in Gorm en
InterfaceBuilder.
Bijvoorbeeld, het aantal kolommen in TableView kan niet worden opgegeven
vanuit de attributes inspector in Gorm. Om de dingen eenvoudig te houden,
kopieer een kolom en en plak deze ernaast om het gewilde aantal kolommen
te verkrijgen (4 in ons geval. Dit zou iets als het volgende moeten
opleveren:
Mike Beam heeft al het werk al gedaan: wat zou ik nog toe kunnen
voegen?
Natuurlijk zijn de GNUstep ontwikkel tools nog niet zo ver als Apple's.
Apple en NeXT staan voor 15 jaar ervaring met honderden ontwikkelaars.
GNUstep is het werk (vrij) van een paar individuelen met iets anders te
doen voor brood op de plank. Daardoor is het niet verassend om
bijvoorbeeld veel meer beschikbare classes te vinden in InterfaceBuilder
en in Gorm. Onthoud dat Gorm op versie 0.1.9 zit (of 0.2.0).
Verder hebben we deze testen op de "harde" manier gedaan. We hebben OS
X "geport" naar GNUstep. Andersom was eenvoudiger geweest vanwege de
bovengenoemde verschillen tussen de tools.
Zo zou het porten van applicaties die ontwikkeld waren onder MacOS X 10.2
veel moeilijker zijn geweest daar de nieuwe Apple ontwikkel tools sterk
verbeterd zijn. Zoals al gezegd, zijn er veel nieuwe classes beschikbaar
of uitgebreidere.
De tools gaan echter uit van dezelfde filosofie, of ze nu werken onder
GNUstep of MacOS X... En GNUstep verbeterd iedere dag. Een ding staat me
echt aan: GNUstep mensen werken echt samen. Ze helpen elkaar bij
individuele projecten en helpen mee met het verbeteren van de GNUstep
kern. Dit is de Free Software manier van werken die ik graag mag.
Gefeliciteerd voor dergelijk gedrag Mr Fedor en vrienden.
Het doel van dit artikel was om de kracht van de GNUstep "RAD" tools te
demonstreren, Gorm.app en ProjectCenter.app. Ondank hun "jeugd" kunnen
ze je helpen aardige applicaties te ontwikkelen op een erg eenvoudige
manier.
Verder bieden deze tools een erg prettige manier van werken, en
tegelijkertijd zijn ze erg efficiënt. Objective C is een erg
compacte taal en is, naar mijn mening, makkelijker te leren dan C++ voor
iemand met kennis van C (Ik weet het, dit had ik al gezegd!). Dit staat
je toe om aardig uitziende applicaties te ontwerpen (ok, het is een
kwestie van smaak, maar ik hou van deze look&feel) terwijl ze
tegelijk niet al te groot worden.
Ik moet toegeven dat ik nooit ben hersteld van de schok sinds ik voor
het eerst kennis maakte met de NeXT machine. Het feit dat Apple een
moderne versie van NeXTstep levert charmeerd me. Dit is ook waarom ik
erg dol ben op projecten als GNUstep of Window Maker. Echter, ik hou
van free software en been geen "fundamentalist" en aansluitend ben ik
dan ook niet tegen commerciële software (well, misschien een beetje
tegen een specifieke uitgever... maar, alleen een beetje!).
GNUstep kan profiteren van Apple... maar Apple kan ook profiteren van
GNUstep. GNUstep is geen Apple concurrent, het is vrije software. Voor
zover ik weet, wordt in OS X veel gebruik gemaakt van vrije software.
Het kan dus nooit slecht zijn om nog meer vrije software naar Apple te
brengen. Wat Ludovic en vrienden hebben gedaan met GNUmail.app is een
erg goed voorbeeld van wat er zou kunnen gebeuren.
"Ik had een droom"... Apple leverde de broncode van de meeste van zijn
ontwikkel tools aan GNUstep. GNUstep en Apple ontwikkelaars werkten
samen om fantastische applicaties te leveren aan Unix gebruikers.
En langzaam maar zeker realiseerden de mensen zich dat ze konden leven
zonder Windos...
Helaas, het maar een droom ;-)
Hoe dan ook, als je GNUstep en diens applicaties niet kent, voel je vrij
om ze eens te proberen. Onthoud dat GNUstep een framework is en tools als
Gorm en ProjectCenter bieden je alles wat je nodig hebt, om uit te
vinden. In andere woorden, met een beetje verbeelding kun je "producten"
ontwikkelen die sterk afwijken van wat we vandaag de dag zien:
klonen van Windos applicaties!
We leven in een fantastische tijd!
Aan de GNUstep mensen: A.Fedor, N.Pero, G.Casamento, P.Y.Rivaille,
N.Roard, L.Marcotte, R.Frith-Macdonald, P. C.D.Robert, E.Sersale,
A.Froloff, F.Kiefer, M.Viviani, M.Guesdon en degenen die ik nog vergeet
voor hun geweldige werk aan het framework of voor de applicaties.
Aan de Window Maker mensen: A.Kojima, D.Pascu en vrienden voor het maken
van een vrije NeXTstep interface voor X.
Aan J.M.Hullot en B.Serlet voor het uitvinden van InterfaceBuilder.
Aan "Steve Jobs INC." omdat ze ons NeXT, NeXTstep en MacOS X leverden.
Aan alle mensen hier niet genoemd maar wel hebben meegewerkt aan het
minder droevig maken van ons professionele leven.
Site onderhouden door het LinuxFocus editors team
© Georges Tarbouriech "some rights reserved" see linuxfocus.org/license/ http://www.LinuxFocus.org |
Vertaling info:
|
2005-01-14, generated by lfparser_pdf version 2.51