JDK8u261 vs JDK-15

ArgonPrime

Mitglied
Hallo,
ich möchte Java programmieren - nun bin ich aber verwirrt was die Versionsnummern angeht.
Ich habe das JRE und JDK 8u261 auf meinem Rechner installiert. In der Systemsteuerung
bekomme ich unter JAVA auch angezeigt, dass diese Version aktuell ist. In den meisten
Büchern und Videokursen ist von Version 11-14 (15 eben gesehen bei Oracle) die Rede.
Nun habe ich ein JDK 8u261 und ein JDK-15 heruntergeladen. Beide sind in etwas bis auf wenige
MB gleich groß. Was ist denn nun der Unterschied? Welches soll ich denn zum Programmieren
benutzen? Habe ich evtl. ein komplett veraltetes Java installiert?

Danke Euch - und ja, ich habe gegoogelt - aber wie es eben immer so ist, wenn man nicht
die magisch-korrekten Suchbegriffe eingibt - wird das mit der Suche nix ;-)

Vielen Dank nochmal
 

thecain

Top Contributor
Java 8 ist über 6 Jahre alt und kriegt nur noch Security updates. Java 15 ist die aktuellste Version.
Aber was hast du denn gegoogelt? Das steht sogar auf Wikipedia
 

White_Fox

Top Contributor
Java 8 ist schon relativ alt, wird aber noch offiziell unterstützt.

Seit Java beim Versionsnummerwettrennen mitmacht (ob sinnvoll oder nicht sei dahingestellt, das will ich hier nicht näher diskutieren) kommt halt so alle drei Monate oder so eine neue Java-Version heraus, die dann aber auch nur so lange gültig ist.

Hin und wieder (ich weiß nicht mehr in welchem Abstand) erhält eine Version long term support, d.h. wird wieder über einige Jahre gepflegt. Java 8 ist eine solche long term support Version.

Du kannst mit Java 8 durchaus anfangen (ich schiebe den Wechsel auch vor mir her und bin auch noch auf V8 hängengeblieben), ich sehe für dich aber keinen Grund nicht mit einer aktuellen Version anzufangen.
 

White_Fox

Top Contributor
Naja...sicher. Die Frage ist halt, ob du die brauchst. Ich bin mir recht sicher, Java 8 noch nichtmal voll auszureizen. Von einem Wechsel hätte ich nur bedingt etwas.

Außerdem hängt bei beinem Versionswechsel noch etwas Aufwand hinten dran. Neue IDE-Version und diese dann so zurechtfummeln daß sie meinem aktellen Werkzeug wieder halbwegs gleich kommt (Plugins, Einstellungen, usw.). Diesen Aufwand scheue ich halt noch.

Aber wie gesagt: Ich sehe nicht warum du nicht gleich mit einer neueren Version loslegen solltest.
Wenn du gerade mit Java anfängst, dann hättest du zwar mit Java 6 schon genug zu tun. Die Konzepte und Ideen hinter Interfaces und Klassen, den verschiedenen Sichtbarkeitsmodifizierern usw. zu verstehen ist weitaus wichtiger als die Kenntnisse über die neusten Bibliothekfeatures. Aber das ist ja kein Grund mit einer völlig veralteten Version anzufangen.
 

mihe7

Top Contributor
doch bestimmt neue wichtige Funktionen
Definiere "wichtig" - Java 8 ist auch heute noch weit verbreitet. Wir haben in der Arbeit noch eine Anwendung, die auf Java 7 angewiesen ist und es soll auch Anwendungen geben, die noch unter Java 5 laufen...

Das mit den Versionen ist so eine Sache. Früher gab es nur alle paar Jahre mal eine neue Version, die dann verhältnismäßig viele Änderungen hatte. Dazwischen gab es Updates, die aber keine wirklichen Neuigkeiten enthielten. Das führte bei einigen zu Frust, weil sie auf neue Features ggf. sehr lange warten mussten, insbesondere, wenn ein angekündigtes Feautres auf das nächste Release verschoben wurde. Java war folglich immer "hinterher".

Mit Java 9 änderte sich das. Jetzt gibt es alle drei Monate ein Major-Release, so dass neue Features schneller geliefert werden können. Ein neue Version kann - muss aber nicht - also wirklich neue Features enthalten. Die können sehr klein aber auch größerer Natur sein. Tools kommen auch ab und an dazu (jmod, jlink, jshell, jpackager, Flight Recorder, ...)

Sprachlich hat sich bis Java 15 jetzt nicht irre viel getan: var, Textblöcke und switch-Expressions (hab ich was vergessen, das nicht preview ist?)

In der API hat sich einiges geändert, vieles in Richtung funktionaler Programmierung - die übrigens bereits in Java 8 Einzug hielt. Manches lässt sich damit jetzt kürzer bzw. schöner schreiben.

Ach ja, in fast jeder Version wird eine neue Version von Unicode unterstützt.

Natürlich ist das nicht alles, vieles - ich würde sogar sagen das meiste - sind Änderungen, die unter der Haube ablaufen. Beispielsweise Optimierungen am Garbage Collector, bessere Container-Unterstützung (Docker), etc. etc.

Also, wenn Du Java 8 lernst, wirst Du mit Java 15 keine Probleme haben - umgekehrt auch nicht.
 

mrBrown

Super-Moderator
Mitarbeiter
Alle sechs Monate, nicht alle drei Monate ;)

Früher gab es nur alle paar Jahre mal eine neue Version, die dann verhältnismäßig viele Änderungen hatte. Dazwischen gab es Updates, die aber keine wirklichen Neuigkeiten enthielten.
Es gab zwischendurch immer mal wieder auch neue Features — die sorgten dann für richtig Frust, weil sich das Java 8 Projekt plötzlich nicht mehr mit Java 8 bauen lies, sondern 1.8.0_65_irgendwas brauchte, was weder irgendwer wusste noch durch Build-Tools oder IDEs konfigurierbar war -.-
 

mihe7

Top Contributor
Alle sechs Monate, nicht alle drei Monate ;)


Es gab zwischendurch immer mal wieder auch neue Features — die sorgten dann für richtig Frust, weil sich das Java 8 Projekt plötzlich nicht mehr mit Java 8 bauen lies, sondern 1.8.0_65_irgendwas brauchte, was weder irgendwer wusste noch durch Build-Tools oder IDEs konfigurierbar war -.-
Oops, sechs Monate, ja :) Was waren denn das für Features?

NB: Liegt das an meinem Rechner oder sieht man den normalen Smiley nicht mehr?!?
 

M.L.

Top Contributor
B

BestGoalkeeper

Gast
Ich würde empfehlen, mit Java 8 anzufangen, die Project Compliance aber auf Java 7 zu stellen. So lernst du was Wichtig ist. Irgendwann später kannst du dann den Blick über den Tellerrand wagen.
 

mrBrown

Super-Moderator
Mitarbeiter
Was waren denn das für Features?
Passiert ist uns das mit JavaFX, da kam mit 8u40 ein Haufen neuer Controls (Gut, JavaFX war nie wirklich Teil des JDKs...). Gab aber immer mal wieder irgendwelche kleineren Dinge, die heute eher ein eigenes JEP bekommen würden und nicht einfach in irgendeinem kleinem Update steckten.
 
B

BestGoalkeeper

Gast
Java 7 ist derartig outdated, das ich direkt mit Java 8 anfangen würde. Sonst findet man Beispiele und wundert sich, warum die nicht gehen.
Du weißt gar nicht was "outdated" heißt. ;) Java ist abwärtskompatibel, dass heißt, er wird seine in Java 7 geschriebenen Beispiele mit jedem anderen JDK auch starteten können. Und wenn er Beispiele im Netz findet - mit Streams zum Beispiel - dann lohnt es sich darüber nachzudenken wie diese auch ohne Streams geschrieben werden könnten, wenn ihm etwas daran liegt, sich als Programmierer zu verbessern. Wenn der Anspruch natürlich lautet, ein gutes Scriptkiddie zu werden - dann ist das egal.
 

mrBrown

Super-Moderator
Mitarbeiter
Java ist abwärtskompatibel, dass heißt, er wird seine in Java 7 geschriebenen Beispiele mit jedem anderen JDK auch starteten können.
Nur gehen alle Beispiele, die man irgendwo findet, von Java 8 aus. Man macht sich mit Java 7 nichts einfacher, sondern nur komplizierter. Schön, wenn sein in Java 7 geschriebener Code überall läuft, wenn aber kein Code aus irgendeinem Tutorial läuft ist man trotzdem völlig aufgeschmissen.
Hört ja auch nicht bei der Sprache selbst auf - nahezu alle Librarys setzten Java 8 voraus, wenn man sein Projekt auf 7 hat läuft man damit in Probleme.


Und wenn er Beispiele im Netz findet - mit Streams zum Beispiel - dann lohnt es sich darüber nachzudenken wie diese auch ohne Streams geschrieben werden könnten, wenn ihm etwas daran liegt, sich als Programmierer zu verbessern.

Was ein Unsinn. Mit Java 7 anfange, weil Java 8 „zu viel“ ist, aber gleichzeitig alle Java 8-Features im Detail kennen und umschreiben können...auf solche Ideen kommt man wohl nur als (nicht sehr gutes) Scriptkiddie...
 

White_Fox

Top Contributor
Ist das normalerweise sowieso nicht eher anders herum? Also erstmal lernt man den Umgang mit einer Schleife und iteriert damit über alle Elemente, und später irgendwann dann der ->?
 
K

kneitzel

Gast
Ich würde sogar generell zu der LTS Variante raten. Denn es gibt immer weniger Leute, die mit Java 8 arbeiten und wenn man als Anfänger die gebotene Hilfe nicht nutzen kann, dann ist es doch blöd.

Beispiel aus dem Forum ist z.B. das transferTo vom InputStream, welches leicht mal gegeben wird aber dann mit Java 8 nicht zur Verfügung steht und eben eine kleine Schleife benötigt. Und solche Beispiele finden sich doch immer wieder. Die LTS Variante zu nutzen bedeutet ja nicht, alle neuen Features auch zu nutzen, aber es gibt die Möglichkeit, diese nutzen zu können ....

Und Java 7 würde ich explizit abraten. Es gibt ein paar Best Practices, die man von Anfang an recht schnell nutzen sollte. Try with resources fällt mir da so auf Anhieb ein. Kompatibilität bei Libraries wäre ansonsten auch noch ein Thema - viele Libraries wollen JDK 8 oder höher (Beispiel wäre z.B. MySQL JDBC Treiber) ...
 

White_Fox

Top Contributor
Steckt da hinter den Releases eigentlich noch sehr viel mehr, als daß alle sechs Monate alle getesteten Gitzweige im Master zusammengeführt und dieser Repositorystand veröffentlicht wird?
Abgesehen von den LTS-Versionen natürlich...
 

httpdigest

Top Contributor
Ja. Es gibt Preview-Features, die man explizit einschalten kann. So etwas gab es davor auch nicht. Früher hat man dann einfach 5 Jahre auf die nächste Java Version gewartet und hoffentlich war das Feature dann sinnvoll umgesetzt.
Jetzt versuchen sie, mit Preview-Features und dem neuen Relase-Modell auch "Feedback" von der "Community" einzuholen und diese Features über mehrere Phasen zu finalisieren.
 

Neue Themen


Oben