Aus Linux-Magazin 11/2008

C#-Entwicklung unter Linux

© Aleksei Vasileika, Fotolia.com

C# knüpft nach Meinung vieler erfolgreich an die Fortschritte von Java gegenüber C++ an. Mit der kommenden Mono-2.0-Release schließt der freie Port der Dotnet-Umgebung zum C#-Standard 3.0 auf, sodass die Sprache auch unter Linux zur interessanten C++- und Java-Alternative wird.

Mit der Combo aus Dotnet-Plattform, der Programmiersprache C# und der IDE Visual Studio hat Microsoft ohne Zweifel eine fortschrittliche Programmierumgebung geschaffen. Mit der bevorstehenden Version 2.0 von Mono trifft Dotnet – nicht ganz ohne Zutun der Redmonder – auf ernsthafte Unterstützung aus dem Linux– und Open-Source-Lager. Das Linux-Magazin führt mit einer vierteiligen Serie in die Programmierung der nun auch in einer leistungsfähigen Linux-Version verfügbaren Sprache ein.

Als Grund für die Beliebtheit von C# unter Windows führen Anhänger an, dass Microsoft aus den Fehlern der Vergangenheit, etwa bei C++ oder Java, gelernt hat (siehe Kasten “Von C bis C#”).

Von C bis C#

C ist ein Spross der Unix-Entwicklung, der dem Versuch, das Betriebssystem unabhängiger von der Hardware zu machen, entsprang. Als rein prozedurale Sprache brachte C jedoch viele Einschränkungen mit sich. Objektorientierte Programmiersprachen wie Simula und Smalltalk zeigten eine Lösung auf, indem sie Daten und Methoden in unabhängigen Einheiten, den Klassen, kapselten. C++ versucht diese Konzepte in die C-Welt zu übertragen. Zumindest an der Zahl der verfügbaren Publikationen gemessen kommt gegenwärtig aber Java der Status des beliebtesten C-Ablegers zu.

Java führt neben der architekturbedingten Portabilität eine Vielzahl fortgeschrittener Sprachkonzepte wie beispielsweise einen Garbage Collector ein. Microsofts eigener Java-Implementierung Visual J++ war jedoch wegen eines Rechtstreits mit Sun nur ein kurzes Leben beschieden. Stattdessen meldeten sich die Redmonder mit der Dotnet-Plattform [1] und deren Hauptsprache C# zu Wort. Zusammen mit Intel und Hewlett-Packard hat Microsoft C# bereits im Jahr 2000 bei der ECMA zur Standardisierung angemeldet. Aktuell gültig ist Version 3.0 des Sprachstandards.

Gilt Java manchen als das bessere C++, so erscheinen viele Konzepte von Dotnet und C# wie eine Erweiterung der Ideen von Sun. Das Konzept der Virtual Maschine, die in Dotnet Common Language Runtime heißt, ermöglicht hier das Zusammenspiel verschiedener Programmiersprachen. C#-Bibliotheken sind zum Beispiel mit kleinen Einschränkungen auch von Visual Basic aus nutzbar und umgekehrt.

C# bietet außerdem einen im Vergleich zu Java noch einmal erweiterten Sprachumfang. Anders als Java erlaubt es einen direkten Zugriff auf Speicheradressen und unterstützt Pointer in C++-Manier, allerdings nur in explizit als »unsafe« markiertem Code. Auf private Variablen greifen Entwickler dank »get()«- und »set()«-Methoden einfacher zu und können dabei noch beliebigen Code ausführen. Ein neues Feature, das die künftige Mono-2.0-Release bereits unterstützt, ist die Language Integrated Query (LINQ), die den Datenzugriff mit SQL-ähnlicher Syntax erlaubt.

Trendwende

Die bevorstehende Mono-Release 2.0 [2] überwindet die Plattformbarriere: Laut den Draft Release Notes [3] unterstützt Mono nun den vollen Sprachumfang des C#-3.0-Standards. Gegenüber früheren Versionen – das Projekt startete bereits 2001 – hat die Praxistauglichkeit unter Linux große Fortschritte gemacht.

Außerdem laufen unter der mit Mono implementierten Common Language Runtime wie in Microsofts eigener Version nicht nur C#-Programme. Die virtuelle Maschine unterstützt ein gutes Dutzend weiterer Programmiersprachen [4]. C# ist zudem auch in der Lage, nativen C++-Code einzubinden. So lassen sich Programme mit hoher Performance schreiben, die trotzdem in weiten Teilen des Code auf den Komfort von C# zurückgreifen.

Grafische Qualitäten

Anbindungen an Gnome und, leider deutlich weniger entwickelt, an QT/KDE erlauben es, nun auch unter Linux mit C# grafische Programme zu schreiben. C++- oder Java-Programmierer lernen die C#-Syntax innerhalb weniger Tage. Die wohl wichtigste Einschränkung bleibt, dass nicht alle unter Windows verfügbaren Dotnet-Bibliotheken für Mono existieren. In manchen Fällen dürfte es wegen der zügigen Entwicklung von Microsofts Dotnet-Plattform oder lizenzrechtlicher Probleme auch schwerfallen, die Lücken zu schließen. Hier ist die Open-Source-Community gefragt, die Mono-Entwickler bei ihrer Arbeit zu unterstützen. Wie beeindruckend das bereits Erreichte aller Einschränkungen zum Trotz ist, zeigt die Mono-Dokumentation [5].

Achtung, Gefahr!

Laut Mono-FAQ [6] bestanden zumindest bei der Implementierung einer Open-Source-Version von Microsofts Silverlight – einem Konkurrenzprodukt zu Adobe Flash – direkte Kontakte zwischen dem Mono-Sponsor Novell und Microsoft. Diese Tatsache dürfte neben der Herkunft der Sprache manchen eingefleischten Open-Source-Befürworter nachdenklich stimmen. Novell war ja selber in jüngerer Vergangenheit für sein Patentübereinkommen mit Microsoft in die Kritik geraten.

Hinter Mono steht andererseits niemand anderes als Miguel de Icaza. Der hat schon mit der Positionierung von Gnome gegen KDE bewiesen, dass er, wenn es um den Open-Source-Gedanken geht, zu keinen Kompromissen bereit ist. Wer Open-Source-Konferenzen besucht, kann zudem bestätigen, dass sich Microsoft verstärkt um Kontakte zur Open-Source-Community bemüht, wie auch das Engagement der Redmonder in der Open Source Business Foundation (OSBF) zeigt. Ausgerechnet den Bereich Interoperabilität adressiert Microsoft hier. Aus Open-Source-Sicht ist Microsofts Verbindung zu Mono und C# also sicher ein Grund für verstärkte Aufmerksamkeit, aber kaum zur Sorge.

Setup

Pakete einer aktuellen Mono-Version, deren Versionsnummer der 2 so nahe wie möglich kommen sollte, sind in den meisten neuen Distributionen enthalten. Unter Open Suse 11 ist Mono in der Version 1.9.1 verfügbar. Sie lässt sich einfach über Yast nachinstallieren, sofern sie nicht sowieso schon auf der Festplatte liegt. Die Befehle »gmcs –version« und »mono –version« fragen die Versionsnummer ab.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben