Microsoft .NET – Ein modernes Babylon Mit der .NET-Plattform hat sich neben vielen anderen Sachen auch die Sprachenlandschaft stark geändert. Neben den quasi Standardsprachen C++ und Visual Basic wurde einen neue Sprache C# eingeführt und die Unterstützung für viele weitere Sprachen angekündigt. Mittlerweile existieren ca. 30 verschiedene kommerzielle und freie Programmiersprachen, die Code für die .NET-Plattform erzeugen können. Neben den bekannten Vertretern C#, VB.NET und C++ (ME) sind hier auch zahlreiche Exoten, wie z.B. Prolog, Haskel, SmallTalk oder auch Cobol zu finden.
Alle diese Sprachen sind in der Lage, Code zu produzieren, der auf der .NET-Plattform ausführbar ist.
Wie funktioniert die Sprachinteroperabilität? IL-Code – Als eine der wichtigsten Säulen der Sprachneutralität ist das grundlegende Verarbeitungsmodell der Plattform zu nennen. .NET-Programme sind keine binären Dateien im üblichen Sinne, sondern eher mit den JAR-Archiven von Java vergleichbar. Konkret heißt das, dass eine .NET-Programmdatei ( Assembly) eine Byte-Code Datei ist. Die Laufzeitumgebung von .NET ( .NET Common Language Runtime) führt ausschließlich einen Zwischencode -die Intermediate Language - aus, der erst zu Laufzeit compiliert wird ( Just In Time Compiler).
Jeder .NET-konforme Sprachcompiler muss diesen IL-Code erzeugen können, damit ein Programm ablauffähig ist. Daraus ergibt sich die Konsequenz, dass .NET-Assemblies und –Programme auf Ebene der CLR binärkompatibel sind. Die folgende Abbildung skizziert dies.
Interfaces – Die .NET-Plattform unterstützt kein mit IDL (Interface Definition Language) vergleichbares Schnittstellenkonzept, das Sprachinteroperabilität wie bei CORBA oder dem Common Object Model gewährleistet. Jedoch definiert bereits das Typsystem der Plattform Interfaces als Konzept der Plattform. Da das Typsystem von .NET für alles und jeden, der sich auf dieser Plattform bewegt, bindend ist, stehen somit Interfaces bereits von Haus aus, ähnlich Java, als Sprachmittel zur Verfügung.
Da .NET von Haus aus über ein Interface-Konzept verfügt, ist eine separate Schnittstellenbeschreibungssprache nicht notwendig. Da die Compilate binärkompatibel sind ist die Sprachinteroperabilität ebenfalls gewährleistet.
Ein Beispiel Im Folgenden soll anhand eines kleinen Beispiels der Umgang mit Mischprojekten, d.h. Projekte in denen mehrere Sprachen zum Einsatz kommen und miteinander kombiniert werden, gezeigt werden.
Es wird zuerst eine Visual Studio.NET Solution (Projektmappe) angelegt, in der eine Basisschnittstelle in Visual Basic.NET definiert wird.
Diese Schnittstelle wird in eine eigene Datei (Assembly) compiliert und dann in einem zweiten C#-Projekt importiert. Dort wird die VB.NET Schnittstelle in einer C# Klasse implementiert und ein kleines Testprogramm zeigt die Funktionalität.