.Net - .nett oder .nichts-für-mich?
Artikel erschienen in Swiss IT Magazine 2001/19
Kürzlich träumte ich von Microsoft. Auf meine Frage, was denn .Net eigentlich sei, antwortete mir Bill Gates, dass er und seine Kollegen es auch nicht so genau wüssten. Ich sollte aber anderswo fragen und sobald ich es herausgefunden hätte, es ihn auch wissen lassen.
Die Marketing-Abteilung von Microsoft hat wahrlich keine leichte Aufgabe. Im sich schnell wandelnden Markt mit täglichen Neuankündigungen und laufend neuen Ideen, was aus dem Web alles werden könnte, ist es schwer, eine einheitliche und verständliche Botschaft zu vermitteln. Zudem sollte das Marketing des Namens .Net zwei total unterschiedliche Bereiche abdecken: zum einen die Anwenderseite, bei der es darum geht, dem User grundlegend neue Internetfunktionalitäten wie Hailstorm mit Passport und die neue IM-Integration schmackhaft zu machen; zum andern die Entwicklerseite, die aber erst noch davon überzeugt werden soll, .Net-Tools wie etwa Visual Studio.Net, C#, ASP.Net und ADO.Net zu kaufen und anzuwenden. .Net umfasst somit alle Techniken und Anwendungen, die Microsoft in den letzten Jahren entwickelt hat.
Wer glaubt, die Microsoft-Entwicklungsmaschinerie sei träge geworden, sieht sich durch .Net eines Besseren belehrt: Viele der neuen Techniken sind wirklich innovativ. So zum Beispiel das CLR (Common Language Runtime): Das ist eine Library, die neben dem Memory Management (inkl. Garbage Collection) auch Klassen für so ziemlich alles beinhaltet: von Strings über den Dateizugriff bis zur Netzwerkanbindung.
Der primäre Vorteil besteht darin, dass alle Sprachen, welche das CLR unterstützen, die gleichen Klassen verwenden. Dank der Sprachunabhängigkeit des CLR von .Net bleibt der Lernaufwand für Umsteiger ebenso klein wie der Anpassungsaufwand für die Anbieter von Programmiersprachen. Durch eine kluge Taktik von Microsoft sind das inzwischen ziemlich viele: C#, C++, Visual Basic, COBOL(!), Pascal und ebenfalls Sprachen, welche vorwiegend im universitären Umfeld angewendet werden wie Oberon, ML, Huskell, Eiffel. Die wenigen Spesendollars für diejenigen Studenten, die das CLR in all diese Sprachen eingebaut haben, waren jedenfalls mit Sicherheit gut investiert. Java eignet sich hervorragend für eine Integration ins CLR. Klar, dass diese nicht von Microsoft selber erledigt wurde. Auch ein Delphi.Net wird es geben.
Von sehr grossem Vorteil ist auch, dass das CLR nicht nur das Memory für alle in unterschiedlichen Sprachen geschriebenen Teile einer Applikation gemeinsam verwaltet, sondern die binäre Struktur der Objekte aller Sprachen identisch ist. Wer hätte je gedacht, dass es nun möglich ist, in VB eine Klasse zu schreiben, die von einer C++-Klasse vererbt ist, um dann in C# ein Objekt davon zu erzeugen? Natürlich ist es nicht sinnvoll, eine neue Applikation von Anfang an auf diese Weise zu entwickeln. Das CLR bewährt sich vor allem dann, wenn Codes unterschiedlicher Sprachen miteinander kombiniert werden oder über eine längere Zeitspanne der Wechsel von einer auf eine andere Sprache vollzogen werden muss. Dann kann .Net seine Vorzüge voll zur Geltung bringen.
Bin ich ins Schwärmen gekommen? Nun, jedenfalls müssen die Schattenseiten nicht lange gesucht werden. Ein grosser Nachteil ist die Vergewaltigung von C++. Bei Microsoft heisst die Sprache "Managed C++". Da sie die Garbage Collection unterstützt, musste ziemlich viel an ihr herumgeschraubt werden. Im Quellcode fallen die erforderlichen Änderungen allerdings nicht besonders auf: Es gibt ein paar neue Keywords, und es hat keine Destruktoren mehr. Es kann aber keine Rede davon sein, dass existierender C++-Code einfach übernommen werden könnte. Zwar ist das einfacher als der Wechsel von C++ zu C# oder Java. Im Output des Compilers jedoch, bei der Arbeit des Linkers und im PE-Image kann leicht erkannt werden, dass da und dort nicht unerheblich gebastelt wurde.
.Net bietet zwar viele Vorteile wie etwa attraktive Entwicklungsumgebungen, weist aber auch entscheidende Nachteile in Form von Plattformabhängigkeit, hohen Kosten oder der grossen Bindung an Microsoft auf. Doch davon in einer späteren Kolumne mehr.