Gibt es Leistungsunterschiede zwischen OpenJDK und Oracle?

515
Brad Parks

Oracle hat vor kurzem beschlossen, die kommerzielle Nutzung seiner JVM mit Gebühren zu belasten.

Die Firma, für die ich arbeite, hat stattdessen auf OpenJDK umgestellt und stellt fest, dass alles reibungslos funktioniert, es sei denn, wir haben eine langsamere Leistung.

Unsere Server sind Linux-Server und laut unserem Leistungsteam

Wir haben bei den meisten Java-Anrufen deutliche Langsamkeit beobachtet. Wir haben die Protokolle überprüft und einige Anrufe untersucht, und wir sehen keine Ausnahmen oder Fehler, nur Langsamkeit.

Hat jemand anderes Daten darüber, ob dies wahr ist oder nicht, dass OpenJDK im Durchschnitt langsamer ist als die Oracle-JVM?

1
Dies ist etwas, das Ihr Unternehmen als Teil einer Kosten-Nutzen-Analyse hätte prüfen müssen, bevor Sie die Änderung vornehmen. Verwandte / Cross-Site-Dupe: https://stackoverflow.com/questions/31153584/why-is-there-such-a-performance-difference-on-raspberry-pi- zwischen-open-and-orac Mokubai vor 5 Jahren 0
@Mokubai - danke für die Antwort - das hatte ich gesehen, aber ich suche nach offizielleren Antworten. Sicherlich muss jemand, der recht offiziell ist, Benchmark-Vergleiche zwischen ihnen haben? Brad Parks vor 5 Jahren 0
Ab.Java 11 ist der Unterschied das Installationsprogramm, und Oracle wird Abonnenten nach 6 Monaten Support anbieten, bevor es kostenlos ist. Peter Lawrey vor 5 Jahren 0

1 Antwort auf die Frage

1
harrymc

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.