C#, IL, CLR und .NET:
Neue Technologien von Microsoft

+ andere TechDocs
+ MS-ASP
+ serverseitige Programmierung
+


Inhalt

  1. .NET
  2. IL (MSIL)
  3. CLR
  4. C#
  5. Neue Eigenschaften von CLR und C# im Vergleich zu C/C++
  6. Vergleich von Java zu C# und .NET
  7. Weitere Informationen


.NET

.NET (auch Dot-NET genannt) ist ein Framework zur Realisierung global verteilter Anwendungen per objektorientierter Betriebssystem-Services und soll Microsofts Weg zur Internet-Programmierung werden.
.NET bricht mit fast allen bisherigen Windows-Programmiertechniken wie z.B. ATL, COM, DCOM, OLE, Automation, MIDL, GUIDs, Win32-API und Windows-Registrierung (wenn viele dieser Techniken aus Kompatibilitätsgründen auch noch weiter angebunden werden können).
Es gibt zwar weiterhin .exe- und .dll-Module im PE-Format, aber mit anderem Code, nämlich IL (MSIL).
Verteilte Komponenten kommunizieren via XML und SOAP (Simple Object Access Protocol).
.NET bietet als Framework ähnliche Architekturmerkmale wie J2EE (Java 2 Enterprise Edition).



IL (MSIL)

Wie bei Java gibt es einen maschinenunabhängigen Code, IL oder MSIL genannt (Microsoft Intermediate Language). Anders als beim JBC (Java Byte Code) allerdings vorrangig nicht um Plattformunabhängigkeit zu erreichen, sondern Unabhängigkeit von der .NET-Programmiersprache.
Der IL-Zwischencode kann von verschiedenen .NET-Programmiersprachen erzeugt werden. Dieser Code (und nicht die Programmiersprache) definiert Datentypen und Aufrufe anderer Komponenten, so dass auch in anderen .NET-Programmiersprachen erstellte Komponenten aufgerufen werden können.
Die Spezifikation für .NET-Programmiersprachen heißt CLS (Common Language Specification), nicht zu verwechseln mit CLR.



CLR

CLR (Common Language Runtime) ist die Laufzeitumgebung, die den IL-Zwischencode ausführt.
Code, der auf die CLR angewiesen ist, nennt Microsoft managed Code (verwalteten Code).
Die von der CLR implementierte formale Spezifikation des Typsystems für Typen und Objekte nennt sich CTS (Common Type System).
CLR hat viele Analogien zur JVM (Java Virtual Maschine) des JRE (Java Runtime Environment).



C#

Microsoft will Visual C++, Visual Basic, ASP und ADO auf .NET portieren.
Rational will eine Portierung für Java erstellen.
Zusätzlich will Microsoft mit C# (ausgesprochen 'see-sharp') eine neue Programmiersprache schaffen, die besonders gut zu MSIL passt.
C# ist grundsätzlich von C/C++ abgeleitet, aber für MSIL teilweise reduziert, erweitert oder verändert. Sie ist maßgeblich von Heijlsberg beeinflusst, der auch die Entwicklung von Borland Pascal und Delphi steuerte.
C# hat viele Eigenschaften von Java übernommen.



Neue Eigenschaften von CLR und C# im Vergleich zu C/C++

Alle genannten Neuerungen sind in sehr ähnlicher Form auch in Java (bzw. JVM/JRE) implementiert:

- Zwischencode für Laufzeitumgebung,
- JIT (Just-In-Time-Compiler),
- Garbage Collection (automatische Speicherfreigabe),
- Sicherheitssystem mit Autorisierung,
- Exceptions (statt Fehlermeldung per Return-Code),
- Inspection (Schnittstellenbeschreibung in der Komponente, keine Einträge in Windows-Registrierung).
- strengere Objektorientierung,
- keine Mehrfachvererbung (multiple Inheritance), nur Einfachvererbung,
- Schnittstellenkonzept,
- sicherere Typprüfung,
- keine direkten Zeiger (nur Referenzen),
- die Operatoren '::' und '->' entfallen, nur '.' wird verwendet,
- boolsche Variablen werden nicht mehr durch ein int repräsentiert, sondern haben einen eigenen Typ,
- char ist ein 16 Bit breites Unicode-Zeichen,
- Arrays sind managed Types mit Bereichsüberprüfung,
- es gibt keine globalen Funktionen, Variablen oder Konstanten mehr,
- es gibt keine .h-Header-Dateien mehr (Deklaration und Definition sind kombiniert),
- es gibt keine Präprozessor-Makros mehr und
- es gibt keine Lib- und keine Obj-Dateien mehr.


Einfache Hello-World-Programme sehen in C# fast identisch wie in Java aus:

  using System;

  class HelloWorld
  {
    public static int Main( String[] args )
    {
      Console.WriteLine( "Hello World!" );
      return 0;
    }
  }


Vergleich von Java zu C# und .NET

Ein Vergleich zwischen C#/IL/CLR/.NET und Java/JBC/JVM/J2EE ist derzeit noch schwer möglich, weder unter technischen noch unter marktpolitischen Aspekten. Es ist noch nicht klar, wie sich .NET positionieren wird.

Außerdem unterliegt ein solcher Vergleich sehr stark subjektiven Gewohnheiten und Vorlieben und wird selten nur unter objektiven Gesichtspunkten durchgeführt.

Es folgen einige Argumente für Java:



Weitere Informationen




Weitere Themen: andere TechDocs | JSP | MS-ASP
© 1998-2007 Torsten Horn, Aachen