Gorm und ProjectCenter, die GNUstep RAD Werkzeuge

ArticleCategory:

Applications

AuthorImage:

Georges Tarbouriech

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech

en to de Katja Socher

AboutTheAuthor:

Georges ist ein langj�hriger Unixbenutzer. Er liebt GNUstep und die Werkzeuge, die dieses gro�artige Rahmenwerk zur Verf�gung stellt.

Abstract:

RAD steht f�r Rapid Application Development (schnelle Applikationsentwicklung). Am Ende der 80er, als NeXTstep herausgebracht wurde, kam es mit einem unglaublichen Wekzeug namens InterfaceBuilder. Zusammen benutzt mit einem anderen Werkzeug namens ProjectBuilder, erlaubte es, grafische Applikationen blitzartig zu bauen. GNUstep bietet eine freie Version von diesen Werkzeugen, genannt Gorm.app und ProjectCenter.app.

ArticleIllustration:

ProjectCenter and Gorm

ArticleBody:[The article body]

Zu Beginn...

Von den Anf�ngen der Computer an, war Softwareentwicklung eine gro�e Herausforderung. Computer waren recht gewaltig an Gr��e trotz ihrer nur sehr geringen Power. Sie waren recht teuer, nicht wirklich zahlreich und die Entwickler waren nicht in der Lage, sie so oft zu benutzen, wie sie es w�nschten, da sie sie mit anderen Leuten teilen mu�ten. Dann versuchten Forscher einen Weg zu finden, um mehr als eine Aufgabe auf einmal ausf�hren zu k�nnen, um die Effizienz zu erh�hen. Offensichtlich mu�ten sie Programmiesprachen von der Pieke auf designen und entwickeln, und die armseligen Ressourcen der verf�gbaren Maschinen mit in Betracht ziehen.
Auf diese Weise erschienen w�hrend der 60er verschiedene neue Programmiersprachen: LISP, FORTRAN, BASIC, Algol68, BCPL, etc. Als n�chstes kam die B Sprache, die bald die Sprache C wurde. Diese letzte ver�nderte die Programmierwelt.
Die objektorientierten Sprachen (SmallTalk, Objective C, C++, etc) erschienen sp�ter mit der "grafischen �ra".
In den 80ern hatten einige Maschinen grafische Betriebssysteme (Apple Macintosh, Commodore Amiga, Atari ST, etc.) und das X Window System war auf dem Weg. Zur selben Zeit arbeitete ein Unternehmen an einem GUI f�r IBM OS2, namens Presentation Manager. Vor Beendigung der Arbeit ver�ffentlichte diese Firma ihr "eigenes" GUI f�r ihr DOS, namens... Windos. Die ersten zwei Versionen waren kaum brauchbar, aber... die dritte startete alles. Das MvAI (Microsoft very Artificial Intelligence) war geboren !
Dadurch wurde jeder Benutzer ein Computerwissenschaftler. Seither haben wir "gro�artige" Anwendungen gesehen, geschrieben unter Benutzung von Excel oder Word und Visual Basic:-(
Macht nichts !
Zum Gl�ck, lange bevor wir die obige Situation erreicht haben, wurde NeXTstep geboren und mit ihm erschien Interface Buider. Dieses Werkzeug erlaubte dir, ein GUI f�r deine Applikation in sehr kurzer Zeit und mit sehr gro�er Leichtigkeit zu erzeugen. Von dort hat sich diese Art von Werkzeugen ausgebreitet. Unter anderen la�t uns Omnis, 4D, Delphi, Kylix, etc. erw�hnen. Ein paar wenige von ihnen sind Multiplattformen, w�hrend die gro�e Mehrheit Windos gewidmet ist. La�t uns auch erw�hnen, da� es freie Toolkits gibt, die solch eine Philosophie benutzen, Gtk (Gimp Tool Kit) zum Beispiel. Propriet�re Unixe bieten ebenfalls diese Art von Werkzeugen.
Das wichtigste Feature dieser Werkzeuge ist, da� du nicht den Code f�r die 200 Fenster deiner Applikation schreiben mu�t, sondern nur den einen, um die Daten zu verwalten.
Ob du diese Art von Werkzeugen magst oder nicht, ist nicht der Punkt. Die Entwicklungszeit ist kurz: dies ist eine Tatsache (daher der Name, "Rapid Application Development").
GNUstep versorgt uns mit freien RAD Werkzeugen. Sie werden Gorm und ProjectCenter genannt. Nat�rlich sind diese Werkzeuge sehr "jung", aber sie laufen. La�t sie uns anschauen.

GNUstep

Um beide, Gorm und ProjectCenter, benutzen zu k�nnen, mu�t du GNUstep installieren. Wie man dies macht, w�rde in diesem Artikel zu weit f�hren. Du findest alles, was du brauchst, auf der GNUstep Webseite. Dies beinhaltet den Quellcode, HOWTOs, Tutorien, etc.
Du kannst auch die folgenden Artikel anschauen: GNUstep, das Open Source OpenStep und GNUMail.app, der Portabilit�tsbeweis.
Die Tests f�r den gegenw�rtigen Artikel wurden unter FreeBSD 4.7 mit Window Maker 0.80.1 gemacht, unter Benutzung von gnustep-make-1.5.0, gnustep-base-1.5.0, gnustep-gui-0.8.2 und gnustep-back-0.8.2. Diese letzten sind die neuesten GNUstep instabilen Versionen. Du kannst auch die stabilen Versionen benutzen, wenn du m�chtest. Au�derdem benutzen wir noch den gcc 3.0.4 Compiler.

Gorm.app

Gorm steht f�r Graphic Object Relationship Modeler (oder vielleicht GNUstep Object Relationship Modeler, wie in der README Datei gesagt wird). Es ist ein Clon des oben erw�hnten NeXTstep Interface Builder (oder des heutigen MacOS X).
Gorm ist das Werk von Richard Frith-Macdonald, der diese Projekt anfing. Gregory Casamento k�mmert sich um die aktuelle Version (0.1.9) zusammen mit Pierre-Yves Rivaille. Neuere CVS Snapshots sind verf�gbar unter http://savannah.gnu.org/projects/gnustep.
Du kannst die neueste stabile Version von der Gnustep Webseite herunterladen.
Die Philosophie hinter Gorm (und Interface Builder) ist, den Benutzer mit Objekten zu versorgen, die in Paletten gefunden werden und durch Schieben dieser Objekte zu leeren Fenstern, die grafischen Komponenten deiner Applikation zu entwerfen.
Die Objekte k�nnen Kn�pfe (buttons), Felder (fields), checkboxes, Panel (panels), etc. sein. D.h., alles, was du zu einem Fenster hinzuf�gen kannst, um es benutzerfreundlich zu machen. Als n�chstes kannst du sie durch Benutzen von Inspectoren ver�ndern. Von den inspectors kannst du die Attribute ver�ndern, Verbindungen, Gr��e, Hilfe definieren und Klassen f�r die gew�hlten Objekte manipulieren. Nach dem Erzeugen einer Klasse kannst du Outlets und Aktionen zu den Objekten hinzuf�gen.
Als n�chstes instantiierst du die Klasse, wodurch ein neues Objekt (die instance) im Gorm Hauptfenster erzeugt wird und du kannst die Outlets und die Aktionen mit den dazugeh�rigen Komponenten verbinden. Du machtst diese genaue Steuerung durch Ziehen von der Instanz zu dem gew�hlten Objekt, um die Outlets zu verbinden und von den Objekten zu der Instanz, um die Aktionen zu verbinden. Als letztes erzeugst du ein Skelett der Klassenquelldateien und du bist fertig. Mehr dazu sp�ter.

ProjectCenter.app

ProjectCenter ist, wie der Name sagt, das "Herz" des Projekts. Es ist ein Clone von Project Builder, gefunden unter NeXTstep und Mac OS X.
ProjectCenter ist ein Werk von Philippe C.D.Robert und die aktuelle Version ist 0.3.0. Wie Gorm kann man es von der GNUstep Webseite herunterladen, wenn man zu der Developper apps Section geht. Nat�rlich kannst du den neuesten CVS Snapshot bekommen: wir benutzen ihn f�r diesen Artikel und es ist Version 0.3.1.
Von ProjectCenter aus kannst du ein Projekt erzeugen, sein Interface (durch Benutzen von Gorm), seinen Quellcode schreiben; du kannst dieses Projekt bauen und laufen lassen (debugging ist noch nicht verf�gbar). Kurz, du kannst alle erforderlichen Ressourcen f�r das Projekt verwalten: source code, Dokumentation, libraries, Unterprojekte, Schnittstellen, etc.
Wenn du ein neues Projekt erzeugst, kannst du einen Typ w�hlen. Du kannst w�hlen zwischen application, bundle, tool, library und Gorm application.
Unter anderem versorgt ProjectCenter dich mit einem Editor, mit dem du in der Lage bist, den Gorm Skelettcode zu vervollst�ndigen.
Wie arbeiten Gorm und ProjectCenter zusammen ? Sehr gut, danke !
Ernsthaft, wir benutzen zwei Beispiele, um es zu illustrieren.

Ein paar Anmerkungen

Dieser Artikel ist KEIN Tutorium. Die Idee ist, die Leichtigkeit der Benutzung dieser Werkzeuge zu zeigen, w�hrend wir auf der Tatsache bestehen, da� du in der Lage sein wirst, denselben Code f�r beide, GNUstep (d.h. viele Unixplattformen... und, wenn du "k�mpfen" magst, auch Windos) und MacOS X. Das einzige, was du tun mu�t, ist das Interface auf jeder Plattform zu entwickeln, da die nib (InterfaceBuilder oder Gorm) Dateien nicht portierbar sind (zumindest jetzt).
Der oben erw�hnte GNUMail.app Artikel zeigte die Portabilit�t aus der Sicht des Benutzers. Dieser hier konzentriert sich auf die Sicht des Entwicklers, noch mit der Portabilit�t im Ged�chtnis. D.h. in GNUMail.app benutzten wir das Werk von Ludovic und Freunden und hier erzeugen wir eine GUI Applikation f�r beide, GNUstep und MacOS X.
Viele Tutorien sind verf�gbar, entweder f�r MacOS X oder GNUstep. Du kannst die meisten GNUstep Tutorien von der GNUstep Webseite aus finden oder von http://www.gnustep.net, aber la�t uns ein paar von ihnen erw�hnen.
- An application using Gorm and ProjectCenter von Pierre-Yves Rivaille.
- The Nicola Pero's tutorial page
- Ein �lteres Tutorim, wie man einen HTMLEditor entwickelt: http://stepwise.com/Articles/Technical/HTMLEditor/
Um mehr dar�ber zu lernen, kannst du auch den Quellcode, die nib Dateien, etc. von den existierenden GNUstep Applikationen (Gorm, ProjectCenter, GNUMail, GWorkspace, etc.) durchschauen und nat�rlich die Gnustep-Beispiele anschauen.

Nenn es einfach "VerySimpleEditor" (Sehr einfachen Editor)

Unter den zahlreichen MacOS X Tutorien f�r InterfaceBuilder, die im Internet verf�gbar sind, benutzen wir das folgende als ein erstes Modell: http://www.macdevcenter.com/pub/a/mac/2001/05/18/cocoa.html. Der Autor, Mike Beam schrieb eine Menge weiterer hochentwickelter Tutorien verf�gbar unter http://www.macdevcenter.com/pub/ct/37.
Warum dieses ? Weil es dich mit einem arbeitenden Texteditor versorgt, ohne eine einzige Zeile Code zu schreiben. Dies zeigt die Macht dieser Entwicklungswerkzeuge, ob sie nun unter MacOS X oder unter GNUstep laufen.
Unter Benutzung von ProjectCenter.app und Gorm.app unter GNUstep erzeugen wir einen sehr einfachen Texteditor, der in der Lage ist, auszuschneiden, zu kopieren, zu pasten. Nat�rlich bist du nicht in der Lage, deine Arbeit zu speichern: erinnere dich, wir werden keine einzige Zeile Code schreiben. Unter Benutzung von ProjectBuilder und InterfaceBuilder unter MacOS X machen wir dasselbe. Nat�rlich gibt es eine Menge an diesem Editor zu verbessern und wir lassen dies als eine �bung f�r den Leser. Nochmal, dieser Artikel ist kein Tutorium !
Es geht los.

Unter GNUstep

�ffne ProjectCenter.app und erzeuge ein neues Projekt namens Editor. W�hle ein Gorm Application project unten im Fenster, bevor du seinen Namen speicherst. Dies liefert dir ein Interface Item in der linken Spalte von ProjectCenter.
Klicken auf Interfaces zeigt Editor.gorm an. Doppelklick auf Editor.gorm und Gorm.app �ffnet sich. Selektiere das default Fenster (MyWindow) und benutze das Werkzeug inspector, um den Namen in Editor in den Attributes zu �ndern.
Aus der Palette ziehe eine TextView zu dem Editorfenster. Die TextView ist das gr��te Objekt, das in der gew�hlten Palette durch Benutzen des am weitesten rechts liegenden Icons oben im Palettenfenster gefunden wird. Ver�ndere die Gr��e des Objekts, so da� es das gesamte Fenster f�llt und du bist fertig.
W�hle nochmal durch Benutzen des GormInternalViewEditor inspector (w�hrend die TextView selektiert ist), w�hle Size und �ndere die Werte, damit sie zu den Editorfenstergr��enwerten passen. Diese letzten werden auf dieselbe Weise erhalten, d.h. durch Selektieren des Fensters und �berpr�fen der Gr��e im GormNSWindow inspector. Wenn du die X und Y Werte z.B. nicht �nderst, wirst du nicht in der Lage sein, die volle Breite des Editors zu nutzen, ob du die Gr��e des Fensters ver�nderst oder nicht.
Speichere alles im Gorm Document menu und beende es, um zur�ck zum ProjectCenter zu gehen. Selektiere das Build icon und klicke in das neue build Icon in der zweiten horizontalen H�lfte des Fensters. Alles sollte gut gehen, wenn du die richtigen Pr�ferenzen f�r deinen Kompilierer, Debugger etc. gew�hlt hast. Z.B. mu�t du, wenn du FreeBSD benutzt, make in gmake um�ndern (einschlie�lich des Pfades) durch Klicken in das Settings Icon von ProjectCenter. �berpr�fe auch die Pfade des Preferences menu in ProjectCenter.
Wenn das Bauen (built) erfolgreich war (es sollte es !), mache dasselbe mit Run und du wirst die Editorapplikation sehen. Spiele einfach damit herum, schreibe, schneide aus, paste etc. Nat�rlich kannst du es sp�ter erneut starten durch Benutzen des openapp Befehls.
Wie lange hat es gedauert? Nun, ich w�rde sagen, ein paar Minuten.

Hier ist, wie es w�hrend der Entwicklungsphase aussehen sollte:

EdDev

und die sich ergebende Applikation:

Editor

Unter MacOS X

Es gibt nicht viel zu sagen, da du dasselbe tun mu�t wie oben. Hier ist, wie es w�hrend des GUIentwickelns aussehen sollte:

EdDev

Und hier der Editor "bei der Arbeit":

Editor

Und jetzt... eine wirklich laufende Applikation

Jetzt w�hlen wir ein anderes Beispiel von Mike Beam. Dieses Mal eine voll arbeitende Applikation, in der Lage, Daten zu verwalten: ein Adre�buch. Mikes Tutorium �ber das Adre�buch (wie jedes andere) wird zum Lesen empfohlen, um zu verstehen, wie das "Ding" arbeitet. Schau dir die Tutoriumsliste an, da Mike verschiedene Schritte des Entwicklungsprozesses f�r ein und dieselbe Applikation liefert, was es erlaubt, sie zu verbessern. Wieder erzeugen wir die Applikation und lassen sie auf beiden, GNUstep und MacOS X laufen.

Unter GNUstep

Wie du es f�r das Editorbeispiel gemacht hast, starte ProjectCenter.app. Selektiere eine Gormapplikation und nenne sie AddressBook.Von ProjectCenter aus starte Gorm durch Doppelklicken auf Interfaces -> AddressBook.gorm. Ziehe eine TableView aus der Palette zu dem Defaultfenster. In anderen Worten, folge Mikes Tutorium wie du es f�r MacOS X machen w�rdest. Du mu�t ein paar wenige Dinge anpassen, da sie in Gorm anders arbeiten als in InterfaceBuilder.
Zum Beispiel die Anzahl der Spalten in der TableView kann in Gorm nicht vom attributes inspector definiert werden. Um die Dinge einfach zu halten, kopiere einfach eine Spalte und paste sie nebendran, um die erforderliche Anzahl (4 in unserem Fall) zu erhalten. Du solltest soetwas wie das hier bekommen:

ABdev


Wenn du damit fertig bist, speichere alles und gehe zur�ck zum ProjectCenter, um den Code zu tippen oder zu ver�ndern. F�r den Fall, da� du einige Fehler machst, liefert Mike dir die vollst�ndige Anwendungsquelle. Wenn du sie herunterl�dst, reicht es, den Code in deine eigenen Controller.m und Controller.h Dateien, die von Gorm generiert werden, zu kopieren und zu pasten. Schlie�e (import in der Objective C Terminologie) Cocoa.h nicht mit ein, da es f�r MacOS X reserviert ist. �brigens solltest du das Skelett, "geschrieben" von Gorm, behalten und ein paar Dinge �ndern. Zum Beispiel ersetze das void durch IBAction in Controller.h und Controller.m. F�ge IBOutlet vor den outlets id in Controller.h hinzu.
Irgendwie, wenn dir danach ist, kannst du den ganzen gelieferten Code behalten: ersetze nur die cocoa Einschlie�ung durch #import <AppKit/AppKit.h>. Jetzt kannst du die Applikation bauen und laufen lassen.
Da bist du: du kannst damit anfangen, mit deinem neuen Adre�buch zu spielen.
Hier ist, wie es aussieht:

AddressBook

Unter MacOS X

Mike Beam hat die ganze Arbeit gemacht, was k�nnte ich hinzuf�gen ?

Hier ist ein Screenshot des Entwicklungsprozesses unter MacOS X:

ABdev

Hier ist die resultierende Applikation:

AddressBook


So was? Nun, es dauerte ein paar Minuten, um das GUI zu entwerfen und der gesamte Code stellt ein bi�chen mehr als 2000 Bytes dar. Nicht schlecht, oder ?
Nochmal, es gibt eine Menge Verbesserungen, die gemacht werden k�nnen, aber das ganze Ding l�uft! Jetzt kannst du mit dem Code herumspielen, um ein besseres Adre�buch zu bekommen...

GNUstep und MacOS X

Nat�rlich k�nnen die GNUstep Entwicklungswerkzeuge nicht so voran sein, wie die von Apple. Apple und NeXT stellen eine 15 Jahre alte Erfahrung mit hunderten von Entwicklern dar. GNUstep ist die Arbeit (ohne Bezahlung) von ein paar wenigen Individuen, die noch etwas anderes tun m�ssen, um sich den Lebensunterhalt zu verdienen. Demgem�� sei nicht �berrascht, im InterfaceBuilder z.B. sehr viel mehr verf�gbare Klassen zu finden als in Gorm. Erinnere dich, Gorm ist bei Version 0.1.9 (oder 0.2.0).
Au�erdem machten wir die Tests auf dem "schwierigen" Weg. D.h. wir "portierten" von OS X nach GNUstep. Andersherum w�re es leichter wegen der oben genannten Unterschiede zwischen den Werkzeugen.
Zum Beipiel, Portieren von Applikationen, die unter MacOS X 10.2 entwickelt wurden, w�re sehr viel schwieriger, da die neuen Apple Entwicklungswerkzeuge sich stark verbessert haben. Wie schon gesagt, es gibt viele neue verf�gbare Klassen oder ausgearbeitertere.
Jedoch, die Werkzeuge basieren auf derselben Philosohphie, ob sie unter GNUstep oder MacOS X laufen... und GNUstep verbessert sich jeden Tag. Eine Sache sieht f�r mich sehr nett aus: Die GNUstep Leute arbeiten wirklich zusammen. Sie helfen einander, was einzelne Projekte angeht und sie tragen dazu bei, den Kern von GNUstep zu verbessern. Dies ist die Art freier Software zu arbeiten, wie ich sie mag. Gl�ckwunsch zu einem solchen Verhalten Mr.Fedor und Freunde.

Stell dir vor...

Das Ziel dieses Artikels war es, die M�chtigkeit der GNUstep "RAD" Werkzeuge, Gorm.app und ProjectCenter.app zu zeigen. Trotz ihrer "Jugend" k�nnen sie helfen, nette Applikationen auf sehr einfache Weise zu entwickeln.
Au�erdem bieten diese Werkzeuge einen sehr angenehmen Weg, zu arbeiten, w�hrend sie sehr effizient sind. Objective C ist eine sehr kompakte Sprache und nach meiner Meinung sehr viel einfacher zu lernen als C++ f�r jemanden mit C Wissen (ich wei�, ich habe das schon gesagt !). Dies erlaubt es, nett aussehende Applikationen zu entwickeln (nun, es ist eine Frage des Geschmacks, aber ich liebe diesen Look and Feel), w�hrend sie eher klein in der Gr��e gehalten werden.
Ich mu� zugeben, da� ich mich nie von dem Schock erholt habe, den ich bekam, als ich das erste Mal auf eine NeXT Maschine traf. Die Tatsache, da� Apple eine moderne Version von NeXTstep herausgegeben hat, erfreut mich. Dies ist auch der Grund, warum ich Projekte wie GNUstep oder Window Maker so gern habe. Jedoch, auch wenn ich freie Software liebe, bin ich doch kein "Fundamentalist" und von daher bin ich nicht gegen propriet�re Software (nun, vielleicht ein bi�chen gegen einen bestimmten Editor... aber nur ein bi�chen !).
GNUstep kann von Apple profitieren... aber Apple auch von GNUstep. GNUstep ist kein Applekonkurrent, es ist freie Software. Soweit ich wei�, wird freie Software weitlich in OS X benutzt. Das hei�t, sogar noch mehr freie Software auf den Apple zu bringen, kann keine schlechte Sache sein. Was Ludovic und Freunde mit GNUMail.app machten, ist ein sehr gutes Beispiel f�r das, was geschehen k�nnte.
"Ich hatte einen Traum"... Apple lieferte den gr��ten Teil seines Entwicklungswerkzeugsquellcodes zu GNUstep. GNUstep und Apple Entwickler arbeiteten zusammen, um eine gro�artige Applikation zu den Unixbenutzern zu bringen. Und langsam realisierten die Leute, da� sie ohne Windos leben konnten...
Leider war es nur ein Traum ;-)
Nun gut, wenn du GNUstep und seine Applikationen nicht kennst, f�hl dich frei, sie auszuprobieren. Erinnere dich, GNUstep ist ein Rahmenwerk und Werkzeuge wie Gorm und ProjectCenter liefern dir alles zum Entwicklen, zum Erfinden. In anderen Worten, mit ein bi�chen Vorstellungskraft kannst du "Produkte" entwickeln, ganz anders von denen, die wir heute sehen: Windosapplikations Clone !
Wir leben in einer gro�artigen Zeit !

Dank...

An die GNUstep Leute: 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 und alle, die ich vergessen habe, f�r die gro�artige Arbeit f�r das Rahmenwerk oder f�r seine Applikationen.
An die Window Maker Leute: A.Kojima, D.Pascu und Freunde, weil sie uns ein freies NeXTstep Interface f�r X gebracht haben.
An J.M.Hullot und B.Serlet f�r das Erfinden von InterfaceBuilder.
An "Steve Jobs INC.", f�r das Bringen von NeXT, NeXTstep und MacOS X.
An alle Leute, die hier nicht erw�hnt sind, die dazu beigetragen haben, unser Berufsleben weniger traurig zu machen.