Software-update: Java 25 LTS

Java logo Oracle heeft Java 25 uitgebracht. Het gaat om een long term support-release die acht jaar ondersteuning krijgt. Java is een van de populairste en meest gebruikte programmeertalen ter wereld. In JDK 25 treffen we zestien verbeteringen aangebracht, die elk hun eigen JDK Enhancement Proposal hebben. Ook zijn er vier toevoegingen die nog in preview zijn en eentje die de status incubator heeft. Uitgebreide informatie over deze uitgave is op deze pagina te vinden, dit zijn in het kort alle verbeteringen:

Java 25 / JDK 25: General Availability

JDK 25, the reference implementation of Java 25, is now Generally Available. We shipped build 36 as the second Release Candidate of JDK 25 on 15 August, and no P1 bugs have been reported since then. Build 36 is therefore now the GA build, ready for production use. GPL-licensed OpenJDK builds from Oracle are available here. Builds from other vendors will no doubt be available soon.

This release includes eighteen JEPs: This release also includes, as usual, hundreds of smaller enhancements and thousands of bug fixes.
Versienummer 25
Releasestatus Final
Besturingssystemen Linux, macOS, Windows 8, Windows 10, Windows 11
Website Oracle
Download https://www.oracle.com/java/technologies/downloads/
Licentietype Freeware

Door Bart van Klaveren

Downloads en Best Buy Guide

17-09-2025 • 15:30

17

Submitter: robin1979

Bron: Oracle

Reacties (17)

17
17
15
0
0
2
Wijzig sortering
Hoe zit het nu precies met het hele licentieverhaal hieromheen. Want er gingen geruchten dat met name het commercieel gebruik enorm duur zou worden en iedereen juist naar gratis open alternatieven zou gaan.
De JDK (waarin proprietary dingen zitten), is gratis voor oudere versies voor commercieel gebruik: JDK8, 11 en 17)), de latere versies zijn gratis voor persoonljik gebruik (en ontwikkelen ermee ook in commercieel verband).
Bij commercieel gebruik, dus niet ontwikkeling stadium, maar productie (ofwel er wordt geld mee verdient, direct of indirect) dien je een Java SE Universal subscription aan te gaan wil je de JDK kunnen gebruiken (buiten enkele andere dingen die in de subscription zitten).

Er is gelukkig ook OpenJDK, wat volledig open source is. (JDK is daarop gebouwd)
dit is 90+% gelijk aan de JDK, qua functies/taal etc. Dus gebruiken heel veel bedrijven dit ipv JDK, om zo de kosten te drukken. (en het werkt prima)

[Reactie gewijzigd door Don Key op 17 september 2025 19:38]

Volgens mij bepaalde jdk8 versies ook betaald voor commercieel gebruik.

en oracle rekent tegenwoordig af per aantal fte in je organisatie, niet het aantal installaties.

Dus met 1 verdwaalde ontwikkelaar die Java gebruikt en 1000 mensen in je bedrijf is het flink afrekenen. Snel overstappen naar andere Java varianten zoals openjdk. Werkt voor de meeste toepassingen prima
Blijf dit belachelijk vinden, voor organisaties als scholen en ziekenhuizen staan die kosten echt totaal niet in verhouding tot de baten.

Vreselijk bedrijf, ver van weg blijven! Ze investeren vooral in juristen, dan hoef je geen goede code te schrijven en kan je toch steenrijk worden met het afpersen middels software licenties.
Gebruik zelf Adoptium en die presteert inderdaad meer dan prima. Er zijn er nog meer verschillende, bijvoorbeeld Amazon heeft er ook eentje. Denk Microsoft tegenwoordig ook eentje die specifiek goed zou functioneren op het cloud omgevingen, maar geen idee of daar in de praktijk daadwerkelijk verschil in zit. Mij lijkt een JDK een JDK maar goed :).
Daar heb je meerdere aspecten in. Je hebt de JavaSE taal en JVM specificaties. Die zijn volledig open en iedereen mag zijn eigen JVM maken met die specificaties. Dat kan weer op 2 varianten de Java Runtime Environment (voor eindgebruikers) en de Java Development Kit (JDK).

Enkel de Oracle JVM kent licentie beperkingen en kosten, maar Oracle is niet de enige die een JVM maakt. Andere zijn volledig gratis te gebruiken. Naast de JavaSE heeft Oracle een aantal uitbreidingen waar je voor moet betalen als je ze commercieel gebruikt. Deze zitten alleen maar in de Oracle JVM.

Dat maakt dit artikel ook verwarrend omdat de taal en JVM specificatie versie 25 uit is. En de JVM bouwers hebben daar allen een nieuwe versie van hun JVM implementatie voor uitgebracht.
Er zijn goede open supported varianten, zelf draai ik bij voorkeur op de Eclipse Temurin variant; die hebben hun versie nog niet gereleased maar dat komt nog wel in september.
klopt, ik had ook niet anders verwacht :)

ik zag al releases voor binaries voorbijschuiven op github. Het zit in de pijplijn.
Je kan volledig open source implementatie gebruiken, dan heb je daar geen last van: https://adoptium.net (Heette eerst OpenJDK heet nu Adoptium). Die releases heten Temurin. Adoptium is onderdeel van de Eclipse Foundation.
Voor een snel overzicht van aanpassingen in de API, zie https://javaalmanac.io/jdk/25/apidiff/24/.
Voor het API verschil tussen deze en de vorige LTS versie (21), die veel bedrijven zullen gebruiken, zie: https://javaalmanac.io/jdk/25/apidiff/21/
Volgens de Tiobe index, TIOBE Index - TIOBE, staat Java inmiddels op plek 4.

Python is volgens deze index nu veruit de meest populaire en toegepaste taal, gevolgd door C++ en C.
Ik gebruik zelf de PYPL index i.p.v. TIOBE om de populariteit in te schatten. Over TIOBE wordt gezegd dat deze minder tot totaal niet betrouwbaar is omdat deze blijkbaar op websites die gaan over X zoekt. Zit je dus met extreem veel oude content die al jaren niet meer relevant is maar wel de resultaten bevuild. Ze geven beide wel een iets ander beeld. Java staat op de laatst genoemde op plek 2 boven C++ wat ik persoonlijk toch iets meer zou geloven.
De structured concurrency is fijn, maar ik vind het toch jammer dat de async invocations maar 1 niveau diep gaan; de tasks binnen zo'n StructuredTaskScope moeten toch direct (synchroon) joined worden. En hoewel dat zich, samen met virtual threads, wel goed leent voor een synchrone aanpak waarbij soms op meerdere parallelle tasks gewacht moet worden, mis je toch de flexibiliteit van een volledig asynchrone aanpak. Wat dat betreft zou async...await syntactic sugar over Future (of zelfs Mono) alsnog welkom zijn (en imo niet te obscuur, iedereen in zowel de JS/TS als de .net wereld is ermee bekend).
Voor zover ik begrijp zijn waaieren die scope's juist uit met hun virtual threads als je ze async gaat starten en eindigen ze automatisch bij joinen. Dat je vaak wil joinen lijkt mij meer een per-case afweging tussen parallel afhandelen of consistency.
Als je nu van JDK 21 LTS naar JDK 25 LTS upgrade, is dit de totale lijst van nieuwe features:

Language Features
  • JEP 447 – Statements before super(...) (Preview) — Allow statements before the superclass constructor call.
  • JEP 456 – Unnamed Variables & Patterns — Introduces underscore _ as a placeholder.
  • JEP 455 / JEP 507 – Primitive Types in Patterns, instanceof, and switch (Third Preview) — Pattern matching enhancements for primitive types.
  • JEP 482 / JEP 513 – Flexible Constructor Bodies — More flexible rules for constructor bodies.
  • JEP 463 / JEP 512 – Compact Source Files and Instance Main Methods — Finalizes and simplifies implicit classes / single-file programs.
  • JEP 476 / JEP 511 – Module Import Declarations — Simplify module declarations by importing other modules.
  • JEP 464 / JEP 506 – Scoped Values — Final API for sharing immutable data across threads safely.
  • JEP 502 – Stable Values (Preview) — New construct for stable cross-thread sharing of values.
Libraries & APIs
  • JEP 454 – Foreign Function & Memory API — Provides a safe, performant API for native interop (became final in 22).
  • JEP 457 / JEP 484 – Class-File API — A new standard API to read/write class files.
  • JEP 459 – String Templates (Second Preview) — Embedded expressions inside string literals.
  • JEP 461 / JEP 485 – Stream Gatherers — Add new intermediate operation to streams.
  • JEP 462 / JEP 505 – Structured Concurrency (Fifth Preview) — Structured handling of concurrent tasks.
  • JEP 460 / JEP 508 – Vector API (Tenth Incubator) — SIMD computation API (still incubating).
  • JEP 478 / JEP 510 – Key Derivation Function API — Cryptographic key derivation support.
  • JEP 470 – PEM Encodings of Cryptographic Objects (Preview) — Standard API for PEM encoding/decoding.
  • JEP 496 & JEP 497 – Quantum-Resistant Crypto Algorithms — ML-KEM and ML-DSA implementations.
  • JEP 467 – Markdown Documentation Comments — Allow Markdown syntax in Javadoc.
JVM, Performance & Tooling
  • JEP 423 – Region Pinning for G1 — Improves JNI performance with G1 GC.
  • JEP 474 – ZGC: Generational Mode by Default
  • JEP 490 – ZGC: Remove the Non-Generational Mode
  • JEP 404 / JEP 521 – Generational Shenandoah — New generational mode for Shenandoah GC.
  • JEP 450 / JEP 519 – Compact Object Headers — Reduce object header size to save memory.
  • JEP 475 – Late Barrier Expansion for G1 — G1 performance optimization.
  • JEP 483 / JEP 514 – Ahead-of-Time Class Loading & Command-Line Ergonomics — Faster startup by prelinking classes and improved ergonomics.
  • JEP 515 – Ahead-of-Time Method Profiling — Collect method profiles early for optimization.
  • JEP 491 – Synchronize Virtual Threads without Pinning — Improves virtual thread scalability.
  • JEP 493 – Linking Run-Time Images without JMODs — Simplifies packaging custom runtimes.
JFR (Java Flight Recorder)
  • JEP 509 – JFR CPU-Time Profiling (Experimental)
  • JEP 518 – JFR Cooperative Sampling
  • JEP 520 – JFR Method Timing & Tracing
Security & Deprecations
  • JEP 472 – Prepare to Restrict the Use of JNI
  • JEP 486 – Permanently Disable the Security Manager
  • JEP 471 & JEP 498 – Deprecate/Warn upon Use of Memory-Access Methods in sun.misc.Unsafe
  • JEP 501 / JEP 503 – Remove the 32-bit x86 Port
Zie voor meer details https://jdk.java.net/25/release-notes en https://www.oracle.com/java/technologies/javase/25-relnote-issues.html


Om te kunnen reageren moet je ingelogd zijn