BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Is Java 17 a Glass Half Full?

Is Java 17 a Glass Half Full?

This item in japanese

Lire ce contenu en français

Oracle recently announced that JDK 17 has entered Rampdown Phase 2.

This phase means the overall feature set is frozen and no further JEPs will be targeted to this release.

The final list of features arriving in JDK 17 is:

Java 17 is the next Long-Term Support (LTS) release, and is due in September 2021.

Oracle's stated opinion is that there's nothing special about LTS releases, and they merely correspond to an Oracle support product and should not be significant to anyone who is not a paying customer that buys support from Oracle.

The Java ecosystem and community, however, has so far not aligned with Oracle's messaging.

There is no evidence that many teams are upgrading their Java version to match the major release number on a six-month cadence. Data from New Relic's customer base (containing tens of millions of production JVMs) indicates that no non-LTS Java version has ever achieved more than a 1.5% market share, and most non-LTS Java versions quickly fall back to the 0 - 0.5% range within a few months of release.

Instead, the market as a whole is continuing to use Java 8 and 11 even if it means moving away from Oracle and relying on another vendor to supply incremental updates of 8 and 11. The two LTS versions are now approaching an even split of market share (with non-LTS versions below the level of statistical noise). This represents a much slower uptake of Java 11 (three years to roughly 50% market share) as compared to the speed with which Java 8 was adopted.

Overall, the features present in Java 17 are broadly following the expected pattern, as InfoQ previously reported on. The unfortunate truth is that of the major projects that have been the major areas of JDK development in the last three years (Loom, Valhalla, Amber and Panama) - none are complete as of the release of Java 17.

This means that the feature set of Java 17 will be more modest than many developers hoped.

For example, The Algebraic Data Types feature (comprising Records and Sealed Types) is complete as of 17. This is a major step forward in terms of data modeling and enhancing the OO capabilities of the Java language. However, the Pattern Matching feature which complements and builds upon algebraic data types is only present as a Preview feature in Java 17 (and only in a fairly rudimentary form at that).

This is only a partial delivery of Project Amber - and Amber has the advantage that the project structure lends itself pretty well to incremental delivery. Projects like Loom and Valhalla - which are much more "Big Bang" in nature - are essentially not present at all in Java 17 (apart from some preliminary groundwork that does not really surface any new user-accessible features).

On a more optimistic note, if the established pattern of the majority only upgrading LTS to LTS continues (and we have no indications that the community will do anything else), then teams who upgrade from Java 11 to 17 will still find plenty of upside. The major features that are likely to be of interest to developers who upgrade are:

  • Switch Expressions
  • Enhanced instanceof
  • Text Blocks
  • Records
  • Sealed Types
  • JFR Streaming
  • Enhanced Modern Cryptography
  • Class Data Sharing
  • Shenandoah and ZGC Garbage Collectors

as well as a great many performance and other internal improvements.

This means that while Java 17 may be a "glass half full" release, it does represent another major milestone in the evolution of the language.

Feature-complete betas are available for download here and the final version of Java 17 is expected to be released on September 14th.

Rate this Article

Adoption
Style

BT