Open Source im professionellen Einsatz

© Aleksei Vasileika, Fotolia.com

C#-Entwicklung unter Linux

Siegen lernen

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].

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook