Mono öffnet Windows für Linux

24.09.2002
Microsoft und Linux, die beiden Begriffe stehen bisher für zwei Antipoden in der IT-Welt. Doch mit .NET könnte das alles anders werden. Die Projekte Mono, Rotor und Portable .NET übertragen die Microsoft-Plattform auf Nicht-Windows-Systeme und sollen den Traum einer universellen Kompatibilität wahr machen.

Vor allem Mono hatte im letzten Jahr für Aufsehen gesorgt - und Teile der Open-Source-Gemeinde gar vorübergehend in Rage gebracht. Kein geringerer als Miguel de Icaza, der Initiator des Gnome-Desktops für Linux, hatte .NET als zukunftsträchtige Technologie bezeichnet, die er voll unterstützen werde. Neben Mono existieren noch andere Projekte, die .NET portieren. Eines davon wurde von Microsoft selbst ins Leben gerufen. .Im Auftrag der Redmonder entwickelt Corel "Rotor" (www.corel.com/ssclii). Es handelt sich dabei um eine "Shared-Source"-Variante der "Common Language Infrastructure" (CLI). Ein weiteres Open-Source-Projekt mit der Bezeichnung "Dotgnu Portable .NET" ( verfolgt ähnliche Ziele wie Mono.

All diesen ".NET-Clones" ist gemeinsam, dass sie auf der öffentlich zugänglichen CLI basieren, die Microsoft wie die .NET-Programmiersprache C# der ECMA zur Standardisierung vorgelegt hat. In der Theorie können damit alle Programme, die in einem CLI-kompatiblen IL-Bytecode (IL = Intermediate Language) vorliegen, auf beliebigen Plattformen zum Laufen gebracht werden. Windows ist hierzu nicht notwendig. Das Ziel von Mono ist, die zentralen Bestandteile von Microsofts .NET-Framework auf andere Plattformen zu übertragen. Im Idealfall laufen dann .NET-Anwendungen auf jedem Betriebssystem, für das es eine Mono-Version gibt.

Mono bietet derzeit eine virtuelle Laufzeitumgebung für die Intel-x86-Architektur auf Basis der CLI, die einen Class-Loader, einen Just-in-Time-Compiler und eine Garbage-Collection-Runtime enthält. Dazu kommt eine Klassenbibliothek, die jede CLR-Programmiersprache (CLR = Common Language Runtime) unterstützt, sowie ein C#-Compiler, der die neue Microsoft-Programmiersprache unter Linux bereitstellt. Bisher wurden bereits über 500000 Zeilen Code geschrieben. Im aktuellen Entwicklungsstadium können unter Linux bereits C#-Konsolenprogramme entwickelt und kompiliert werden - diese laufen sowohl unter Linux als auch unter Windows, sofern dort das .NET-Framework installiert wurde. Bisher konzentrieren sich die Mono-Macher auf die Intel-Linux-Plattform, eine Power-PC-Variante ist ebenfalls in Arbeit.

Eine der Hauptaufgaben ist derzeit die Implementierung von Bibliotheken für die Entwickung von GUI-Anwendungen (GUI = Graphical User Interface). Denn im Kern sind .NET- Anwendungen plattformunabhängig, die grafischen Frontends für Windows, Linux oder Mac OS X müssen aber wie eh und je durch Bibliotheken der einzelnen Betriebssysteme bereitgestellt werden. Um also unter Linux .NET-Windows-Anwendungen mit Fenster zu entwickeln, ist es notwendig, dass die Microsoft-Schnittstellen "Windows Forms" unterstützt werden.

Bei Windows Forms handelt es sich um Bibliotheken, die in .NET für das grafische Layout, für Fenster und Bedienelemente auf der Windows-Oberfläche zuständig sind. Im Umgang mit Bibliotheken für grafische Oberflächen lag bisher immer die Crux, wenn es um plattformunabhängige Entwicklung ging. Mit .NET verspricht sich de Icaza deutliche Vereinfachungen. Für Mono wichtig ist neben Windows Forms auch eine Erweiterung der GTK-Bibliotheken namens "GTK#". Diese dienen der Entwicklung von Anwendungen für den Gnome-Desktop mit C# - schließlich soll der primäre Nutzen von Mono de Icazas Baby gelten.