lassedesignen - Fotolia
SAN FRANCISCO -- While Oracle has committed to a faster cadence for releasing Java technology every six months, the company also is making sure to maintain a pipeline of new technology that's ready to go in each release.
The next major release of Java, known as Java 18.3, is scheduled for March 2018 and will feature some of the innovations coming out of projects Oracle is currently working on that will affect the future of Java.
During his keynote at the JavaOne 2017 conference, Mark Reinhold, chief architect of the Java platform group at Oracle, identified four projects the company is working on that will bear fruit for Java 18.3 and subsequent releases.
Four projects will affect the future of Java
According to Reinhold, Project Panama is about foreign function interface data-layout control. It seeks to improve the connection between Java and native data and native code. The project focuses on interconnecting the Java Virtual Machine (JVM) and native code -- a key concept for the future of Java. A description of the project on Oracle's website said it is about enriching the connections between the JVM and well-defined but "foreign" or non-Java APIs, including many interfaces commonly used by C programmers.
The goal of Project Valhalla is to explore advanced Java Virtual Machine and language features, such as value types and generic specialization.
Meanwhile, Project Amber is about right-sizing language ceremony, he said. It's about delivering smaller, productivity-oriented Java language features, such as local-variable type inference, enhanced enums, Lambda leftovers and more.
And Project Loom is aimed at bringing continuations and new features known as fibers to the Java platform to simplify concurrency for developers. Reinhold said Project Loom has not yet been proposed, but is currently in discussion as an effort to affect the future of Java for concurrent programming.
Solid case made for mature integration
According to Charlotte Dunlap, an analyst with GlobalData, "Many of Oracle's announcements were actually preannouncements. However, Oracle made a solid case for how its mature integration, SOA and API management technologies will enable the next wave of Oracle's DevOps technologies."
Regarding Project Amber, Brian Goetz, a Java language architect in the Java platform group at Oracle, said Java has a reputation for being "a bit boilerplate-intensive," and it takes a little too much code to do a lot of common tasks.
"So, Project Amber is a collection of smaller features that are aimed at reducing the overhead or ceremony of things that we do every day -- streamlining everyday coding, but also making code more readable and more reliable," he said.
These are features that can be delivered over time and are a good fit for the programming models that are popular in the cloud, such as functions as a service, or reactive event-based systems, like message-based systems or actors, Goetz said.
Amber adds variable type inference
Brian GoetzJava language architect at Oracle
Meanwhile, a subproject of Amber is called local variable type inference, which Goetz said is a feature that has been available in a number of other programming languages. And although Java has had type inference for many years, it's being expanded.
"Type inference is basically just the compiler figuring out the type of something without you having to write it down," Goetz said. "It can make code more readable by getting unnecessary information out of the way. And this next iteration is extending that to the way we declare local variables."
This feature has been committed to Java Development Kit 18.3 and will be in the next production release of Java in March.
However, a much bigger feature in Project Amber, known as pattern matching, has been historically associated with functional programming languages, Goetz said.
More recently, it has been adopted by object-oriented programming languages, like C# and Scala. "We think it's a really good fit for Java," Goetz noted. "It has the ability to simplify the kind of code where you have to do multiway conditional operations."
Project Loom to ease app maintenance
Finally, as described in Oracle software engineer Ron Pressler's call for discussion about the initiative, Project Loom is an effort to provide an alternative implementation of threads, managed by schedulers written in Java, that preserve the same programming model of ordinary Java threads, but offer drastically improved performance and a smaller footprint.
According to the Project Loom proposal, "Project Loom's mission is to make it easier to write, debug, profile and maintain concurrent applications meeting today's requirements. Threads, provided by Java from its first day, are a natural and convenient concurrency construct (putting aside the separate question of communication among threads) which is being supplanted by less convenient abstractions because their current implementation as OS kernel threads is insufficient for meeting modern demands, and wasteful in computing resources that are particularly valuable in the cloud. Project Loom will introduce fibers as lightweight, efficient threads managed by the Java Virtual Machine, that let developers use the same simple abstraction but with better performance and lower footprint."
Guide to JavaOne
Performance key for Java 9
Talking about Java EE 8