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   

  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   

  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   

  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   

  Component-Object-Model

Bei dem Component-Object-Model (COM) von Microsoft handelt sich um modulare, objektorientierte Softwarekomponenten. Diese können von jeder COM-kompatiblen Anwendung genutzt werden. Mit dieser Technologie soll dem Microsoft-Betriebssystem  Windows ermöglicht werden, Interprozesskommunikation und dynamische Objekterzeugung zu betreiben. In COM-kompatiblen Applikationen können COM-Komponenten eingefügt und auch während der Laufzeit wieder entfernt werden.  COM-Objekte können lauffähige Programme sein oder eine Programmbibliothek (Dynamic Link Library (DLL)). Das Component Object Model ermöglicht dem Entwickler sprachunabhängig (Binärstandard), plattformunabhängig, objektorientiert,  versionsunabhängig, automatisiert und ortsunabhängig zu programmieren. Eine COM-Komponente erhält nach der Registrierung bei Microsoft eine weltweit eindeutige Nummer. Meist  werden COM-Komponenten in C++ programmiert. Folgende Technologien basieren auf COM-Komponenten: DirectX, ActiveX und OLE. COM wurde 1993 unter der Bezeichnung Object Linking and Embedding (OLE) in Windows integriert.  Die Bezeichnung COM wurde erst 1997 verwendet. COM wurde durch das .NET Framework 3.0 abgelöst. Das .NET-Framework 3.0 ist einfacher und universeller: es gibt keine unterschiedlichen Zugänge mehr zu einem Objekt, jeder .NET-Client kann  jede .NET-Komponente nutzen. Es wird weniger mit Schnittstellen als mit Klassen sowie Klassen mit Mehrfachschnittstellen gearbeitet. Statt DCOM wird für Remote Services .NET Remoting mit HTTP/SOAP und HTTP/binär verwendet. Die Klasse XML-Webservices  bietet Methoden an, um einen Web-Server via HTTP/SOAP oder XML/SOAP (Simple Object Access Protocol) aufzurufen. Die Plattformunabhängigkeit ist bei dem .NET Framework durch die Übersetzung des Codes der  unterstützenden Programmiersprachen in einen Zwischencode, der Common Intermediate Language (CIL) gegeben. Dieser Zwischencode wird zur Laufzeit von einem Echtzeit-Compiler (Just-in-Time-Compiler) in  Maschinencode übersetzt, und dabei für die jeweilige Plattform und den Prozessortyp optimiert.                                       
Siehe auch:    COM-Plus   OLE   ActiveX   DirectX   C-Plus-Plus   Microsoft   windows   ADO   CORBA