Java-Versionen

sidewinderpeter

Lt. Commander
Registriert
Mai 2008
Beiträge
1.048
Da heute im Downloadbereich die Version 14 von Java empfohlen wird, muss ich das schon mal fragen: also der Unterschied zwischen den JRE und SDK-Varianten ist mir einigermaßen klar, aber mit dieser Updatepolitik von Sun komme ich nicht mehr zurecht, weil Java ja nicht abwärtskompatibel ist. Ich kann mich beispielsweise erinnern, dass ich bis Version 10 immer sorgsam meinen Systemen Updates verpasst habe und die jeweils vorausgehende Version teils manuell gelöscht, weil das mitunter nicht automatisch lief.

Doch dann hatte mir, obwohl Version 10 installiert war, irgend ein Programm mal gemeldet, dass ich doch Version 8.XXXX installieren soll. In der Tat habe ich dann zeitweise beide Java Versionen parallel auf dem Rechner gehabt, dann aber 10 vom Rechner gelöscht und hatte seither auch keine Probleme mehr.

Kann mich also jemand aufklären, was es mit den verschiedenen Versionen auf sich hat und weshalb die nicht voll abwärtskompatibel sind? Wieso bringen die schon Version 14 raus, wenn Version 8 praktisch noch "state of the art" ist?
 
Version 8 ist eine art LTS (Long-Term-Support) Version, alle anderen sind neuere Versionen mit neueren Features und Änderungen, welche einige Programme eben schon nutzen.

Warum die nicht abwärtskompatibel sind kann viele Gründe haben, aber dafür sind solche Versionssprünge ja auch vorgesehen.
 
Ich denke, wenn Sun Version 14 rausbringt, ist die auch aktuell. Aber viele Sachen benötigen z.b Version 8. Zumindest irgendwelche Runtimes. Vieleicht wurden sie darunter erstellt.

Ich habe seit mindestens einem Jahr nie JAVA extra, also namuell installiert. Bisher merke ich nicht wirklich, das ich Probleme habe.

Früher hatte ich regelmässig diese JAVA Runtimes aktualisiert. Nun schon lange nicht mehr. Wahrscheinlich wie bei Flash. Habe ich seit Monaten oder Jahren nicht mehr manuell installiert. Nur das was Browser oder so mitbringen. Beides wohl tote Standards.
 
Niemand "empfiehlt" aktuell Java 14. Das ist lediglich ein Hinweis, dass es diese Version neu gibt. Und wie man am Zusatz "Build" und "Dev" im Versionsnamen erkennen sollte(?), handelt es sich dabei nicht um Final oder Release Versionen.
Und selbstverständlich ist Java abwärtskompatibel. Einzig Version 9 hat da mal reingegrätscht - Einführung von Project Jigsaw. Und seit Version können nun Bestandteile der Code Basis als "Deprecated(forRemoval)" markiert werden, aber das wird nur in homöopathischen Dosen eingesetzt.

Die bringen einfach jedes halbe Jahr eine neue Version raus. Ganz unabhängig von den Neuerungen. Und wenn sämtliche Neuerungen einen Tag vor Release verworfen werden müssen, dann werden sie trotzdem am nächsten Tag die neue Version rausbringen - nur halt ohne neue Features.

Und du solltest dich eher fragen, warum du Java 10 installiert hast. Schau lieber, dass du ein lang unterstütztes LTS Release benutzt und dann kümmerst du dich erst wieder um Java, wenn du dir einen neuen PC zulegst.
 
Java ist alles andere als tot...

Und mal so am Rande: Sun gibt es seit Jahren nicht mehr.
 
8 ist veraltet, allerdings gab es seither große Änderungen, auch und gerade mit der Lizenz, und viele Anwendungen setzen deswegen keine neuere Version voraus. Soll man deswegen die Entwicklung einstellen? Oracle hat das Entwicklungsmodell umgestellt und veröffentlicht jetzt regelmäßig neue Versionen, alle zwei Jahre eine LTS, ähnlich wie das viele Linux-Distros handhaben. Allerdings ist das nur für Firmen relevant, die für Support zahlen. Die Allgemeinheit setzt auf OpenJDK (nicht mehr zwingend von Oracle, sondern von Amazon, Azul, RedHat...). Es gibt dabei keine Unterscheidung zwischen JRE und JDK.

In der Regel ist Java abwärtskompatibel, das ist IMHO mit ein Grund warum Java so erfolgreich ist. Liegt fast immer an Anwendungen, wenn das nicht der Fall ist.
 
Mihawk90 schrieb:
Version 8 ist eine art LTS (Long-Term-Support) Version
Bevor Java 9 waren eh quasi alles LTS Releases, weil es keinen klar festen Release Plan gab und es in der Regel viele Jahre gedauert hat, bis mal eine neue Major Version erschienen ist.
Allerdings läuft der Support von Java 8 auch gerade aus. Bzw.: Es kommt drauf wessen Java du nutzt. Es gibt da ja nicht nur Oracle, sondern u.a. auch noch das OpenJDK und seit neustem Amazon. Amazon hat dieses Projekt extra ins Leben gerufen, um den Supportzeitraum für Java 8 zu erweitern.
Jetzt aktuell hat es sich wieder etwas geändert: Das Oracle JDK darf nicht mehr kostenlos kommerziell genutzt werden. Allerdings sind OpenJDK und Orcale JDK ab Version 11 (? - nicht sicher) identisch. D.h. es gibt eine "freie" Version ohne Support und die Oracle Version für die man bei kommerziellem Einsatz zahlen muss.

Rossie schrieb:
Nicht wirklich. Ist quasi dasselbe Problem wie mit Windows XP. In manchen Projekten würde es jahrelange Umbauarbeiten erfordern, um Java 9 (oder höher) nutzen zu können. Deswegen kam ja auch Amazon Corretto um die Ecke.

Rossie schrieb:
alle zwei Jahre eine LTS
Nein. Alle 3 Jahre. Java 11 und dann wieder Java 17.
 
@Mikhaw: sehe ich auch so, dass Java alles andere als tot ist! Läuft immerhin auf so gut wie jedem embedded-Gerät, oder habe ich da was falsch verstanden?
Und ja, stimmt, hat Oracle gekauft, oder? :D

@Rossie: das denke ich mir auch, dass 8 veraltet ist. Aber ich habe bisher noch nie eine Installation gehabt, die etwas höheres verlangt hätte...
 
Als Endbenutzer ist es eigenlich egal, welche Version du nutzt. Du kannst auch mehrere Versionen gleichzeitig installiert haben (ist dann nur etwas schwiriger die Anwendungen auf der richtigen JVM laufen zu lassen).
Welche Anwendung ist es denn? Es gibt ja nicht mehr viele Desktop-Applikationen, die Java nutzen. Im Serverbereich ist ohne Java wenig zu machen.
Du musst auch immer eine Unterscheidung machen, wer der Herrstelle von der JVM ist. Es gibt Oracle (Inhaber der API), OpenJDK, IBM, SAP.... Und nicht alles, was mit Oracle-Java läuft, läuft auf IBM-Java. Oracle hat für Java 8 den Support eingestellt, OpenJDK 8 gibt aber noch Updates heraus.

sidewinderpeter schrieb:
Läuft immerhin auf so gut wie jedem embedded-Gerät, oder habe ich da was falsch verstanden?
Java auf embedded-Geräten ist schon laaaange tot. Selbst Android (für das die Apps in Java entwickelt werden) wird warscheinlich von Google ersetzt werden. Die Entwicklung dazu läuft ja schon.
 
Zuletzt bearbeitet:
sidewinderpeter schrieb:
sehe ich auch so, dass Java alles andere als tot ist! Läuft immerhin auf so gut wie jedem embedded-Gerät, oder habe ich da was falsch verstanden?
Nicht nur da...
Vielleicht kennt ja jemand dieses Nieschen-OS Android?

Aber abgesehen davon wird es auch in Unternehmen viel verwendet weil Java als Sprache sehr strukturiert ist und man sich um die Platform halt keinen Kopf machen muss.
 
Wie immer in einem hauptsächlich Hardware und Gaming fokussiertem Forum wie CB viele Falschaussagen in diesem Thread. :D

Hier ein paar allgemeine Fakten:
  • Java wird seit 2010 von Oracle weiterentwickelt
  • Java ist per se abwärtskompatibel (sowohl der Compiler als auch die Runtime)
    • Es sind jedoch mit der Zeit aus der Java SE (Standard Edition) Module entfernt worden, die ursprünglich nur als Bestandteil der Java EE (Enterprise Edition) gedacht waren. Diese Module (in erster Linie JAX-WS/JAXB) wurden mit Java 9 deprecated und sind mit Java 11 endgültig aus der Java SE entfernt worden. Java Programme, die Gebrauch von diesen Modulen machen, müssen um auf Java 9+ zu laufen, zusätzliche Dependencies mit einbinden.
  • Oracle hat nach Java 9 angekündigt die Releasezyklen auf halbjährliche Feature-Updates zu verkürzen
  • Es soll alle 3 Jahre LTS Versionen geben (derzeit 8 und 11, zukünftig 17)
  • Java 8 ist nicht veraltet, das letzte Update gabs vor wenigen Wochen
    • Bis Ende 2020 wirds weiterhin Updates geben
Zu deiner konkreten Frage:
Welche JRE/JDK Version du installieren solltest, hängt davon ab welche Software du verwendest. Wie oben erläutert, gibts teilweise Java Tools die zum XML Parsen o.ä. noch Module nutzen, die mit Java 9+ nichtmehr Bestandteil der SE sind. Hier bleibt dir nur die Möglichkeit bei Java 8 zu bleiben oder zu schauen obs ein Update der Software gibt.
Grundsätzlich bietet es sich zudem an, eine LTS Version zu installieren wenn damit alles läuft, um somit häufigen Major Updates aus dem Weg zu gehen (also Java 8 oder 11).
Ansonsten profitieren theoretisch aber auch ältere Java Programme von neueren JRE Versionen, da die JVM stetig weiterentwickelt wird. So wurde beispielsweise der GC in den letzten Releases immer wieder verbessert. Meist sind solche speziellen Optimierungen aber eher im Business bzw. Server-Bereich interessant.

phm666 schrieb:
Java auf embedded-Geräten ist schon laaaange tot. Selbst Android (für das die Apps in Java entwickelt werden) wird warscheinlich von Google ersetzt werden.
Aktuell geht in der Android (Entwickler) Welt praktisch nichts ohne Java. Angefangen bei der IDE (die IntelliJ IDEs laufen in der JVM) über das Build-Tool (Gradle läuft in der JVM) bis hin zu den offiziellen Programmiersprachen (Java und Kotlin). Für Android Apps muss weiterhin stack-basierter JVM kompatibler Bytecode kompiliert werden, welcher dann zu Android Runtime (ART) optimiertem, register-basierten Dex Bytecode transformiert wird.

Es gibts seitens Google auch keinerlei Anzeichen, dass sich daran in näherer Zukunft irgendetwas ändert. Stattdessen sollen mit und mit neuere Java Language Features unterstützt werden: Android's Java 9, 10, 11, and 12 Support
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: sidewinderpeter, bronks und Gee858eeG
G00fY schrieb:
Aktuell geht in der Android (Entwickler) Welt praktisch nichts ohne Java. Angefangen bei der IDE (die IntelliJ IDEs laufen in der JVM) über das Build-Tool (Gradle läuft in der JVM) bis hin zu den offiziellen Programmiersprachen (Java und Kotlin).
Für den aktuellen Stand ist da korrekt, aber Google arbeitet mit Fuchsia an einem Projekt, was durchaus Android ersetzen kann. Dass es in der Softwareentwicklung nicht ohne Java geht (gerade weil die meisten Serverapplikationen in Java geschrieben werden) ist richtig. Die Idee eines "embedded-Java" gab es mit Java ME (Micro Edition) ist aber vor langer Zeit aufgegeben worden.
 
Burki73 schrieb:
Nur das was Browser oder so mitbringen. Beides wohl tote Standards.

Hier wird wohl das Java Browser plugin, welches dazu da ist Java Applets im Browser laufen zu lassen mit der Sprache Java gleich gesetzt.

Das ist so nicht richtig.
Java Applets sind Tot, darum brauch auch keiner mehr wirklich das Java Browser Plugin.
Die Sprache Java ist aber weiterhin eine der am meisten verwendeten Sprachen im Backendbereich.
Einfach mal nach Java EE, Jakarta EE, Spring oder Spring Boot googeln falls Interesse an Java da ist.
 
  • Gefällt mir
Reaktionen: Mihawk90
Zurück
Oben