2009-09-25 9 views
6

Diese Frage bezieht sich auf das andere hier besprochene Thema:
Is Java bytecode compatible with different versions of Java?
Aber in diesem Fall würde gerne wissen, ob die Kompatibilität in der gleichen Version aber auf verschiedenen Updates erhalten bleibt.
Zum Beispiel ist Bytecode vom Compiler auf Version 1.6.0_14 kompatibel mit JVM auf 1.6.0? Code läuft glücklich, aber ich weiß nicht, ob es ein Problem gibt, das unerwartet auftreten könnte.Ist Java-Bytecode in verschiedenen Updates derselben Java-Version kompatibel?

Grüße.

Antwort

7

Ja. Der Byte-Code ändert nur die wichtigsten Releases. Die Updates (_XX) sind API & toolbasierte Fehlerbehebungen, Leistungssteigerungen und Änderungen an den nicht standardmäßigen Befehlsoptionen. Update-Versionen werden nicht die APIs brechen oder die Klassenversion ändern.

1) Bah für Suns Versionsnummernsystem.

4
+1

Die Liste scheint nur Probleme zu betreffen, die älterer Bytecode (vor Java 6) beim Ausführen auf der aktuellen JVM hat. –

+0

Wenn Sie auf die Seite mit den Kompatibilitätsinformationen für jede frühere Version (1.4.0, 1.4.1, 1.4.2 usw.) gehen, erhalten Sie Informationen über mögliche Inkompatibilitäten zwischen Nebenversionen (dh: 1.4.1 && 1.4. 2). – elhoim

+0

Wie ich es verstehe, wurde die Nebenversion nun vom Suns Marketing Team ausgemustert. Sie haben jetzt nur die Update-Version (_XX) und Major-Point-Releases. Aber wenn wir über das Zahlensystem von Sun sprechen, wird dies wahrscheinlich morgen geändert werden. –

5

Die class file format hat eine Versionsnummer genau sein, um diese Frage zu lösen. Wenn es jemals eine Bruchänderung innerhalb der gleichen Version wäre, würde ich das Klassendateiformat Nummer erwartet auch (möglicherweise die minor_version, die ungenutzt ist bisher) zu erhöhen, wodurch ältere JVMs die Klassendateien sofort mit einem UnsupportedClassVersionError ablehnen

+0

Das bedeutet, ich will nicht wissen, bis ich testen/Last alle Klassen in meinem Code . –

+0

Sie haben normalerweise nicht einzelne Klassen, die von einem anderen Compiler getrennt kompiliert werden. Ich denke, es könnte möglich sein, dass eine selten verwendete Komponente in einer JAR-Datei zum ungünstigsten Zeitpunkt eine inkompatible Version enthält, aber es ist ein ziemlich künstliches Szenario. –