Hello all! It’s time for us to upgrade to Java 11
.
Sometime back Java 11 was launched on September 25, 2018
. Today we got chance to upgrade our JDK to Java11 on my Macbook Pro.
Do you have any of below questions?
- All You Need To Know For Migrating To Java 11
- It’s time! Migrating to Java 11
- A Quick Catch up Before Java 11
- Getting Ready for Java 11
- Introduction to the Java HTTP Client
- What to Expect in Java 11
- What is Java JShell which is in Java 11?
If you have question on any of above topics then you are at right place. Let’s check all new and removed stuff in Java 11.
As you may have noticed we have almost 500+ Java and J2EE tutorials on Crunchify, Java 11 has some major changes
which may break some of the RESTFul service tutorials as Java 11 moved over to Modular System
.
What is Module System in Java 11?
There are quite a few advantages of Module system and my favorites are decrease application memory usage
and fast application startup time
.
Also, in Java 11 total JRE image (downloadable executable) is smaller as Java 11 has removed quite a few Modules and components from CORE binary.
Below Java EE dependencies/APIs removed from Java 11:
- java.xml.bind – this defines the Java Architecture for XML Binding (JAXB) API.
- java.xml.ws – this defines the Java API for XML-Based Web Services (JAX-WS), and the Web Services Metadata API.
- java.xml.ws.annotation – this defines a subset of the Common Annotations API to support programs running on the Java SE Platform.
- java.activation – this defines the JavaBeans Activation Framework (JAF) API.
- java.tranaction – this defines a subset of the Java Transaction API (JTA) to support CORBA interoperation.
- java.cobra – this defines the Java binding of the OMG CORBA APIs, and the RMI-IIOP API.
Please be careful
upgrading your JDK from Java 7 / 8 to Java 11 directly. If you are using any of above dependencies then you need to add those dependencies manually to your project.
NOTE:
Default support for all above dependencies aregone
now and no longer part of Java 11 🙁
There are few more advantages of Java 11
I would say worth trying and worth upgrading to Java 11. Here are advantages:
- Java 11 now supports
TLS 1.3
- There are two new Garbage Collectors
- ZGC
- In ZGC Pause times
don't exceed 10ms
. This is big improvement then previous version. - Pause times don’t increase with heap size 🙂
- You can specify heap size from range MB to TB (Tera bytes). That’s too good.
- ZGC is also concurrent Garbage Collection that means your application threads don’t hang during GC cycle.
- In ZGC Pause times
- Epsilon
- This is experimental Garbage Collector as of now.
- Epsilon also called No-Op Garbage Collector.
- There is no memory reclamation mechanism. That’s wired in my case. That means JVM will shutdown once it reaches XMX size.
- Your application need to perform Manual Garbage collection
- ZGC
- New Application Class-Data sharing functionality which in my opinion it’s great.
- New Heap Profiler for any memory related analysis.
- Do you need default ROOT certification? Then you are in luck. Java 11 provides default certificate for your JVM.
- Have you heard of
JShell
?- It’s Java Shell Tool.
- It’s very nice interactive tool for learning Self Java and provides prototyping functionality for your Java Code.
- This runs on command line.
- With that you can compile and fix any errors.
Oracle is going to stop supporting Java 8 patches
starting January 2019. It’s almost a time. I would suggest to start upgrading to latest Java version soon.
I’ll cover more details on how to add missing Java EE libraries in to next tutorial.