CLR

Die Common Language Runtime (CLR) ist eine Laufzeitumgebung im Rahmen des .NET-Framework von Microsoft. Die CLR ermöglicht im Rahmen der .NET-Entwicklungsumgebung plattform- und sprachunabhängigen Code.  Sie ist ähnlich wie die Java Virtual Machine (JVM) eine virtuelle Maschine (VM). Innerhalb des .NET-Frameworks wird der Quellcode der unterstützenden Sprachen wie Visual-Basic.NET, C++.NET, J#,  C++/CIL oder C# erst in einen Zwischencode, der  Common Intermediate Language (CIL) übersetzt. Dieser ist vergleichbar mit dem Bytecode der JVM. Die virtuelle Maschine der Common Language Runtime führt diesen Zwischencode mit Hilfe eines Just-in-Time Compilers zur Laufzeit dann aus.  Innerhalb der Common Intermediate Language wurde ein Konzept implementiert welches eine sprachübergreifendes System von objektbasierten Datentypen beinhaltet. Dadurch können auch Programmmodule, welche in verschiedenen Sprachen geschrieben wurden,  auf gemeinsame Ressourcen zurückgreifen. Im Unterschied zur Java Virtual Machine setzte man beim .NET-Framework von Beginn an auf das gemeinsame Zusammenwirken mehrerer Programmiersprachen.                                               
Siehe auch:    Dot-NET   JIT-Compiler   MSIL   Managed-C-Plus-Plus   C-Plus-Plus-CLI   WinFX   Windows-Vista   

  Dot-NET

.NET ist eine Entwicklungsplattform von Microsoft. Folgende Attribute beschreiben deren Strategie: Modularität, Wiederverwendbarkeit, Plattformunabhängigkeit, Sprachunabhägigkeit, Selbstbeschreibung sowie Internetausrichtung und -technologie. 

Common Language Runtime, WinFX und Common Language Infrastructure
Die .NET-Plattform besteht aus einer Laufzeitumgebung (die Common Language Runtime, CLR),  einer Sammlung von Klassenbibliotheken (WinFX bzw. Framework Class Library (FCL)), den unterstützenden Programmiersprachen, der grafischen Entwicklungsumgebung  Visual Studio, sowie einer Reihe von Diensten. Das .NET-Framework ist eine Spezifikation der Common Language Infrastructure (CLI), einem ECMA-Standard (European Computer Manufacturers Association)  für sprach- und plattformunabhängige Anwendungsentwicklung und -ausführung.

.NET-Geschichte und .NET-Strategie
Die .NET-Strategie entwickelte sich in den 90er Jahren aus der Gefährdung der Vorherrschaft von  Microsoft in PC-Schlüsseltechnologien durch die plattformunabhängige Programmiersprache Java von Sun Microsystems.  Eine eigene Java-Version von Microsoft gefährdete die Plattformunabhängigkeit von Java und wurde zudem von Sun gerichtlich unterbunden. Die .NET-Strategie sollte die Unabhängigkeit von Microsoft wieder herstellen und als  plattformunabhängige Entwicklungsumgebung gegen Java antreten. Zudem sollten veraltete Technologien wie COM und DCOM sowie API-Aufrufe auf der Windows-Plattform ersetzt werden. Software, welche im Rahmen der .NET-Umgebung erstellt wurde, läuft  plattformunabhängig auf internetfähigen Geräten, indem der Code mehr als bisher abstrahiert wird und unabhängiger von der verwendeten Sprache gehalten wird. 

.NET-Sprachen und Common Intermediate Language
Dies wird erreicht, indem die Common Language Runtime sprachübergreifend funktioniert, da  angepasste Programmiersprachen wie C#, C++.NET oder Visual Basic.NET zuerst in einen Zwischencode, der Common Intermediate Language (CIL), ehemals Microsoft Intermediate Language (MSIL) und dann erst zur Laufzeit von einem Echtzeitcompiler  (Just-in-Time Compiler) in lauffähigen Sourcecode umgewandelt wird. 

Managed-Code
Programme die innerhalb der CLR laufen werden als "managed" bezeichnet, alle anderen als "unmanaged". Die Interop-Technik ermöglicht es, alte COM-Programme mit .NET-Hüllen zu  versehen und sie wie .NET-Klassen aufzurufen oder vice versa: .NET-Klassen als COM-Klassen aufrufen. Implementiert sind gleich 3 Konzepte: Web-Services, .NET Remoting Services und die .NET Enterprise Services.                               
Siehe auch:    Dot-NET-Framework-3-0   CLR   WinFX   JIT-Compiler   C-Plus-Plus-CLI   Managed-C-Plus-Plus   Windows-Communication-Foundation   Component-Object-Model   ASP-Dot-NET   Mono

  Laufzeitumgebung

Eine Laufzeitumgebung ist eine Softwareschicht die sich zwischen der Schicht des Betriebssystems und der Schicht der Anwendung befindet. Die Laufzeitumgebung stellt den Anwendungen grundsätzliche Funktionen wie Schreiben und Lesen von Dateien, Steuerung  von Ein- und Ausgabegeräten, Transport von Daten, Suchfunktionen, Verwaltung von Dateien und mehr zur Verfügung. Bei der Programmiersprache Java erledigt dies das Java Runtime Environment (JRE), bestehend aus den  Java Klassenbibliotheken und der Java Virtual Machine (JVM).  Die JVM, ist wie der Name schon verrät, eine virtuelle Maschine welche für die Ausführung des Java Codes zuständig ist. Sie macht Java plattformunabhängig, da sie auf vielen Plattformen aufsetzen kann. Ein weiteres Beispiel für  eine Laufzeitumgebung ist die .NET Common Language Runtime (CLR). Die CLR ist die Laufzeitumgebung und portable virtuelle Maschine für die Programmiersprachen C# (sprich C Sharp), Visual Basic .NET und C++.NET.                                                 
Siehe auch:    Java   Dot-NET   CLR   C-Sharp   C-Plus-Plus   Visual-Basic   Laufzeitsystem   WINE   

  JIT-Compiler

Ein JIT-Compiler ist ein Just-In-Time Compiler (Echtzeit-Compiler) und gehört zu einer virtuellen Maschine, wie z. B. der Java Virtual Machine (JVM) oder der Common Language Runtime (CLR)  des .NET Frameworks von Microsoft.  Die CLR wie auch die JVM erzeugen zuerst einen Zwischencode: dieser Bytecode wird von dem JIT-Compiler erst bei Laufzeit des Programmes in Maschinen-Code, den der Prozessor direkt ausführen kann, übersetzt. Dadurch ist eine Plattformunabhängigkeit  gegeben und die Programmausführung für dynamische Programmiersprachen kann bei hochentwickleten JIT-Compilern beschleunigt werden, da dynamische Optimierungen durchgeführt werden können.  Compiler welche den fertigen Maschinen-Code vor der Laufzeit des Programmes erzeugen werden als Ahead-of-Time-Compiler (AOT-Compiler) bezeichnet. Bei AOT-Compilern ist der Code allerdings nicht mehr plattformunabhängig. Dafür sind die Programme zur  Laufzeit i.d.R. schneller, da sie schon fertig kompiliert sind. Im Rahmen der CLR kompiliert der Just-in-Time-Compiler das in der Common Intermediate Language (CLR)  oder früher auch Microsoft Intermediate Language (MSIL) genannt vorliegende Programm zur Laufzeit in Maschinencode und optimiert dabei den Code für die jeweilige Plattform und insbesondere den Prozessortyp.  Dadurch ist Plattform- und Sprachunabhängigkeit gegeben. Die CIL ist eine Zwischensprache der CLR: sie ist eine objektorientierte Assemblersprache und stackbasiert.                                           
Siehe auch:    Dot-NET   Dot-NET-Framework-3-0   Compiler   CLR   Microsoft   Java   Assembler   Quellcode   

  Managed-C-Plus-Plus

Managed-C++ ist eine Programmiersprache die das .NET-Framework von Microsoft unterstützt. Managed-C++ unterstützt sowohl 'managed' als auch 'unmanaged' Code in einer einzigen Programmdatei. Dies vermag ansonsten auch der Nachfolger von  Managed-C++: C++/CLI und Delphi ab Version 8.  Managed-C++ läuft in der Common Language Runtime (CLR) des .NET-Framework von Microsoft.                                                     
Siehe auch:    Dot-NET   CLR   C-Plus-Plus-CLI   Windows-Communication-Foundation   Windows-Presentation-Foundation   MSIL   WinFX   C-Sharp   C-Plus-Plus   

  C-Plus-Plus-CLI

C++/CLI ist eine Weiterentwicklung von C++ bzw. Managed-C++ und läuft in der Laufzeitumgebung Common Language Runtime (CLR) im Rahmen des .NET-Framework von Microsoft.  C++/CLI erfüllt die Anforderungen der Common Language Infrastructure (CLI) für eine plattform- und sprachunabhängige Anwendungsentwicklung. C++/CLI Quellcode wird zuerst in Zwischencode übersetzt, der Common Intermediate  Language (CIL). Die virtuelle Maschine der CLR führt diesen Code dann mit Hilfe eines Just-in-Time Compilers aus. C++/CLI ist kompatibel zu C++ und ähnelt dem ISO-C++ Code.                                                     
Siehe auch:    Managed-C-Plus-Plus   CLR   Dot-NET   Java   JIT-Compiler   Quellcode   C-Plus-Plus   Dot-NET-Framework-3-0   

  MSIL

Microsoft Intermediate Language. Die MSIL ist ein Zwischencode, der aus dem Quellcode der jeweiligen Sprache aus dem .NET-Framework  erzeugt wird. Die Virtuelle Maschine (VM) der Laufzeitumgebung (Common Language Runtime (CLR)) führt diesen Code dann zur Laufzeit mit einem Echtzeit-Compiler (Just-in-Time Compiler) aus: der MSIL Code wird in Maschinen-Code umgewandelt.  Die Bezeichnung MSIL wurde im Rahmen der Standardisierung durch die ECMA International (ehemals European Computer Manufacturers Association) umgeändert in Common Intermediate Language (CIL). Dies geschah auch vor dem Hintergrund der  Standardisierung Common Language Infrastructure (CLI) durch die ECMA, wobei das .NET-Framework von Microsoft eine Implementierung der CLI darstellt.                                                   
Siehe auch:    Dot-NET   JIT-Compiler   Compiler   Managed-C-Plus-Plus   C-Plus-Plus-CLI   Assembler   Quellcode   

  Mono

Mono ist ein Open Source Projekt unter der MIT/X11 Lizenz bzw. GPL/LGPL und stellt eine dem Microsoft .NET-Framework äquivalente Plattform für weitere Betriebssysteme neben Windows zur Verfügung: Linux,  Unix, Mac OS X, BSD-Derivate und Solaris 8. Mono wurde zunächst von Miguel de Icaza und seiner Firma Ximian entwickelt und später als Open-Source Projekt freigegeben. Nachdem Ximian von Novell aufgekauft wurde, läuft Mono weiterhin als Open Source,  wird jedoch von Novell betreut. Mono wird als .NET-Implementierung deklariert, welche die Standards der ECMA-International (European Computer Manufacturers Association) für C# und der Common Language Infrastructure (CLI) erfüllt.  Darüber hinaus unterstützt Mono die Datenzugriffstechnologie ADO.NET sowie die Webanwendungstechnologie ASP.NET. Mono beinhaltet die Common Language Runtime sowie einen C# Compiler.  Es existieren gegenseitige Lizenzabkommen zwischen Novell und Microsoft.  Ein weiteres Projekt zur Implementierung der .NET-Umgebung ist Portable.NET, welches Teil des dotGNU Projektes ist.  Die MIT oder X11 Lizenz stammt vom Massachusetts Institute of Technology (Cambridge/Massachusetts, USA). Die MIT Lizenz ermöglicht die Wiederverwertung von Software, unabhängig davon, ob der Quellcode offen gelegt ist. Unter der MIT Lizenz steht  auch das X Window System (X11).                                           
Siehe auch:    Dot-NET   Dot-NET-Framework-3-0   CLR   C-Plus-Plus-CLI   C-Sharp   ASP-Dot-NET   JIT-Compiler   Open-Source   GNU-Projekt   X-Window-System