Zum Inhalt springen

.Net-Framework

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. September 2003 um 20:48 Uhr durch 213.23.136.25 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.


.NET (gesprochen: "dot-net") ist eine Entwicklungsplattform des Softwareherstellers Microsoft, die als Gegenpol zu Sun Microsystems Java eingeführt wurde.

Neben einer virtuellen Laufzeitumgebung besteht .NET aus einem Rahmenwerk (Framework) von Klassenbibliotheken (API) und Diensten, die als Basis für Eigenentwicklungen dienen.

Anders als bei Java, kann .NET verschiedene, von der Laufzeitumgebung unterstützte Programmiersprachen ausführen. Hierzu existiert die sogenannte Common Language Runtime (CLR). Diese Spezifikation definiert einen vereinheitlichten Binärcode, der von der virtuellen Laufzeitumgebung (VM)interpretiert und ausgeführt werden kann. Somit ist es möglich, .NET mit verschiedenen, an die CLR angepassten Sprachen zu programmieren. Beispielsweise sind das, neben der von Microsoft für .NET favorisierten Sprache C# (gesprochen: C sharp), die Sprachen C++, VisualBasic und Java (VisualJ). Weitere Sprachen werden von Drittanbietern zur Verfügung gestellt (z. B. Delphi von Borland). Hierbei sei aber anzumerken, dass lediglich die Syntax zu Teilen adaptiert wurde, bestehende Programme (z. B. Java- oder C++-Quelltexte) aber ohne vorherige Anpassungen nicht kompiliert und ausgeführt werden können.

Nachdem ein Programm kompiliert wurde, liegt es gemäß der CLR in einer sprachneutralen Binärform vor. Hiermit wird gewährleistet, dass verschiedene unterstützte .NET-Programmiersprachen auf in anderen Sprachen geschriebenen Code zugreifen können. Dieser wiederverwendbare Code wird in sogenannten Assemblies zusammengefasst und bereitgestellt (vgl. mit Packages/Paketen in Java oder hierarchischen APIs in C und C++).

Neben dem sprach- und plattformneutralen Binärcode stellt .NET noch eine weitere Form von Code bereit, den sogenannten "unmanaged code". Dieser Code liegt in seiner kompilierten Form in einer maschinennahen Form vor und verwaltet die vom Betriebssystem bereitgestellten Ressourcen eigenverantwortlich. Dies führt bei einer Sprache, die Sprach- und Plattformunabhängigkeit anstrebt, natürlich dazu, dass ein Programm, dass "unmanaged code" verwendet, auf verschiedenen Plattformen kein vorhersagbares Laufzeitverhalten garantiert. Ein weiterer Nachteil von "unmanaged code" ist, dass ungewollte Instabilitäten oder Sicherheitslecks innerhalb des Systems entstehen können.

"Managed code" wird im Vergleich zu "unmanaged code" von der Laufzeitumgebung (runtime environment) verwaltet. Beispielsweise übernimmt hierbei die VM die Anforderung und Freigabe von Ressourcen (Garbage Collection) und stellt sicher, dass geschützte Speicherbereiche nicht direkt angesprochen oder überschrieben werden können.

Auch Zugriffe auf Dienste, Dateisystem-Funktionen oder Geräte werden kontrolliert und können, sofern sie gegen Sicherheitsrichtlinien verstoßen, von der Laufzeitumgebung abgelehnt werden (Sandbox-Prinzip).

Die automatische Ressourcenverwaltung und die erhöhte Sicherheit hat dabei auch ihren Preis - die Ausführung von "managed code" benötigt geringfügig mehr Zeit und hat einen erhöhten Bedarf an Ressourcen.

Ein Grund hierfür ist die "garbage collection" (engl. für Müllsammlung bzw. Müllabfuhr), die automatische Freigabe nicht mehr benötigter Ressourcen und Referenzen. Nicht mehr benötigte Ressourcen werden nicht direkt freigegeben, sondern die Laufzeitumgebung entscheidet über den Zeitpunkt.

Daher werden auch weiterhin systemnahe Programmiersprachen benötigt (C, Assembler), wenn laufzeitkritische Programme benötigt werden (Animation, Simulation, Bildverarbeitung, direkte Zugriffe auf Dateisysteme und Geräte, Treiberprogrammierung, 3D-Spieleprogrammierung, KI-Anwendungen, sicherheitsrelevante Anwendungen wie Anlagensteuerungen, ...)

Entstehung

Historisch gesehen ist die Motivation für diese Initiative am besten verständlich. Durch die immer weitere Verbreitung der plattformübergreifenden Java-Technologie zu Beginn des 21. Jahrhunderts sah Microsoft seine Dominanz im Bereich der PC-Kerntechnologien in Gefahr. Zunächst versuchte Microsoft die von Sun entwickelte Java-Technologie für sich zu vereinnahmen und durch nicht-standardkonforme Java-Versionen die Java-Plattform zu verschmutzen und deren Plattformunabhängigkeit zu torpedieren. Als Sun dies unter anderem durch Gerichtsverfügung unterband, wechselte Microsoft die Strategie und versuchte die Java-Plattform durch ein eigenes Konkurrenzprodukt zu bekämpfen. Das besteht aus der sehr javaähnlichen Programmiersprache C# als Konkurrenz zur Sprache Java und der .NET-Initiative als Konkurrenz zur Java-Plattform.

Bestandteile

.NET besteht u.a. aus folgenden Komponenten:

  • Microsoft Visual Studio .NET - eine integrierte Entwicklungsumgebung (IDE)
  • .NET Framework
  • .NET Enterprise Server - eine Reihe von Servern, die jetzt unter der .Net-Marke vermarktet werden