Microsoft hat einige Techniken des .NET Framework offengelegt, jedoch bleiben auch einige verborgen. Der ECMA-355 - Standard (Common Language Infrastructure, CLI) beschreibt das nicht sprachenabhängige Laufzeitmodul. Die Laufzeitinfrastruktur der CLI umfasst standardisierte Metadaten, die Zwischensprache MSIL und universell verfügbare Klassenbibliotheken. Die CLI beschreibt wie die Metadatenpakete in selbstassemblierende, stabile und typsichere Software umgewandelt werden kann und wie nicht verwaltete Software mit verwalteten Komponenten koexistieren kann.
Beim Vergleich mit Java fallen die folgende Punkte auf.
In Java sowie auch im .NET Framework wird der Quellcode in ein Zwischenformat kompiliert und der Code wird innerhalb einer Laufzeitumgebung ausgeführt.
Java ist eine Sprache auf mehreren Plattformen. Der Zweck der Java-Plattform ist die Unterstützung von Anwendungen, die in der Java-Sprache entwickelt und in Java-Bytecode kompiliert wurden.
.NET ist eine Plattform, die von vielen Sprachen gemeinsam genutzt wird. Der Zweck des .NET Framework ist die Unterstützung von Anwendungen, die in einer beliebigen Sprache geschrieben und in MSIL kompiliert wurden.
In Java ist der Gültigkeitsbereich und die Funktionsvielfalt von Klassen auf den kleinsten gemeinsamen Nenner von verfügbaren Computern und Betriebssystemen beschränkt. Dies ermöglicht die Plattformunabhängigkeit von Java-Anwendungen. Häufig bauen Entwickler ihr eigenes Framework darüber oder greifen auf Frameworks von Drittherstellern zurück.
.NET Framework basiert auf der Windows-Plattform. Die Klassen bieten den vollen Funktionsumfang der auf einer Plattform zur Verfügung steht, an. Die Funktionsvielfalt ist dementsprechend größer als bei den verfügbaren Java-Klassen.
Die Sicherheit ist im .NET umfassender. Neben APIs für Kryptografie, sicheren Cookies und Authentifizierung gibt es auch einen vielfältigen und erweiterbaren Mechanismus für die Zuweisung unterschiedlicher Berechtigungsebenen für unterschiedlich Benutzer auf Basis des Ursprungs des Codes. Je nach Typ der Berechtigungsanforderung kann das Richliniensystem der CLR die Erteilung von Berechtigungen an Assemblies einschränken oder das Laden der Assembly verweigern.
Das .NET Framework führt das Konzept der beweisbaren Sicherheit ein. Beweise sind dabei Informationen zum Code, die sich auf die codespezifische Sicherheitsrichtlinie beziehen. Woher stammt ein Assembly (von welcher Site, von welchem URL, aus welcher Zone)? Zur eindeutigen Identifikation dient der Strong Name des Assembly. Anhand der Beweise kann die Sicherheitsrichtlinie einen entsprechenden Satz von Berechtigungen ermitteln und der Assembly erteilen. Das Verfahren zum Erteilen von Berechtigungen beinhaltet die Bewertung des Beweises, um die zutreffenden Codegruppen auf drei unterschiedlichen Ebenen zur ermitteln: Unternehmen, Computer und Benutzer.
Wenn in Java zwei Versionen derselben Klasse installiert sind, lädt die Laufzeit einfach die erste gefundene Klasse im Klassenpfad.
Im .NET Framework werden dagegen Versionsüberprüfungen ausgeführt. Mit Hilfe der parallelen Ausführung können mehrere Versionen derselben Klasse gleichzeitig geladen und ausgeführt werden. Jede Anwendung ist dabei an eine Version gebunden, die aktuellste Version oder an die Version unter einer bestimmten Adresse.
Dies ist ein oft diskutierter Punkt.
.NET-Anwendungen enthalten MSIL-Code, der vor der Ausführung in Maschinencode kompiliert wird. Da während dieser JIT-Kompilation Optimierungen auf den aktuellen Prozessortyp möglich sind, ist die Performance aber akzeptabel.
Die Anwendungsbausteine von .NET sind auf Skalierbarkeit und hohen Durchsatz ausgelegt. So können zum Beispiel mit dem verbindungslosen Datenzugriff von ADO.NET mehr Datenfunktionen im Speicher vervollständigt werden, während diese bei der Java Database Connectivity (JDBC) einen erneuten Zugriff auf die Datenbank benötigen.
Zum Vergleich der beiden Technologien wurde Sun´s Java Pet Store mit .NET implementiert und dann .NET Pet Shop genannt. Die Ergebnisse dieses Projektes sind unter dem folgenden Link veröffentlicht.
http://www.gotdotnet.com/team/compare/petshop.aspx
Einen kritischen Beitrag hat der Heise-Verlag zu diesem Projekt geliefert.
http://www.heise.de/newsticker/data/jk-23.10.01-000/