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 sdmtliche Entwicklungswerkzeuge f|r Windows gleich mitliefert.

Unterthema: Code Warrior Pro

Die neue Version firmiert unter dem Namen CodeWarrior Professional 1 und lvst 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 Funktionalitdt wie etwa TCP/IP-Protokollklassen nachr|stet, und nat|rlich das altbekannte MPW von Apple (Macintosh Programmer4s Workshop). 80 MByte Plattenplatz sollte man denn auch mindestens f|r das CodeWarrior-Paket bereitstellen.

Wer Mac-Programme schreiben mvchte, 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 `Prereleases4). Apple baut ndmlich derzeit noch die Unterst|tzung neuer Objekte wie etwa QuickTime ein.

minpic02.jpg

Der Constructor dient dem Entwurf einer PowerPlant-basierten Oberfldche 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 gehvrt pflichtgemd_ 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 unnvtig schwer.

Kaffeek|che

F|r plattformunabhdngige Entwicklungen bietet sich Java an. Die zugehvrige 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 hdlt 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 erwdhnen, 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 dlteren Java-Projekten gibt es aber hin und wieder unerkldrliche Phdnomene. So brach bei einer in Java realisierten Client/Server-Applikation der Compiler nach der automatischen Konvertierung stets mit der Fehlermeldung `Null Pointer Exception4 ab. Wohlgemerkt, der Compiler meldete den Fehler, nicht das fertig kompilierte und gebundene Programm. Erst nachdem das Projekt vollstdndig neu angelegt und der Sourcecode |bernommen wurde, trat der Fehler nicht mehr auf.

Ist ein Java-Projekt sowohl vollstdndig 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 Date4 oder `Make4 bewirken diesbez|glich nichts. Dagegen generiert CodeWarrior Pro brav alle erforderlichen Klassen neu, sobald man eine Datei nur per `touch4-Button manipuliert.

Au_erdem erzeugt der Java-Compiler neuerdings in dem Order, der die Zielklassen enthdlt, Klassenhierarchien f|r com, sun und java. Dies f|hrt zu knapp 400 Klassen, die zusdtzlich zur eigentlichen Applikation oder zum Applet im Zielverzeichnis liegen. Wenngleich dies das Zielprogramm auch nicht zerstvrt, so bldht es den Ordner doch unnvtig 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 ld_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 vffnen 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 vffnen.

Auch sdmtliche 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 ld_t sich individuell verdndern.

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 wdre sehr erfreulich, wenn Metrowerks eine Light-Version ihres VCS beilegen w|rde. (Ein Mac-Port des GNU-VCS wdre |brigens eine lohnende Aufgabe f|r einen Shareware-Programmierer.)

Wdhrend in Microsofts VC++ sdmtliche Fenster der IDE immer von einem Rahmenfenster umgeben sind, erlaubt die CodeWarrior-IDE die Positionierung sdmtlicher Fenster unabhdngig 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 Oberfldchen der Java-Constructor. Beide Programme sind in Aussehen und Bedienung identisch. Naturgemd_ unterscheiden sie sich nur in den unterst|tzten GUI-Klassen.

F|r Windows wird leider kein dquivalentes Produkt f|r den Entwurf MFC-basierter Oberfldchen mitgeliefert. Hier hinkt Metrowerks der Konkurrenz weit hinterher. Allein diese Tatsache wird viele Windows-Entwickler von einem Umstieg abhalten. Zwar ld_t sich mit MFC auch ohne GUI-Tool arbeiten, aber ein GUI-Editor spart doch enorm Zeit.

Zugaben

Schon vor ldngerer Zeit forderte Apple seine Entwickler auf, mehr Spiele zu schreiben und schuf dazu die GameSprocket Library, eine Toolbox mit Routinen zur Programmierung von Bildschirm, Eingabegerdten und Sound. Metrowerks will eine plattform|bergreifende Entwicklung von Spielen f|r Windows und MacOS mit einem einheitlichen Quelltext ermvglichen. 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 Speicherblvcke, 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 Mdngel 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 ld_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 hdlt 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 gezdhlt. (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