Wie kann man die Javaversion ermitteln?v.10
Die auf einem System aktive Java Laufzeitumgebung lässt
sich am einfachsten durch Eingabe von 'java -version'
auf der Kommandozeile ermitteln:
Wie kann dies jedoch zur Laufzeit eines Javaprogramms erfolgen?
Hierzu existiert seit Java 9 die Klasse Runtime.Version
,
mit deren Methoden die Versionsangabe bzw. deren einzelne Teile
ausgelesen und verglichen werden können. Hierzu muss
zunächst ein Blick auf den Aufbau des Versions-Strings
geworfen werden.
Aufbau der Versionsangabe
Eine Versionsangabe besteht aus einer Versionsnummer, die aus durch Punkte voneinander getrennten ganzzahligen, vorzeichenlosen Elementen besteht, ggf. gefolgt von optionalen Angaben. Oracle unterscheidet vier von links nach rechts hierarchisch angeordnete Versionsstufen und der ggf. schließenden optionalen Angabe:
- Feature
- Der erste Zähler bezeichnet das Feature der Version. Es kann Hauptänderungen aller Art umfassen. Neue Features erscheinen jährlich alle sechs Monate im März und September.
- Interim
- Die Interim-Nummer verweist auf Ausgaben von Bugfixes und Weiterentwicklungen, aber ohne Änderungen an der Standard-API.
- Update
- Die Update-Angabe verweist auf Sicherheitsupdates oder Bugfixes neuerer Features.
- Patch
- Patches sind reserviert für Notfall-Ausgaben kritischer Sicherheitsupdates.
- optionale Angaben
- Sie sind reserviert für Angaben zu plattformspezifischen Implementierungen, build-Nummern, Vorabversionsangaben und z.B. auch der Angabe zu long-term-support (LTS) Ausgaben, die alle drei Jahre erscheinen.
Alle fünf Bestandteile der Versionsangabe können
getrennt ausgelesen werden. Hierzu stehen entsprechend benannte
Methoden der Klasse Runtime.Version
bereit. Ein
Objekt dieser Klasse kann durch die Methode version()
der Klasse Runtime
erzeugt werden.
Die Methode optional()
zum Auslesen der optionalen Angaben liefert hierbei ein Objekt
der Klasse Optional
, das gestreamt werden kann.
public class JavaVersionBsp { public static void main(String[] args) { printVersion(); } private static void printVersion() { Runtime.Version version = Runtime.version(); System.out.println("Version: " + version.toString()); int feature = version.feature(); int interim = version.interim(); int update = version.update(); int patch = version.patch(); int build = version.build().get(); System.out.printf("feature: %s%ninterim: %s%nupdate: %s%npatch: %s%nbuild: %s%n", feature, interim, update, patch, build); version.optional().stream().forEach(System.out::println); } }
Ausgabe bei Verwendung von Version 11:
Version: 11.0.9+7-LTS feature: 11 interim: 0 update: 9 patch: 0 build: 7 LTS
Quellen
https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.