With the Java 9 version on the brink of release, we thought we’d ask 9 Java Champions for their opinions about the Java 9 release. (see what we did there?) In this blog we’ll feature responses from four Java Champions, keep an eye out for the next post featuring responses from the remaining five JCs. This time around we hear from Java luminaries Rafael Winterhalter, Martijn Verburg, Trisha Gee and Dr. Heinz Kabutz. Here’s what they had to say about the upcoming Java 9 release:
1. What is your favourite feature of Java 9?
<Rafael Winterhalter> The JPMS is my favorite feature despite the controversy around it. While it will bring some growing pain, in the long run, it will secure the JVM’s future as a leaner, more flexible platform.
<Martijn Verburg> JShell is the developer feature that I think will be eh surprise favourite of Java developers out there today. I personally always find myself wanting to write a small snippet to prove / disprove some language behaviour or wanting to be able to script in Java. Now I can :-)
<Heinz Kabutz> Variable handles, which allow us to mostly move away from the use of Unsafe and still achieve highly performant concurrent code.
<Trisha Gee> Probably the Convenience Factory Methods for Collections (http://openjdk.java.net/jeps/269). This is a relatively small change to the language but just makes some of the code we write every day so much easier and cleaner.
2. On a scale of 1 to 9 (9 being the best), how would you rate Oracle for their handling of the Java 9 release, and why?
<Rafael Winterhalter> I would give it a 7. In general, I think that Oracle does a very good job in advancing the platform. However, I wished that Oracle had included more library vendors in the process of introducing the JPMS as it induced a lot of work and breaking changes to established software. This is where I think that the JCP has an unfortunate bias towards big vendors such as RedHat or IBM where the majority of open source developers is not really represented.
<Martijn Verburg> 6/9 – Oracle’s issue is that they fire their developer advocacy folks. So a lot of the outreach and education required to make Java 9 fully utilised on day 1 (and the work to fight the FUD) has simply not been able to happen. The somewhat heroic efforts of the Oracle OpenJDK teams to do as much of this as possible and still deliver product is testament to their dedication to Java. It’s just a shame that the business folks don’t see the same thing.
<Heinz Kabutz> 9 – They have tried to do something very difficult, to move over to a more secure infrastructure. They’ve received a lot of criticism, but in the end I think we will be better off with Java 9.
<Trisha Gee> I think I have to give them an 8. I know it’s been delayed multiple times, but I feel like these delays, and the reasons behind them, have been well communicated. The last delay wasn’t even (strictly) Oracle’s fault, but due to the “no” vote on Jigsaw. But on this topic, that’s where I have to deduct a point from Oracle – I feel like they have solicited more opinion from the community with this release than any previous one, but I do feel a bit like they’ve pushed their own agenda for Jigsaw a little more than was necessary. I think modularity will be very useful for the platform going forward, but the implementation chosen and the conflict it has brought to the community has probably had a bigger impact on the Java 9 release than any technical concerns.
3. If you could replace any feature in Java 9 with a different feature, what would it be?
<Rafael Winterhalter> There are of course features I would like to see sooner but they are also more costly to develop. Personally, I do not see too much value in JShell and if it would be so easy, I would rather have seen some refinements in the language such as an easier way of defining Java beans but I think it makes sense to wait for value types to implement these.
<Martijn Verburg> I actually wouldn’t – modularity simply had to be done and everything else can wait.
<Heinz Kabutz> A lot of engineering effort went into the Jigsaw refactoring. We hope that this will pay for itself into the future of Java. It also means that some more modern language features have been pushed into Java 10. Hopefully we will see more interesting new features in the future versions.
<Trisha Gee> Well, I think that’s a bit of an unfair question! Everything that went into 9 will be useful for someone, and a lot of work has gone into its development. Not everyone is going to use everything – for example, I don’t think I’ll use the REPL that much, but I think it’s really great to have it in the language, and a bunch of people will use it. I’m also not going to use a lot of the improvements that went into the graphics side of things, but tools like IntelliJ IDEA can take advantage of improvements like JEP 263.
Also, the stuff I’m really looking forward to probably has a lot more work to be done and wouldn’t be ready for Java 9. I really want to see what Project Valhalla ends up like, for example. If I had to pick a “small” language change I’d like to see sooner rather than later, it would probably be Local-Variable Type Inference. I was never the sort of person who cared about reducing boilerplate in Java, but having seen how much cleaner code can be with lambda expressions and method references (for example) and some of the more succinct code in Groovy and Kotlin, I think this is a good direction for Java to go in.
4. Will you be migrating to Java 9?
<Rafael Winterhalter> Not immediately, but step by step when developing new core features of existing applications or new applications. The JPMS will be most useful once the library landscape has adopted it which will take some time.
<Martijn Verburg> Yes – we’ll be utilising jlink and modularity to have a cut down Java 9 running inside our Daemons that run on our customer’s hosts (we’re an APM vendor). It’s going to be of massive benefit to us.
<Heinz Kabutz> Java versions run out of free updates fairly quickly. It is thus essential for us to keep on upgrading to the latest Java versions. I keep on running into clients who are stuck on Java 7 or even 6 and are either afraid to move to Java 8 or cannot due to some hack that they did years ago that they are now paying for. I will be assisting my customers through training and consulting to move over to Java 9. I’ve been talking about Java 9 features in conference talks and in my courses for over a year already.
<Trisha Gee> All my new projects will be using Java 9, and I will also try to use Jigsaw to make them modular. I’ve also already migrated my last major demo to Java 9, and I’m constantly updating it to take into account updates to libraries for Java 9 (e.g. I’m currently adding Gradle 4.1 as it has Java 9 support). But I’m not working on a massive enterprise application, so it’s easier for me to make the switch. In terms of JetBrains, we already support Java 9 with all the major tools, but since a lot of our development is in Kotlin, I’m not sure when we’ll move to Java 9.
5. Describe Java 9 in 3 words.
<Rafael Winterhalter> A future investment.
<Martijn Verburg> Foundational challenging faster
<Heinz Kabutz> Excellent consulting opportunity!
<Trisha Gee> Jigsaw. Useful. Late :)
Thanks for reading and check back soon when we’ll post responses from our remaining 5 Java Champions!