Java-Compiler-Level und .class-Datei Versionen (major- und minor version number): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
 
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 8: Zeile 8:
 
! Minor Version
 
! Minor Version
 
! JDK Version
 
! JDK Version
 +
! Veröffentlichungsdatum
 
|-
 
|-
 
| 45
 
| 45
 
| 3
 
| 3
 
| 1.0
 
| 1.0
 +
| 1996
 
|-
 
|-
 
| 45
 
| 45
 
| 3
 
| 3
 
| 1.1
 
| 1.1
 +
| 1997
 
|-
 
|-
 
| 46
 
| 46
 
| 0
 
| 0
 
| 1.2
 
| 1.2
 +
| 4. Dezember 1998
 
|-
 
|-
 
| 47
 
| 47
 
| 0
 
| 0
 
| 1.3
 
| 1.3
 +
| 8. Mai 2000
 
|-
 
|-
 
| 48
 
| 48
 
| 0
 
| 0
 
| 1.4
 
| 1.4
 +
| 13. Februar 2002
 
|-
 
|-
 
| 49
 
| 49
 
| 0
 
| 0
| 1.5
+
| 5
 +
| 30. September 2004
 
|-
 
|-
 
| 50
 
| 50
 
| 0
 
| 0
| 1.6
+
| 6
 +
| 11. Dezember 2006
 
|-
 
|-
 
| 51
 
| 51
 
| 0
 
| 0
| 1.7
+
| 7
 +
| 28. Juli 2011
 
|-
 
|-
 
| 52
 
| 52
 
| 0
 
| 0
| 1.8
+
| 8
 +
| 18. März 2014
 
|-
 
|-
 
| 53
 
| 53
 
| 0
 
| 0
| 1.9
+
| 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
 
|}
 
|}
  
Zeile 64: Zeile 125:
 
Die großen [[IDE|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.
 
Die großen [[IDE|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.
  
<code=java>javac -source 1.6 -target 1.6 MeineKlasse.java</code=java>
+
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.
 
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==
 +
*[[Compiler-Version einer Java-Klasse ermitteln]]
 +
 +
 +
  
 
--[[Benutzer:L-ectron-X|L-ectron-X]] 02:53, 01. Feb 2012 (CET)
 
--[[Benutzer:L-ectron-X|L-ectron-X]] 02:53, 01. Feb 2012 (CET)

Aktuelle Version vom 23. März 2022, 17:19 Uhr

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.

UnsupportedClassVersionError.jpeg

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)