Zweites Gesicht
Der anhaltende Mangel an OS/2-Software soll nun bald ein Ende haben. IBM rĂĽstet in OS/2 das 32bittige Windows-API nach und will dem Betriebssystem so endlich AnschluĂź an die moderne Programmvielfalt der Konkurrenz verschaffen.
- Matthias Withopf
In der neunten Auflage der Developer Connection, einem Satz von inzwischen 4 CDs für OS/2-Softwareentwickler, findet sich die erste öffentliche Betaversion der Developer API Extensions für OS/2, kurz DAPIE. Wie der Name schon andeutet, zielen die Erweiterungen nicht auf Anwender, die gerne Windows-Software unter OS/2 ausführen möchten (Binärkompatibilität), sondern auf die Entwickler von Windows-Programmen. Denen will IBM die Entwicklung von OS/2-Programmen schmackhaft machen, indem sie das Win32-API (Application Programming Interface, die Programmierschnittstelle zu Windows) unter OS/2 bereitstellt.
Der Windows-Entwickler kann somit weiterhin für Win32 programmieren beziehungsweise seine 16bittigen Programme zunächst nach Win32 portieren und erhält eine OS/2-Version seines Programms quasi geschenkt. Lediglich um besondere Fähigkeiten von OS/2 auszunutzen, muß er noch Änderungen vornehmen. Ein gemeinsamer Quellcode für Windows und OS/2 ist somit möglich.
DAPIE besteht im wesentlichen aus einer Handvoll DLLs, die das Installationsprogramm ins OS/2-Systemverzeichnis kopiert. Sie implementieren eine Teilmenge der Win32-Funktionen und setzen die gewünschten Aktionen OS/2-verdaulich um. Das funktioniert recht gut, da sich Windows und OS/2 ähnlicher sind als mancher gerne zugeben möchte. DAPIE funktioniert somit ähnlich wie Microsofts Win32s, allerdings mit größerem Funktionsumfang. Multithreading ist beispielsweise dabei, nicht aber Unicode, OLE2 und neue Windows-95-Funktionen. Windows wird scheinbar immer mehr zur plattformübergreifenden "Klassenbibliothek", denn auch für den Macintosh und verschiedene Unix-Varianten wird dieses Prinzip bereits erfolgreich angewendet.
Als Test habe ich versucht, von einem mittleren C++-Projekt (circa 50.000 Zeilen) eine OS/2-Version zu erzeugen. Idealerweise sollte man es dazu einfach nur neu kompilieren müssen, und - es klappte tatsächlich. Nach wenigen Stunden hatte ich eine einigermaßen lauffähige OS/2-Version. Tools zur Konvertierung der Ressourcen und Hilfedateien in das OS/2-eigene Format liegen auf den Developer-Connection-CDs bei. Das neue Toolkit enthält die zur Kompilierung notwendige Library und die Win32-Headerdateien. Sie ermöglichen ein angenehm schnelles Übersetzen, da sie nur etwa ein Zehntel des (Windows-)Originalumfangs haben. Derzeit sind sie nur für IBM-Compiler gedacht, ich hatte aber nach einigen Modifikationen auch mit Borlands C++-Compiler Erfolg.
Das resultierende OS/2-Programm hat natürlich noch viele Kinderkrankheiten, was zum Teil am Betastadium von DAPIE liegt, zum Teil aber prinzipbedingt ist. Für ein "richtiges" OS/2-Programm sollte man die Terminologie für Menüs und Dialoge anpassen und das "Look & Feel" an OS/2 angleichen. Ein weiteres Problem ist typisch für amerikanische Software: OS/2 und Windows verwenden unterschiedliche Zeichensätze, die derzeitige Version von DAPIE kümmert sich aber nicht darum. Das bedeutet, daß alle Umlaute und Sonderzeichen falsch angezeigt werden, was bei englischen Texten natürlich nicht auffällt. Aber Abhilfe ist bereits in Sicht: OS/2 kann mit verschiedenen Zeichensätzen, auch Codepages genannt, umgehen. Die Codepage 1004 ist schon eingebaut und entspricht dem Windows-Zeichensatz. Würde DAPIE diese Codepage einstellen, so wäre ein Großteil der Probleme gelöst, und Win32-Programme könnten intern mit dem Windows-Zeichensatz weiterarbeiten, ohne alle Umlaute selbst konvertieren zu müssen.
Wer auf der Basis von DAPIE Software für OS/2 und Windows entwickeln will, wird mit vielen kleinen Problemen zu kämpfen haben. Einerseits kann eine Emulation nie perfekt sein, zumal die Win32-Dokumentation einigen Interpretationsspielraum läßt. Zum anderen muß man für beide Versionen in der Regel verschiedene Compiler verwenden. Gerade bei C++ kann es schon mal sein, daß ein Compiler einen Quelltext warnungs- und fehlerfrei akzeptiert, ein anderer sich aber beharrlich weigert. Nicht einmal Borland C++ 4.5 für Windows und Borland C++ 2.0 für OS/2 beruhen auf demselben Compilerkern, obwohl sie vom selben Hersteller stammen.
Im Gegensatz zum C- oder C++-Quelltext können Ressourcen- und Hilfedateien nicht als gemeinsame Version vorliegen, da der OS/2-Ressourcen-Compiler ein anderes Format erwartet als sein Windows-Verwandter. Sie lassen sich zwar anfänglich aus der Win32-Version konvertieren, es ist aber noch manuelle Nacharbeit notwendig. Damit dieser Aufwand nicht bei jeder Änderung anfällt, ist es ratsam, getrennte Versionen zu verwalten. Kleinere OS/2-spezifische Änderungen am Programm lassen sich nicht einfach mittels #ifdef in den Code einbauen, sondern müssen in separate Dateien ausgelagert werden. Das erhöht den Aufwand, ist aber notwendig, da die Headerdateien von Win32 sich nicht mit denen von OS/2 vertragen.
IBM will DAPIE noch im ersten Quartal 96 fertigstellen. In der nächsten Version von OS/2 (Codename Merlin), die Mitte 96 erscheinen soll, werden die API Extensions bereits eingebaut sein. Bis dahin sind aber noch etliche Bugs zu beseitigen und Detailprobleme zu lösen. Insbesondere muß IBM einen Weg finden, die Erweiterungen auch unter der derzeitigen OS/2-Version zu installieren, ohne erst komplizierte Patches am Betriebssystem vornehmen zu müssen. Der absolute Hit wäre auch eine PowerPC-Version von DAPIE, da für das neue System sicherlich noch weniger Software vorhanden ist als für die Intel-Version. (bo) (bo)