Java 11, which will be released this month, is the second and final major release of Java this year, following Oracle’s new schedule of putting out a major release every six months.
According to the company, one of the goals of this new release schedule was to be able to deliver new features faster. Oracle also wanted to reduce the effort needed to upgrade to newer versions. So far, the company feels that this new schedule is working well, according to Donald Smith, Senior Director of Product Management for Java SE at Oracle.
“JDK developers are focusing on delivering high-quality features rather than worrying about meeting arbitrary deadlines or risk facing multi-year delays,” said Smith. “JEPs that might have been rushed into JDK 10, if the next version was years away, are instead being delivered with JDK 11.”
Pushing features that are not quite ready to the next major release is not as big of a deal when that next major release is only a few months away.
Oracle claimed that while it’s still too early to tell, it has found anecdotal evidence that the migration from Java 9 to Java 10 has been straightforward. According to Smith, early adopters reported that updating to JDK 10 has been a “non-event.” In addition, the transition to the early access release of Java 11 has been a smooth one.
Java 11 will deliver Oracle’s final goal of the new release schedule, which is to provide stability for deployments of Java applications, with reliability and long-term availability being valued over new features.
Java 11 is the first Long Term Support (LTS) release in this schedule, meaning that Oracle will be providing security and bug-fixing updates for Java 11 until at least 2026, which is something that it did not do for Java 9 and 10, which were immediately superseded by the next release.
The next LTS release after Java 11 is not scheduled to be released until September 2021. According to Smith, these LTS releases “enable enterprises wanting a slower pace to migrate from one well supported Java SE LTS release to the next at their own pace.”
Oracle is also offering Oracle Java SE Subscriptions, which is a low-cost way of obtaining Java SE licenses and support for the systems that they need, only when they need them. This makes it easier for developers to get access to performance, stability, and security updates for Java SE 6, 7, 8, 11, and later versions, Smith said.
In terms of features, Java 11 will add 17 new Java Enhancement Proposals, according to Smith. The new features are as follows:
- Nest-based access control
- Dynamic class-file constraints
- Improve Aarch64 Intrinsics
- Epsilon: A No-Op Garbage Collector
- Remove the Java EE and CORBA Modules
- HTTP Client (Standard)
- Local variable syntax for lambda parameters
- Key agreement with Curve25519 and Curve448
- Unicode 10 support
- Flight recorder
- ChaCha20 and Poly1305 cryptographic algorithms
- Launch single-file source-code programs
- Low-overhead heap profiling
- TLS 1.3 support
- ZGC: A scalable low-latency garbage collector (Experimental)
- Deprecate the Pack200 Tools and API
“With every six-month release, developers have the opportunity to take advantage of new enhancements on a more predictable and digestible scale,” Oracle said. “This is much faster than previous model, which forced developers to wait anywhere from two to three years to see some changes, and then there were many that needed to be adapted to.”
Developers can download Java SE 11 Early Access prior to the release to get acquainted with some of the new features. Dependencies may need to be updated prior to trying it out, as popular open-source libraries are regularly updated by the Java community to make them work better with new Java releases, Oracle explained.
Oracle is cautioning developers to watch out for and avoid using deprecated APIs in code and dependencies. Compilation warnings will be given when there are deprecated APIs and Java 9 and later include a tool called jdeprscan, which helps identify issues in one’s code as well as in third-party Java libraries.
For example, Java 11 removes the deprecated Java EE and CORBA APIs so developers using those APIs need to switch to their corresponding standalone modules and libraries. Additionally, because JavaFX is no longer bundled with the Oracle JDK, developers should look into using standalone OpenJFX libraries as a replacement.
According to Smith, developers that are planning to move to Java 11 from Java 8 can get started by evaluating their code using Java 10 first, and then reading its migration guide, release notes, and other accompanying documentation.
Java’s new release schedule is proving to be a bit painful for some organizations
In theory, having two major releases every year sounds great, but some companies are struggling to adjust to this new schedule.
Though Oracle claims that transitioning to newer versions has been smooth, Brandon Donnelson, product architect of GXT at Sencha, a provider of cross-platform tools for web developers, finds that the new release schedule has been a bit painful.
Up until this new release schedule, Java moved pretty slowly. Now it feels like it is really starting to take off, Donnelson said.
From what he has seen, there are a lot of groups that want to upgrade to the latest version, but are being held back because the toolchain has not yet caught up.
Many organizations have a lot of investment in their current platforms, which depend on a certain toolchain and have dependencies to factor in, her explained. So while a company may want to upgrade to take advantage of new features, such as type inference, it may not be feasible.
“It took a while for Java 8 to catch on,” Donnelson said. “And the enterprise world is always behind anyway.”
Even though some organizations are being held back, there are still plenty that want to jump right into the newer releases.
Donnelson compares Java to Android upgrades in terms of its fragmentation. There are several different versions of Android currently in use, similar to how there are some folks that will want to use Java 11, while some will remain on Java 10, Java 9, etc.
“To upgrade your shop to the latest version twice a year might be expensive for some shops,” Donnelson said. He explained that some large projects may take half a year to completely upgrade.
He suspects organizations might be a bit timid in upgrading at first until watching a few more releases come out to see that the “Java ship” is sailing smoothly.
“I think folks want it, but I don’t think — at least at the enterprise level — they won’t be able to move it as fast as they’re releasing at first,” Donnelson said.
One thing that is nice about the new release schedule is that pre-releases are available, so developers can test out the new release in advance, rather than having to wait for it to come out, Donnelson explained.
Being able to put new releases into the staging process could be nice, Donnelson said.
According to Donnelson, the features that will make it the most enticing for developers to upgrade to newer versions of Java, such as 9, 10, 11, are type inferences and syntactic changes. Those make writing Java more like dynamic languages such as C and C#, which already have type inference, which makes the language more readable since it’s not so busy.
“I think those are benefits to come that would attract folks to move,” said Donnelson. “I mean, there’s other features that kind of tickle hot spots within the development strategy. There’s lots of ways to use Java so there’s different features for that.”