Download Now

Over the past 22 years, Java has grown into a vibrant community that has reached a scale without equal.  Java continues to bring value to developers and to enterprises worldwide.  Thoughtful planning and ecosystem involvement has helped grow Java into one of the most used programming languages on the planet. With more than 12 million developers worldwide running Java, Java continues to be the #1 programming language of choice by software programmers.  Moving forward Oracle wants to ensure Java is well-positioned for modern development and growth in the cloud.

In 2017, Oracle and the Java community announced its intentions to shift to a new six-month cadence for Java meant to reduce the latency between major releases.  At the same time Oracle announced it’s plans to build and ship OpenJDK binaries as well. This release model takes inspiration from the release models used by other platforms and by various operating-system distributions addressing the modern application development landscape.  The pace of innovation is happening at an ever-increasing rate and this new release model will allow developers to leverage new features in production as soon as possible.  Modern application development expects simple open licensing and a predictable time-based cadence, and the new release model delivers on both.

With that said, Oracle is pleased to announce the general availability of Java 10, the first time-bound release as part of the new six-month release cycle.  This release is more than a simple stability and performance fix over Java SE 9, rather it introduces twelve new enhancements defined through the JDK Enhancement Proposals (JEPS) that developers can immediate pick up and start using:

  1. (JEP 286) Local-Variable Type Inference: Enhances the Java Language to extend type inference to declarations of local variables with initializers. It introduces var to Java, something that is common in other languages.
  2. (JEP 296) Consolidate the JDK Forest into a Single Repository: Combine the numerous repositories of the JDK forest into a single repository in order to simplify and streamline development.
  3. (JEP 204) Garbage Collector Interface: Improves the source code isolation of different garbage collectors by introducing a clean garbage collector (GC) interface.
  4. (JEP 307) Parallel Full GC for G1: Improves G1 worst-case latencies by making the full GC parallel.
  5. (JEP 301) Application Data-Class Sharing: To improve startup and footprint, this JEP extends the existing Class-Data Sharing (“CDS”) feature to allow application classes to be placed in the shared archive.
  6. (JEP 312) Thread-Local Handshakes: Introduce a way to execute a callback on threads without performing a global VM safepoint. Makes it both possible and cheap to stop individual threads and not just all threads or none.
  7. (JEP 313) Remove the Native-Header Generator Tool: Remove the javah tool from the JDK since it has been superseded by superior functionality in javac.
  8. (JEP 314) Additional Unicode Language-Tag Extensions: Enhances java.util.Locale and related APIs to implement additional Unicode extensions of BCP 47 language tags.
  9. (JEP 316) Heap Allocation on Alternative Memory Devices: Enables the HotSpot VM to allocate the Java object heap on an alternative memory device, such as an NV-DIMM, specified by the user.
  10. (JEP 317) Experimental Java-Based JIT Compiler: Enables the Java-based JIT compiler, Graal, to be used as an experimental JIT compiler on the Linux/x64 platform.
  11. (JEP 319) Root Certificates: Provides a default set of root Certification Authority (CA) certificates in the JDK.
  12. (JEP 322) Time-Based Release Versioning: Revises the version-string scheme of the Java SE Platform and the JDK, and related versioning information, for present and future time-based release models.

The Java ecosystem continues to be a diverse collection of developers and we welcome their ongoing participation in helping to shape the future of Java.  Please join the OpenJDK project to help move Java forward faster.