Oracle today announced that Java 11 (18.9LTS) is now available in production.

In this article, we’ll take a look at what Java 11 is, what’s special about it, and whether to upgrade to Java 11.


The first JDK version available for download has been changed to Java SE 11 (LTS), where LTS stands for long-term Support.

The major differences between Java 11 and Java 9 released in September 2017 and Java 10 released in March 2018 are: In terms of long-term Support, Oracle said it will provide strong Support for Java 11 through September 2026.

Above is an Oracle published Support Roadmap for each version of the JDK. The official release dates and support plans for Java 6-java 12 are listed along the way.

As you can see, Java 9 and Java 10 are not long term supported prior to Java 11, and the last long term supported release was Java 8, which will be supported until March 2025.

Long-term support: Indicates that Oracle provides long-term patch and security support.

The next release with long-term support will be Java 17, which will be released in 2021.


In terms of new features, the release of Java 11 provides 17 Jeps (JDK Enhancement Proposal)

Here are all the new features that Oracle has announced for Java 11. Some of the highlights are:

ZGC: Extensible low-latency garbage collector

ZGC is a garbage collector that claims to guarantee pauses of no more than 10MS per GC and a throughput reduction of no more than 15% compared to the current default garbage collector G1.

Epsilon: Garbage collector that does nothing

Java 11 also adds a special garbage collector, Epsilon, called the “no-op” collector, which handles memory allocation without implementing any actual memory collection mechanism. In other words, it’s a garbage collector that doesn’t do garbage collection. This garbage collector is seemingly useless and can be used primarily for performance testing, memory stress testing, etc. The Epsilon GC can be used as a comparison to measure the performance of other garbage collectors. At the very least, the Epsilon GC helps to understand the interface to the GC, leading to a more modular JVM, Martijn said.

Enhanced var usage

Local variable type inference has been added to Java 10, allowing you to define local variables using VAR. Although this feature has been criticized by many, Java continues to enhance its usage. In Java 11, var can be used as a local variable declaration for Lambda expressions.

Remove Java EE and CORBA modules

Back in the release of Java SE 9, Java indicated that it would remove Java EE and CORBA modules in future releases, and this move has finally been implemented in Java 11. Java EE and CORBA modules have finally been removed.

The HTTP client is further upgraded

The HTTP Client API was standardized in JDK 9 and then updated in JDK 10 through JEP 110. In this update list for Java 11, further updates are available with JEP 321. The API provides non-blocking request and response semantics through CompleteableFutures, which can be used in combination to trigger the corresponding action. JDK 11 completely rewrites this functionality. It is now easier to trace the flow of data between request and response publishers at the user level and the underlying socket, reducing complexity and maximizing the possibility of reuse between HTTP / 1 and HTTP / 2.

Whether to upgrade or not

In August 2017, the JCP Executive Committee proposed changing the frequency of Java releases to once every six months.

In September 2017, Java 9 was released. In March 2018, Java 10 was released. In September 2018, Java 11 was released.

Most people still use JDK versions Java 8 or below, and some companies even use JDK 1.6 in their production environments.

So, should companies and developers upgrade and learn Java 11 in production and development environments?

For the enterprise

For enterprises, it is still necessary to upgrade the JDK version in production to Java 11. There are two main reasons:

1. Oracle provides long-term support for Java 11, which enterprises can use with confidence. And the next long-supported version will be released in three years, which is a long time.

2. Java 11 does offer some nice features, not least the ZGC, an epoch-making garbage collector. The advantages will not be repeated. With ZGC, JVM performance bottlenecks can be broken.

For developers

On the coding side, Java 11 isn’t as dramatic as Java 8, which offers functional programming capabilities, which is a big reason many developers are learning Java 8.

However, Java 11 is not entirely without improvements, at least in the new version, Java developers can finally get rid of the old HttpURLConnection. The new HTTP API provides support for industry-leading standards such as HTTOP/2, providing a streamlined and user-friendly API interface.

So, to sum up, upgrading Java 11 is necessary for both enterprises and developers, at least much more so than Java 9 and Java 10. As for how necessary this is, the authors offer a simple explanation:

If your current JDK/Java version is lower than Java 8, upgrade to Java 8 first.

If your current JDK/Java version is higher than Java 7, consider upgrading to Java 11.

Of course, you can jump directly from Java 6 to Java 11.

Which version of the JDK/Java are you using? Are you ready to learn and use Java 11?

So please long press the QR code to follow Hollis

Forwarding moments is the biggest support for me.