minpic01.jpg

Stefan Pantke

Duales Werkzeug

MacOS-, Windows- und Java-Programmierung: CodeWarrior Professional

CodeWarrior ist das zur Zeit wohl umfassendste Entwicklungspaket für Macintosh-Programmierer. Mit der neuen Pro-Version will Hersteller Metrowerks den rauhen Weg in die PC-Gefilde ebnen, indem er sämtliche Entwicklungswerkzeuge für Windows gleich mitliefert.

Unterthema: Code Warrior Pro

Die neue Version firmiert unter dem Namen CodeWarrior Professional 1 und löst alle bisherigen Bezeichnungen ab. Die Unterscheidung in je eine Bronze-, Silber- (wurde nie ausgeliefert) und Goldversion machte schließlich ohnehin kaum noch Sinn, da fast alle Entwickler zu letzterer griffen: schon alleine deshalb, weil nur sie Native-Code für Power Macs zu erzeugen vermochte. Die neue IDE (Entwicklungsumgebung, Integrated Development Environment) ist unter MacOS und Windows 95/NT nahezu identisch.

Auch für die Systeme OS9, BeOS, embedded PowerPC, Palm OS, den Pilot-PDA und die PlayStation-Spiele-Console hat Metrowerks Entwicklungspakete im Angebot. Die IDE ist immer die gleiche.

Mac, PC & Co.

Macintosh-Programmierer finden im Paket neben dem bekannten Toolbox-Support die Klassenbibliothek PowerPlant, die in der Toolbox fehlende Funktionalität wie etwa TCP/IP-Protokollklassen nachrüstet, und natürlich das altbekannte MPW von Apple (Macintosh Programmer´s Workshop). 80 MByte Plattenplatz sollte man denn auch mindestens für das CodeWarrior-Paket bereitstellen.

Wer Mac-Programme schreiben möchte, hat die Wahl zwischen den Sprachen C, C++ und Pascal. Von Objective C, der wichtigsten Sprache für OpenStep und damit Rhapsody, findet sich nur eine Vorversion im Paket (Ordner `Prereleases´). Apple baut nämlich derzeit noch die Unterstützung neuer Objekte wie etwa QuickTime ein.

minpic02.jpg

Der Constructor dient dem Entwurf einer PowerPlant-basierten Oberfläche unter MacOS.

An der Macintosh-Klassenbibliothek PowerPlant hat sich nur wenig getan. Zwar wurden einige Bugs beseitigt, aber im wesentlichen kommt mit CW Pro der gleiche Umfang an Klassen wie bisher. Zu PowerPlant gibt es auch noch kein neueres Handbuch als jenes, das bereits mit CodeWarrior 11 ausgeliefert wurde.

PC-Programmierer müssen sich zwischen C und C++ entscheiden. Neben der nativen Win32-API gehört pflichtgemäß auch die Klassenbibliothek MFC (Microsoft Foundation Classes) zum CodeWarrior-Lieferumfang - allerdings nur in der alten Version 4.2. Da Konkurrent Microsoft mit seinem Visual C++ bereits die MFC 5.0 ausliefert, macht es Metrowerks potentiellen Umsteigern unnötig schwer.

Kaffeeküche

Für plattformunabhängige Entwicklungen bietet sich Java an. Die zugehörige CW-Version ist nur zum Java Development Kit (JDK) 1.0.2 kompatibel, nicht zur aktuellen Version 1.1. Das ist (noch) relativ leicht zu verschmerzen, da auch die passenden Browser noch recht wenig verbreitet sind. Metrowerks arbeitet aber bereits an einer JDK-1.1.1-kompatiblen Variante; die Betaversion davon liegt ebenfalls bei.

minpic03.jpg

Umfassende Einsichten verschaffen Class-Browser, Catalog und die Klassenübersicht (links, rechts, unten).

Neben den von Sun entwickelten Java-Klassen liefert Metrowerks außerdem noch die Internet Foundation Classes (IFC) von Netscape sowie die Java Generic Library (JGL) von ObjectSpace mit. Beide Bibliotheken verfolgen verschiedene Zielrichtungen.

Netscapes IFC besteht aus mehr als 120 GUI- und etwa 30 weiteren Klassen aus dem Bereich Tools. Letztere enthalten beispielsweise aus FileInputStream abgeleitete Klassen, die Objekte serialisieren. Allerdings meidet Netscape mal wieder so manche Konvention: die Packages heißen netscape.application und netscape.util statt wie erwartet com.netscape.application oder com.netscape.util.

ObjectSpace dagegen hält sich mit dem Package COM.objectspace.jgl an die Regel und implementiert in über 150 Klassen Algorithmen und Datenstrukturen jeglicher Art. Die umfangreiche Bibliothek deckt fast jeden Bereich ab und erweist sich bei der praktischen Arbeit als sehr hilfreich und zeitsparend.

Pro & Contra

CodeWarrior Pro ist eine schnelle und stabile Entwicklungsumgebung. Überflüssig zu erwähnen, daß Standardtechniken wie Precompiled Headers unterstützt werden, um die Übersetzungszeit klein zu halten.

Bei der Übernahme alter Projekte ist jedoch einige Vorsicht geboten. CW konvertiert zwar Projekte automatisch, besonders bei älteren Java-Projekten gibt es aber hin und wieder unerklärliche Phänomene. So brach bei einer in Java realisierten Client/Server-Applikation der Compiler nach der automatischen Konvertierung stets mit der Fehlermeldung `Null Pointer Exception´ ab. Wohlgemerkt, der Compiler meldete den Fehler, nicht das fertig kompilierte und gebundene Programm. Erst nachdem das Projekt vollständig neu angelegt und der Sourcecode übernommen wurde, trat der Fehler nicht mehr auf.

Ist ein Java-Projekt sowohl vollständig kompiliert als auch gelinkt, und man entfernt danach manuell alle Klassen aus dem class-Ordner, so vergißt das Entwicklungssystem, die Klassen neu zu generieren. Auch die Funktionen `Bring Up To Date´ oder `Make´ bewirken diesbezüglich nichts. Dagegen generiert CodeWarrior Pro brav alle erforderlichen Klassen neu, sobald man eine Datei nur per `touch´-Button manipuliert.

Außerdem erzeugt der Java-Compiler neuerdings in dem Order, der die Zielklassen enthält, Klassenhierarchien für com, sun und java. Dies führt zu knapp 400 Klassen, die zusätzlich zur eigentlichen Applikation oder zum Applet im Zielverzeichnis liegen. Wenngleich dies das Zielprogramm auch nicht zerstört, so bläht es den Ordner doch unnötig auf. Warum die Library-Klassen immer kopiert werden, bleibt unklar, dies gilt insbesondere für die java.*-Hierarchie.

Doch diese Probleme sind nur kosmetischer Natur und behindern die Arbeit allenfalls leicht; echte Probleme scheint es nicht zu geben. Dies gilt sowohl für System 7.6.x und MacOS 8 als auch für Windows (getestet unter NT 4.0).

Mehr Komfort

Besonders gut gelungen ist Metrowerks die Portierung der IDE nach Windows. Auf dem PC sieht sie praktisch genauso aus wie auf dem Mac, und sie läßt sich fast gleich bedienen. Doch die neue IDE 2.0 wartet auch mit vielen Detailverbesserungen auf, so daß die Arbeit sehr viel flüssiger von der Hand geht.

minpic05.jpg

CodeWarrior IDE 2.0 auf dem PC: die Verwandtschaft ist unverkennbar.

Endlich kann der Entwickler mehrere Projekte gleichzeitig öffnen und per Drag & Drop Teile aus einem Projekt in ein anderes kopieren. Früher mußte man stets das aktuelle Projekt schließen, um ein neues zu öffnen.

Auch sämtliche Werkzeugleisten lassen sich mittels Drag & Drop individuell zusammenstellen, wobei das System etwa 90 verschiedene Kommandos anbietet. Auf dem Mac werden diese Tools noch durch rund 25 AppleScripts erweitert, die so nützliche Dinge tun, wie etwa leere Template-Dateien generieren.

minpic04.jpg

Die Code-Warrior-Werkzeugleiste läßt sich individuell verändern.

Bewegt man die Maus über ein Tool, so erscheint unter Windows wie üblich nach etwa einer Sekunde eine Kurzbeschreibung. Auf dem Mac bekommt man eine Balloon-Hilfe zu sehen, wenn man bei gedrückter Control-Taste auf ein Werkzeug zeigt.

Zur Unterstützung großer Projekte ist in die IDE bereits grundlegender Support für ein Version-Control-System (VCS) integriert, was ich mangels passender Software allerdings nicht testen konnte. Es wäre sehr erfreulich, wenn Metrowerks eine Light-Version ihres VCS beilegen würde. (Ein Mac-Port des GNU-VCS wäre übrigens eine lohnende Aufgabe für einen Shareware-Programmierer.)

Während in Microsofts VC++ sämtliche Fenster der IDE immer von einem Rahmenfenster umgeben sind, erlaubt die CodeWarrior-IDE die Positionierung sämtlicher Fenster unabhängig voneinander. Letztere Strategie ist zwar eher Mac-typisch, für meinen Geschmack aber auch unter Windows wesentlich angenehmer in der Bedienung, da man so Fenster im Hintergrund problemlos lesen kann.

GUI-Architekten

Wo auf der Mac-Seite der Constructor in Version 2.4.2 bei der Realisierung PowerPlant-basierter GUIs hilft, ist das bei Java respektive bei AWT-(Abstract Windowing Toolkit-)basierten grafischen Oberflächen der Java-Constructor. Beide Programme sind in Aussehen und Bedienung identisch. Naturgemäß unterscheiden sie sich nur in den unterstützten GUI-Klassen.

Für Windows wird leider kein äquivalentes Produkt für den Entwurf MFC-basierter Oberflächen mitgeliefert. Hier hinkt Metrowerks der Konkurrenz weit hinterher. Allein diese Tatsache wird viele Windows-Entwickler von einem Umstieg abhalten. Zwar läßt sich mit MFC auch ohne GUI-Tool arbeiten, aber ein GUI-Editor spart doch enorm Zeit.

Zugaben

Schon vor längerer Zeit forderte Apple seine Entwickler auf, mehr Spiele zu schreiben und schuf dazu die GameSprocket Library, eine Toolbox mit Routinen zur Programmierung von Bildschirm, Eingabegeräten und Sound. Metrowerks will eine plattformübergreifende Entwicklung von Spielen für Windows und MacOS mit einem einheitlichen Quelltext ermöglichen. Die Erweiterung GameCode soll je nach Rechner die installierte Erweiterung - DirectX unter Windows oder eben die GameSprockets - erkennen und automatisch nutzen. Laut Metrowerks genügt es, ein auf GameCode basierendes Spiel für die jeweils andere Plattform zu rekompilieren.

Außerdem sind - allerdings nur auf Mac-Seite - der HighLevel-Debugger sowie eine neue Version des Programms ZoneRanger hervorzuheben: es erlaubt die Inspektion jener Speicherblöcke, die von laufenden Prozessen belegt sind. ZoneRangers Funktion memory leak friert die Anzahl aktuell belegter Pointer und Handles einer zu testenden Applikation ein. Per Purge und Compact kann man dann den Speicherstatus seit dem letzten Aufruf überprüfen.

minpic06.jpg

ZoneRanger dient der Speicheranalyse. Hier hat er ein Memory-Leck in einer Demo-Applikation aufgespürt.

Fazit

Für Macintosh-Entwickler ist CodeWarrior Professional die zur Zeit wohl beste Entwicklungsumgebung.

Windows-Programmierern bietet das Paket ebenfalls eine stabile IDE mit gut funktionierenden Compilern. Aufgrund der veralteten MFC Release 4.2 und des fehlenden GUI-Werkzeugs kann das Produkt allerdings nicht mit Visual C++ mithalten. Solange solche Mängel nicht behoben sind, braucht Metrowerks mit keinem großen Erfolg im Windows-Markt zu rechnen.

Da sich die IDE unter MacOS wie Windows gleich bedienen läßt, eignet sich der CodeWarrior Pro gut für Entwickler, die für beide Welten programmieren - insbesondere für Mac-Entwickler, die in Zukunft auch Windows-Software schreiben wollen.

Allerdings ist weder das Projektformat austauschbar (beim Wechsel von einem OS zu einem anderen muß man Projekte stets neu zusammenstellen), noch gibt es irgendwelche Klassenbibliotheken zur plattformübergreifenden Entwicklung. Allein durch die Integration eines Windows-Compilers in die Mac-IDE entsteht noch kein Windows-Programm - und umgekehrt.

Die Anzahl anderer Compiler, die man in die IDE integrieren kann, ist aber ohne Beispiel. Wer für MacOS, 32-Bit-Windows, Net Yaroze, PlayStation und PalmOS gleichzeitig entwickeln will, dem bietet Metrowerks alle erforderlichen Werkzeuge aus einer Hand.

Übrigens kann man sich auf der Web-Site von Metrowerks stets über den aktuellen Stand aller Produkte informieren; der Server hält sowohl ausführliche Release-Notes als auch Updates bereit: vorbildlich. Den WWW-Seiten des deutschen Distributors konnten wir entnehmen, daß im Oktober bereits mit CodeWarrior Professional 2 zu rechnen ist - ab jetzt wird neu gezählt. (cm)

Kasten 1


CodeWarrior Pro

Entwicklungssystem für MacOS und Windows in einem Paket

Hersteller Metrowerks, Austin/Texas (http://www.metrowerks.com/)
AnbieterPromo Datentechnik, Hamburg (http://www.promo.de/)
MindestvoraussetzungenMac: 68020- oder PowerPC-CPU, 8 MByte RAM (16 empfohlen), MacOS System 7.1, 80 MByte Plattenplatz
PC: 486- oder Pentium-CPU, 16 MByte RAM, Windows 95 oder NT 4.0, 80 MByte Plattenplatz
Preise (gerundet)1120 DM (inkl. einem Update nach 6 Monaten)
890 DM (Update von alter Version)
299 DM (für den akademischen Bereich)
je 100 DM für gedruckte Doku: CW/MacOS, CW/Windows, PowerPlant