Kieran France Kieran France is a programmer for IDRSolutions in charge of internal Java testing. In his spare time he enjoys tinkering with gadgets and code.

Java versions and features

1 min read

Java logo

Java features we are looking forward to using

One of the down sides to supporting older versions of Java is not being able make use of the newest JDKs as from their release dates. Keeping in mind the various java features by version can prove very useful. There are many Java features we are looking forward to using when we increase our minimum supported version.

Recently we have been talking with our users to determine which minimum Java version we should support in the coming years. Whilst reviewing our minimum version we wanted to keep in mind each versions support duration, the number of people still using a given version, and what new features our developers will have access to.

When you spend time working to maintain support for an older version of Java it can be easy to forget which features are introduced in each version. As we currently support Java 8 (at the time of writing) we found it useful to review all the versions from 9 onwards and note down which new features were added to each. Now we have completed this we wanted to share the features in each of these versions that we are excited to get our hands on (leaving out preview features due to their impermanence).

Java 9 features

  • [JEP-269] Collections Factory Methods (e.g. List.of(a, b, c))
  • [JEP-266] Stream API improvements
  • [JEP-251] Multi-Resolution Image API
  • [JEP-213] Interfaces private methods
  • [Multiple JEPs] Project Jigsaw: Java Modules and Multi-Release Jar Files

JDK 9 was released on 21st September 2017

Java 10 features
  • [JEP-286] Local-Variable Type Inference: var-keyword
  • [JEP-307] Parallel Full GC for G1

JDK 10 was released on 20th March 2018

Java 11 features
  • String utility methods
    • Includes repeat(), isBlank(), strip(), lines()
  • Files utility methods
    • Includes Files.writeString and Files.readString(path);
  • [JEP-323] Local-Variable Type Inference (var) for lambda parameters
  • [JEP-321] New HttpClient API

JDK 11 was released on 25th September 2018

Java 12 features
  • String utility methods
    • Includes indent(), transform()

JDK 12 was released on 19th March 2019

Java 13 features
  • Several features but all in internal to JDK or in preview so we can not currently rely upon.

JDK 13 was released on 17th September 2019

Java 14 features

JDK 14 was released on 17th March 2020

Java 15 features
  • [JEP-378] Text-Blocks / Multiline Strings

JDK 15 was released on 15th September 2020

Java 16 features

JDK 16 was released on 16th March 2021

Java 17 features
  • [JEP-409] Sealed Classes
  • [JEP-415] Context-Specific Deserialization Filters

JDK 17 was released on 14th September 2021

Java 18 features

JDK 18 was released on 22nd March 2022

Java 19 features
  • Several features but all in internal to JDK or in preview so we can not currently rely upon.

JDK 19 was released on 20th September 2022

Java 20 features
  • Several features but all in internal to JDK or in preview so we can not currently rely upon.

JDK 20 was released on 21st March 2023

Java 21 features

JDK 21 was released on 19th September 2023

Java 22 features
  • [JEP-456] Unnamed Variables & Patterns

JDK 22 was released on 19th March 2024

What version are you currently working on and what features are you looking forward to using?


Our software libraries allow you to

Convert PDF to HTML in Java
Convert PDF Forms to HTML5 in Java
Convert PDF Documents to an image in Java
Work with PDF Documents in Java
Read and Write AVIF, HEIC, WEBP and other image formats
Kieran France Kieran France is a programmer for IDRSolutions in charge of internal Java testing. In his spare time he enjoys tinkering with gadgets and code.