“Developers will see Java 11 as a better, cleaner implementation of the features they use in Java 8”
Are you ready for JAX London this October? We talked to two speakers from this year’s program to find out what they think about Java’s new release cadence, what’s still missing, their favorite developer tools, and more.
JAXenter: How do you feel about the new six-month release cadence for Java? After past delays, do you think it’s too much (or too soon) to have two feature releases per year?
Peter Lawrey: I feel a 6-month release cycle is a significant improvement. I suspect most people find it confusing and it puts them off upgrading. However, in time we will see greater adoption of these releases between Long Term Service releases.
The advantage of this approach is that releases are by date instead of a feature set. Anything not ready by that date doesn’t make the release. The downside is that you can’t plan for a particular feature to be available in a specific release (unless it is already available)
Simon Ritter: I think the idea of a faster release cadence is, in principle, a good idea. Often developers have been frustrated by the slow progress of Java (both the language syntax and the core libraries) due to the long time between releases (since JDK 5 this has ranged from just over two years to just over four and a half). A faster, predictable release schedule means access to new features more quickly. The downside of this is how users approach deployment. Do they switch JDK every six months, every year or just for what Oracle are classifying as Long Term Support releases (but only if you pay)?
Whilst JavaFX is popular with many people, it never really gained critical mass as a core part of the JDK.
JAXenter: Have you migrated to Java 10 yet?
Peter Lawrey: We have tested with Java 9 and 10 and found some issues which have been fixed in the Java 11 early access. Most likely we will not migrate before Java 11.
Simon Ritter: I have, but that’s not a significant data point! All my code is used for demos to show people how to use new features (like local variable type inference) so I always make sure I’m using the latest version. For most of my personal projects, I’m still running JDK 8.
SEE ALSO: How do we define Java?
JAXenter: If you could replace any feature in the current release with a different one, what would that be?
Peter Lawrey: Java 10 doesn’t have many new features, though that is to be expected coming just 6 months after Java 9. Only time will tell how useful the use of var will be in improving readability.
Simon Ritter: Tough question. I’ll be contentious and say I’d rather have value types, which will provide a lot of performance and clearer code benefits than local variable type inference. Adding var to Java is never something I’ve felt myself needing in the past.
JAXenter: Stephen Colebourne told us at last year’s JAX London that “Java 8 will satisfy us for a good few years until there’s something really big and important.” Can Java 11 meet those expectations?
Peter Lawrey: Java 9 to 11 feels like small but significant housekeeping for how the JVM works. I believe this had to happen, but for me they don’t have any really compelling features. Most likely, developers will see Java 11 as a better, cleaner implementation of the features they use in Java 8.
Simon Ritter: No. The JDK 11 release contents are pretty much locked down now as it just entered the ramp-down phase. If you look at the list of JDK Enhancement Proposals (JEPs) that will be included there is only one for the language, which is an extension of local variable syntax to Lambda expressions. Considering Lambdas already have type inference, the only use of this is if you wanted to include annotations on Lambda parameters. Most of the changes to the core libraries are the removal of the java.se.ee aggregator module and its components (like java.corba, java.bind and java.xml.ws). Hardly compelling reasons to migrate.
JAXenter: Speaking of Java 11, how do you feel about the fact that JavaFX will be decoupled from the JDK?
Peter Lawrey: Decoupling libraries which have specific use cases is a good thing. Java FX is one of these.
JAXenter: How do you feel about modular Java? Do you prefer Jigsaw or Maven?
Peter Lawrey: I feel modular Java is a significant improvement for the JVM. However, I feel it will take some time before it is widely used in other libraries. When most developers are on Java 11+, Jigsaw could be the standard way to package libraries.
Simon Ritter: We had to have modular Java. If you go back to JDK 1.0, there were only 211 classes in the core libraries. In JDK 8, there are over 4,500. We needed to organize this rich set of functionality in a more logical and configurable way. For me, it’s not a question of Jigsaw or Maven (maybe Jigsaw or OSGi). The developers of the Java Platform Module System did a great job; however, I would have preferred to see them focus just on modularizing the JDK and letting people use other frameworks on top of that (like OSGi) to modularize applications.
JAX Magazine: What is still missing from the latest Java versions? What are the issues that require more attention?
When most developers are on Java 11+, Jigsaw could be the standard way to package libraries.
Peter Lawrey: We need more rounds of Project Coin style improvements. There is still too many gotchas and quirks for developers which have been addressed in other languages like C# or kotlin.
Simon Ritter: From my perspective, nothing is missing. There’s always more that can be added (like value types). I’d like to see some of the bigger OpenJDK projects deliver; Amber for less boilerplate code, Valhalla for value types and Loom for fibres.
JAXenter: Why do you think that Java has maintained its dominant position as one of the top programming languages for such a long time? What does programming in Java offer to developers and organizations?
Peter Lawrey: It’s simplicity. It takes less time to feel you have mastered all its features. Less features means less corner cases. A large market place means developers can more easily find work, and organizations can more easily find the developers they need.
Simon Ritter: James Gosling famously described Java as a ‘Blue collar programming language’, and that is spot on. It’s a platform that was designed to get the job done. There are many other languages with different benefits but Java seems to provide a lot of what developers are looking for. The other really key benefit for Java is the JVM. Even setting platform neutrality aside the performance and reliability benefits of a managed runtime are what gives Java much of its strength and appeal.
JAXenter: What is your favorite framework or tool for Java?
Peter Lawrey: I am a fan of IDEs in general and IntelliJ in particular. Many developers still use text editors which are easier to get started but not as efficient or effective.
Simon Ritter: I’m really in the minority, but I particularly like NetBeans as an IDE. IntelliJ seems to have taken over as the most popular from Eclipse, but I still find NetBeans has everything I need to develop code quickly and easily. I’m hoping that with Oracle contributing it to the Apache Foundation that it will continue to be developed and keep up with the faster release cadence of the JDK.
Simon Ritter will deliver one talk at JAX London 2018, in which he takes a look at how the Java platform is evolving with the introduction of big features like the Java Platform Module System (JPMS) in JDK 9, local variable type inference in JDK 10 and dynamic class file constants in JDK 11.
Peter Lawrey will deliver one talk at JAX London 2018, where you will learn how to design a high-performance blockchain in Java.
run fast for your mother