Interessant wäre dieser Auszug aus einem Oracle-Blogbeitrag :
F : Was ist der Unterschied zwischen dem im OpenJDK-Repository gefundenen Quellcode und dem Code, den Sie zum Erstellen des Oracle-JDK verwenden?
A : Es ist sehr nahe - unser Build-Prozess für Oracle JDK-Releases baut auf OpenJDK 7 auf, indem nur ein paar Teile hinzugefügt werden, wie etwa der Implementierungscode, der die Implementierung des Java Plugins und des Java WebStart von Oracle sowie einige Closed-Source-Drittanbieter umfasst Komponenten wie ein Grafik-Rasterizer, einige Open-Source-Komponenten von Drittanbietern wie Rhino und ein paar Kleinigkeiten hier und dort, wie zusätzliche Dokumentation oder Schriftarten von Drittanbietern. In Zukunft möchten wir alle Teile des Oracle JDK mit Ausnahme derjenigen, die wir als kommerzielle Features betrachten (z. B. JRockit Mission Control (noch nicht in Oracle JDK verfügbar)), als Open Source veröffentlichen und belastete Komponenten von Drittanbietern durch Open Source-Alternativen ersetzen, um eine engere Parität zu erreichen zwischen den Codebasen.
Da Oracle für die Erstellung von beidem verantwortlich ist, ist klar, dass es dafür sorgen wird, dass seine Kunden gute Gründe haben, um zu bezahlen, und Leistung ist das offensichtliche Mittel.
Ich glaube, dass OpenJDK eine JVM ist, die nur für Dolmetscher geeignet ist. Dies ist einfacher zu portieren, da es keinen architekturspezifischen Assemblierungscode gibt, der aber leider weniger performant ist.
Ich glaube, OracleJDK nutzt den Gleitkomma-ABI der Plattform (Soft Float für RP1 und Hard Float für RP2). Es kann auch eine bestimmte Menge an plattformspezifischem Code enthalten, um den Vorgang zu beschleunigen.
In beiden war einst ein JIT-Compiler (Just-in-Time) namens Shark enthalten. Ich weiß jedoch nicht, ob er in OpenJDK enthalten ist. Wikipedia OpenJDK erwähnt JIT nicht und ich fand diese alte und beunruhigende Ausgabe des Shark-Compilers . Die Java-Versionsgeschichte von Wikipedia enthält jedoch JIT.
Wenn OracleJDK heute einen plattformspezifischen JIT-Compiler enthält, OpenJDK jedoch nicht, könnte dies den Unterschied in der Leistung erklären.