20. Geburtstag: Die Entwicklungsplattform .NET ist dem Teenageralter entwachsen

.NET von Microsoft ist nun 20 Jahre alt – heise Developer blickt zurück auf eine wechselhafte Geschichte.

In Pocket speichern vorlesen Druckansicht 275 Kommentare lesen
20 Jahre .NET
Lesezeit: 16 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Microsoft feierte am Abend des 14. Februar 2022 das 20-jährige Jubiläum der Markteinführung seiner Entwicklungsplattform .NET mit einer dreiviertelstündigen Live-Übertragung im Netz, in der neben Anekdoten aus der .NET-Geschichte auch das aktuelle .NET 6 gepriesen und einige Appetithäppchen zum kommenden .NET 7 präsentiert wurden.

Auch zwei der Väter des ursprünglichen .NET kamen in der Sendung zu Wort, Scott Guthrie und Anders Hejlsberg. Scott Guthrie, der dem Autor dieses Beitrags vor Jahren erzählte, dass er Idee und Prototyp der ersten Version von ASP.NET in den Weihnachtsferien 1997/1998 hatte, präsentierte dabei auch eine Mappe von Februar 1998 mit seinen damals noch geheimen Vorschlägen an das Management (s. Abb. 1).

Nachdem Guthrie einige Jahre das ASP.NET-Projekt geleitet hatte, machte er eine steile Karriere bei Microsoft. Heute ist er als Executive Vice President nicht nur für Windows und die Entwicklerprodukte wie Visual Studio und GitHub, sondern auch für den SQL Server und die Cloud-Platform Azure verantwortlich.

Anders Hejlsberg, der 1996 von Borland zu Microsoft kam mit dem Auftrag, eine moderne objektorientierte-Programmiersprache für Microsoft zu entwickeln, ist hingegen immer noch Spracharchitekt bei Microsoft. Seine ursprünglich unter dem internen Namen "Cool" entwickelte Multi-Paradigmen-Sprache erschien dann als C# im Rahmen der ersten .NET-Version im Jahr 2002. Hejlsberg ist aber seit einigen Jahren nur noch im Bereich TypeScript tätig.

Dieses Ringbuch von Scott Guthrie enthielt den ursprünglichen Vorschlag für ASP.NET (Abb. 1).

(Bild: Scott Guthrie)

C# ist heute die vorherrschende Programmiersprache der .NET-Welt, die auch ihren festen Platz in den Top 10 der Beliebtheitsrankings wie dem Tiobe Index, dem IEEE-Ranking und der Jahresumfrage von Stack Overflow hat. In den neueren .NET-Versionen lassen sich einige Anwendungsarten nur noch mit C# entwickeln.

In den ersten .NET-Jahren war die meistgenutzte Sprache jedoch Visual Basic .NET, denn .NET zielte insbesondere auf die bisherigen Nutzer von Visual Basic 6.0 als Ablösung für die Programmierung mit dem Component Object Model (COM). Visual Basic .NET wird seit Anfang 2020 nicht mehr syntaktisch weiterentwickelt.

Bei vielen Entwicklern längst in Vergessenheit geraten ist, dass .NET sich – damals in starkem Kontrast zu Java – als eine Laufzeitumgebung "für alle Programmiersprachen" präsentierte. Tatsächlich gab es (und gibt es zum Teil immer noch) über 70 verschiedene Sprachen, die auf .NET laufen, beispielsweise moderne Sprachen wie Java, JavaScript und Python, alte Tanten wie SmallTalk, Pascal, Cobol, Fortran, Forth und Lisp sowie esoterische Sprachen wie Brainfuck.

.NET wurde erstmals im Juni 2000 von Bill Gates öffentlich erwähnt. Einen Monat später, auf der Professional Developers Conference (PDC), verteilte Microsoft CDs mit einer Alpha-Version des .NET Framework 1.0 und der zugehörigen Entwicklungsumgebung Visual Studio .NET für die Sprachen C#, Visual Basic .NET, J# (Java-Syntax), JScript.NET (JavaScript-Syntax) sowie Managed C++ (später: C++/CLI).

Microsoft sieht als offiziellen Erscheinungstermin des .NET Framework als Version 1.0 den 13. Februar 2002 an. Die Ankündigung fand auf der VSLive!-Konferenz in San Francisco statt, auch wenn der Download der fertigen Version im Microsoft Developer Network (MSDN) schon am 14. Januar 2002 möglich war.

Zwischen Mitte 2000 und Mitte 2003 klebte Microsoft das ursprüngliche .NET-Logo (links in Abb. 2) auf viele seiner Produkte: Aus dem Windows Server wurde der Windows .NET Server und aus den Microsoft BackOffice-Servern wurden die .NET Enterprise Server. Dabei enthielten weder das Betriebssystem noch die damaligen Serverprodukte wie SQL Server, Exchange Server, Host Integration Server, Commerce Server und Content Management Server eine einzige Zeile .NET-Code. Das war verwirrend für die Kunden und beeinträchtigte die Glaubwürdigkeit der .NET-Strategie, zumal es lange dauerte, bis Microsoft selbst .NET in seinen eigenen Produkten einsetzte.

Einzig für die .NET MyServices (Codename "Hailstorm"), die ersten SOAP-basierten öffentlichen Webservices von Microsoft (lange bevor der Begriff "Cloud" erfunden war), waren damals tatsächlichen mit .NET realisiert. Zu diesen Diensten gehörte auch der Authentifizierungsdienst .NET Passport, der nach diversen Umbenennungen (Microsoft Passport, Microsoft Wallet, Windows Live ID) noch heute als "Microsoft Account" existiert.

Entwicklung des .NET-Logos von 2000 bis 2022 (Abb. 2)

Die "Wir nennen alles .NET"-Manie flachte 2003 ab. In einem Schaubild von Microsoft aus dem Jahre 2003 (s. Abb. 3) hatten viele Produkte das .NET schon wieder verloren. Weiterhin fokussierte Microsoft aber sichtbar auf die "XML Web Services" und nannte .NET gar ein "internetoptimiertes Softwarearchitekturmodell". Dabei wurden damals die meisten .NET-Anwendungen mit Windows Forms für den Windows-Desktop geschrieben – ohne jegliche Konnektivität ins Internet.

Microsoft war damals Vorreiter bei der Standardisierung von SOAP: Fünf der damals acht Autoren des SOAP-Standards waren bei Microsoft beschäftigt oder standen Microsoft nahe. Im aktuellen .NET 6 ist SOAP längst zur Nebensache geworden – .NET-Entwickler können SOAP-Dienste zwar noch aufrufen, aber nicht mehr allein mit dem .NET SDK entwickeln.

So präsentierte Microsoft .NET im Jahr 2003 (Abb. 3).

Auf der TechEd 2014 in Housten kündigte Microsoft das "Project K" an: eine schlankere, modulare und plattformneutrale Neuimplementierung von .NET mit dem Werbeattribut "cloud-optimized" .NET Framework, und der erste offizielle Produktname war .NET Core 5.0. Dann entschloss sich Microsoft aber, die Versionszählung neu zu starten. Nach einigen für die angestachelten Entwickler sehr nervenaufreibenden Verzögerung sowie API-Design- und Werkzeug-Änderungen kam dann .NET Core 1.0 am 26. Juni 2016 für Windows, Linux und macOS auf den Markt.

Dabei war .NET schon immer grundsätzlich plattformneutral – durch seine Intermediate Language (IL) und den Just-in-Time-Compiler. Microsoft schuf schon im Jahr 2002 durch das Projekt "Rotor" (alias Shared Source Common Language Infrastructure) eine auch auf FreeBSD und dem Mac OS X lauffähige Version von .NET. Diese Implementierung war Voraussetzung für die Standardisierung von .NET und C# bei der European Computer Manufacturers Association (ECMA-Standards 334 und 335) einschließlich der späteren Übernahme des Standards durch die International Standardization Organization (ISO/IEC-Standards 23270 und 23271). Diese Standardisierungen waren damals für Microsoft ein sehr ungewöhnlicher Schritt.

Nur war Microsoft damals noch eine "Windows only"-Firma mit der festen Meinung, Linux sei ein Krebsgeschwür (so der damalige Microsoft-CEO Steve Ballmer) und lieferte deshalb sein .NET Framework nur für Windows. Die Lizenzbedingungen von Rotor ließen keine sinnvolle Nutzung auf anderen Betriebssystemen zu.

Diese Verweigerungshaltung führte dazu, dass sich zwei Open Source-Projekte, Mono und DotGnu, eine eigene .NET-Implementierung erstellten. Mono-Gründer Miguel de Icaza beteuerte gegenüber dem Autor dieses Beitrags auf der PDC-Konferenz 2003, dass er niemals den Code von Rotor auch nur angeschaut habe und anschauen werde, um nicht Gefahr zu laufen, ähnlichen Programmcode wie Microsoft zu produzieren.

In den ersten Jahren wurden in der Entwicklergemeinde dennoch Wetten abgeschlossen, wie lange Microsoft diese Nachahmer gewähren lassen würde, bis die Anwälte vor der Tür stünden. Über die Jahre wurde aber klar, dass Microsoft Mono nicht nur tolerierte, sondern sogar inoffiziell durch Informationsaustausch unterstützt. Kommerziell bedeutsam wurde die Arbeiten der Mono-Gruppe erst, als man auf den Zug der neu aufkommenden Mobilbetriebssysteme Android und iOS aufsprang und eine erstzunehmende Cross-Platform-Entwicklungsumgebung für Apps wurde – zunächst unter den Namen MonoDroid und MonoTouch, später als Xamarin. Mono ist auch die Basis für das Scripting in der Unity Gaming Engine.