Java-Compiler-Level und .class-Datei Versionen (major- und minor version number)
Der Compiler erzeugt vom JDK versionsabhängige Datei-Formate, die der Interpreter nach bestimmten Merkmalen untersucht, bevor er die Klasse ausführt.
Die Versionsnummern geben ihm Aufschluss darüber, ob eine Klasse mit einem kompatiblen JDK kompiliert wurde. Dazu vergleicht er u.a. die major- und die minor version number, welche neben der berühmten magic number (0xCAFEBABE) im Fileheader stehen.
Nachfolgend werden in einer Übersicht alle bisher veröffentlichten JDKs mit den dazu gehörenden major version und minor version numbers aufgelistet:
Major Version | Minor Version | JDK Version | Veröffentlichungsdatum |
---|---|---|---|
45 | 3 | 1.0 | 1996 |
45 | 3 | 1.1 | 1997 |
46 | 0 | 1.2 | 4. Dezember 1998 |
47 | 0 | 1.3 | 8. Mai 2000 |
48 | 0 | 1.4 | 13. Februar 2002 |
49 | 0 | 5 | 30. September 2004 |
50 | 0 | 6 | 11. Dezember 2006 |
51 | 0 | 7 | 28. Juli 2011 |
52 | 0 | 8 | 18. März 2014 |
53 | 0 | 9 | 21. September 2017 |
54 | 0 | 10 | 20. März 2018 |
55 | 0 | 11 | 25. September 2018 |
56 | 0 | 12 | 19. März 2019 |
57 | 0 | 13 | 18. September 2019 |
58 | 0 | 14 | 17. März 2020 |
59 | 0 | 15 | 15. September 2020 |
60 | 0 | 16 | 17. März 2021 |
61 | 0 | 17 | 17. September 2021 |
62 | 0 | 18 | 23. März 2022 |
63 | 0 | 19 | September 2022 |
Eine Java-Anwendung, die mit einem aktuellen JDK kompiliert wurde, läuft nicht in einer älteren JRE.
Compiler-Level
In den meisten Fällen genügt es bereits, den Compiler-Level auf die Zielplattform auszurichten und neu zu kompilieren. Das heißt, dass mit einer Compiler-Option eingestellt werden kann, welche JRE-Version ein Programm mindestens benötigt, um ausgeführt zu werden.
Bsp: Eine Java-Anwendung wurde mit dem JDK 7 geschrieben. Beim Ausführen wird beim Anwender ein UnsupportedClassVersionError
in der Java-Konsole ausgegeben.
Der Programmierer hat in seinem Programm nur Klassen aus den JDKs bis Version 6 verwendet. Dann kann er recht einfach die Anzahl der erreichbaren Ziel-VMs vergrößern, indem er den Compiler-Level auf Java 6 einstellt und neu kompiliert.
Die großen IDEs wie Eclipse und Netbeans bieten dazu Optionen in den Einstellungen an. Für Java-Editoren muss meist die Option an den Compiler-Aufruf angehängt werden.
javac -source 1.6 -target 1.6 MeineKlasse.java
Mit dieser Anweisung akzeptiert der Compiler nur Klassen, die bis zum JDK 6 eingeführt wurden und erzeugt Bytecode für JREs ab Version 6.
Compiler Version ermitteln
--L-ectron-X 02:53, 01. Feb 2012 (CET)