InfoQ Homepage News Looking Forward to Java in 2018
Looking Forward to Java in 2018
Dec 30, 2017 3 min read
by
Write for InfoQ
Feed your curiosity. Help 550k+ globalsenior developers
each month stay ahead.Get in touch
As 2017 draws to a close, let's look at the future of the Java platform in 2018.
We enter 2018 after a year that has brought more change to the Java world than is usual. In part this is due to the arrival of Java 9, albeit almost a year late.
However, over time, this release may come to be seen as less significant than the changes to the release cycle that accompanied the new version. This change to the release process means that there will be not one, but two, new releases of Java in 2018.
The first will be known as Java 10 with the second release being Java 11. Although this naming scheme may seem like the existing status quo, it was only achieved after a significant public debate and an eventual consensus being reached.
As a result of this switch to a strict time-based cadence, the content of each Java feature release is expected to become smaller in scope than has historically been seen until now. For Java 10 in particular, this means that the number of features is fairly small.
InfoQ previously covered the major items and since then only minor (Additional Unicode Extensions), tidy-up (removal of the native header generation tool and provide default root CA certificates), experimental (Graal - a Java-based JIT compiler) or currently-niche features (support for heterogeneous memory architectures) have been added to the release.
For Java 11, the set of features being considered for the release is even more nebulous, with only these few features currently in scope:
- Epsilon (a reference implementation of a null GC algorithm)
- Dynamic Class File Constants (a platform feature, primarily of interest to library writers and invokedynamic hackers)
- Runtime tracing of JIT compilation events
This list will surely fill out as the release date approaches, but one feature that is noticeable by its absence is Java value types. This is perhaps unsurprising, as value types are a major change to the Java language and runtime and offer a complete re-imagining of aspects of the Java type system, including generic types.
The current prototype, while working, is still a very long way from being delivered, and in its current state is suitable only for low-level platform hackers and those comfortable hacking with reflective or MethodHandle-based tools. It seems quite inconceivable that, given the current state that value types will ship as part of Java 11, although Oracle has not made any public comments about when they expect value types to arrive.
However, if value types are not delivered as part of Java 11 then this would have the knock-on effect that the first long-term support release to include value types would not then appear until at least September 2021.
At time of writing it is also unclear as to whether the proposed data classes feature will appear in Java 11 either. As described by Brian Goetz, the Java language architect:
Data classes are about disavowing complex, indirect relationships between a classes representation and its API contract; by doing so, the compiler can fill in common class members.
There is some similarity between the proposal and Scala's case classes, but Goetz makes it clear that the design space being addressed by data classes covers a range of possibilities and the overall semantic meaning of the data classes feature is deeper than it might appear. The current conception of data classes makes them deeply connected to the pattern matching feature also in development but they could potentially be delivered in separate releases.
Related to both features is the possibility of an enhanced form of switch - allowing the construct to be used as an expression as well as a statement.
This feature is relatively small and looks as though it could plausibly be delivered in Java 11, even without data classes or pattern matching but at present it is still only a draft JEP.
The feature-complete date for the eventual September release is in June 2018, so we will have to wait and see for a few more months before the overall shape of Java 11 becomes clear.
This content is in the Java topic
Related Topics:
-
Related Editorial
-
Related Sponsors
-
Popular across InfoQ
-
Anthropic Lead: HTML Increasingly Better Than Markdown at Keeping Humans Engaged in Agentic Loops
-
AWS Launches Blocks, an Open-Source TypeScript Framework Designed for AI Agents to Build Backends
-
Google OpenRL is an Experimental Self-hosted API for LLM Post-Training Fine-Tuning
-
Java News Roundup: Spring Tools, Helidon, Open Liberty, TomEE, JobRunr, Hibernate, Commonhaus
-
AI Is Moving up the Software Lifecycle: from Code Review to PRD Governance
-
Architectural Patterns: Moving Beyond Cloud-Native to Local-First - Insights from Adam Wiggins
-
The InfoQ Newsletter
A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. View an example
