Imagine a bacon-wrapped Ferrari. Still not better than our free technical reports.

9 Java Champions on Java 9: Part 2

java-champion-java-duke

That’s right, in an overly cheesy and interesting style, we’re asking 9 Java Champions for their opinions and views on the upcoming Java 9 release scheduled for later this week. Last time around we asked Rafael Winterhalter, Martijn Verburg, Trisha Gee and Dr. Heinz Kabutz for their responses to our questions. This time, we’re completing our set of 9 Java Champions with five more Java luminaries in our industry. I caught up with Ben Evans, Henri Tremblay, Mario Torre, Bruno Souza and Simon Ritter to hear what they had to say:

1. What is your favourite feature of Java 9?

<Ben Evans> VarHandles – the next step in evolving the runtime environment for the next decade and isolating the internals.

<Henri Tremblay> Deprecated. I love the fact that we finally get rid of old and terrible things. Immutable Collections (XXX.of()) are close behind

<Mario Torre> My favourite feature of Java 9 is… Java 10! Seriously, being a JDK developer myself, I think the options that modular JDK is giving us to optimise the runtime are fantastic, despite all the controversy that Jigsaw may have caused. The JEP 193 (Variable Handles) goes in this direction too, so this is probably another good one. As a tool developer I will probably use the JEP 259 (Stack Walking) often.

<Bruno Souza> I love JShell and Jigsaw and there are some other small improvements that are cool, but my favorite feature is how Java 9 got a wide community involvement. Even the problems we had were a great way to get more community involvement. So, my favorite feature is the one is easily overlooked, quickly forgotten, but makes all others possible: the 3 layers of openness that makes community participation. The JCP specifications and compatibility process, the open source license of OpenJDK and the JEPs as an open, collaborative process that makes the license really come alive.

<Simon Ritter> I have two: searchable Javadocs and effectively final variables in try-with-resources. Sometimes it’s a hassle that you already have a reference to a resource but you need to assign it to another variable to be able to use it in a try-with-resources block. One minor pain point fixed in JDK 9.

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?

<Ben Evans> Unfortunately – 6 / 9. I know that this is a very necessary release, but I think the development of Jigsaw has suffered from considerable over-reach. It works great as a modularisation for the JDK itself, but it doesn’t really shine as a modular system for applications, and the lack of versioning of modules basically hamstrings it. Ironically, the just-announced release model would potentially have worked very well for Java 9 – by allowing the modularisation of the source code and then of the JDK itself to proceed as separate releases. It’s just a shame we didn’t get the faster release cadence sooner.

<Henri Tremblay> 7/9. In fact, you would have asked me 2 months ago, I would probably have given a 3. But they listened to the community, so I’m boosting their rate a little because of that. I’m still a bit unhappy about jigsaw. Asking the entire open source community to upgrade their frameworks without any direct help nor a working build system was a bit harsh. Especially when the feature has no direct benefits to application developers. Of course it does under the hood but not directly.

<Mario Torre> 8+ I would say. Everyone involved with the release has done a terrific job really, given everything that counts they did really well. It was not just a difficult release, they have done well with the community, which is what counts more for me. Probably Jigsaw could have been handled better in the JCP, there should have been better interaction from the beginning, but this was a very monumental project, and most people that didn’t track this closely often fail to see that. Also, the recent news about the community involvement, releasing the JDK more often, opening up even more of the infrastructure, like offering GPL based builds as opposed to the closed “can’t reverse engineer that” builds they were offering before (which made life very difficult to external contributors working on Jigsaw for example), all this is a direct consequence of the work done in 9, and will be very visible going forward. This should not be underestimated.

<Bruno Souza> I’d give a 9. It may seen contradictory, but the reason for a 9 is because of the problems and controversies that happened. The only time you can really judge how well someone does is when there are problems and mistakes, and we can see how they were handled. And the results are outstanding: everyone, from all sides of the community, have very positive feelings about Java 9.

<Simon Ritter> I’ll give them an 8. Sure, you can argue that the release has been delayed more than once but I think it’s better to have the conviction to delay the release and get it right rather than simply making a specific date. I don’t think anyone can argue that the quality of the product that Oracle delivers for the JDK is very, very high.

3. If you could replace any feature in Java 9 with a different feature, what would it be?

<Ben Evans> I would not have G1 as the default collector. The Oracle team have done some great things with it, but in my opinion it’s just not ready to be default. Again, if the new release process had been in play sooner, perhaps we could have waited until 18.3 or 18.9 to make it default. Too many migrations to G1 fail in my experience, and I am concerned that there will be some high-profile failures and bad press due to this enforced change.

<Henri Tremblay> I would have replaced a lot a little things for value types

<Mario Torre> Generally I think the feature count is not that important, and this version especially is an enabler for things that will come, it has what it should (which is already a very good set anyway) and everything else will come soon with the fast release schedule we are about to experience, in fact as soon as things are getting ready over time, and not anymore every gazillion years waiting for a major release!

<Bruno Souza> I’d trade any feature for the implementation of the (recently re-announced) time-driven “train” releases. Would I trade even Jigsaw for 6 new Java releases in the last 3 years? Oh yes! But, it’s great to look for the future, and I’m very happy that we are again considering this. Jigsaw was a major undertaking, and it is understandable that it could not fit the train model, but I think Java will be much better off if we are able to implement that.

<Simon Ritter> I don’t think there is anything I would replace. I think the set of features in JDK 9 has been well thought out and, with the new release cadence moving forward, we’ll have access to new features in a much more timely manner now.

4. Will you be migrating to Java 9?

<Ben Evans> For greenfield, quite possibly, if the use case fits. For existing apps, unless there’s a compelling reason (e.g. large heaps that are mostly strings and will benefit from Compact Strings, or large heaps where neither Parallel or G1v8 have acceptable performance), then probably not. None of the 8 – 9 migrations I’ve been involved with have been pain-free, so there has to be clear benefit to a project to get me to want to take the pain.

<Henri Tremblay> Since I’m a framework developer, I have no choice. If I was an application developer, I wouldn’t for many years. I have features to develop, I don’t want to fight with it.

<Mario Torre> As a matter of fact I’m already using 10 ;) But you know how things are in the industry, we officially just barely dropped support for 6, so adoption may be slower than I would like.

<Bruno Souza> Yes! One thing Oracle did very well was to get people to migrate. I think it is amazing how the last 2 releases we saw a larger and larger adoption of new versions.

<Simon Ritter> I don’t write production code, but I am in the process of moving the demos I have to JDK 9. Part of that is so that I can use the experience to share with developers when talking about how to use JDK 9 effectively.

5. Describe Java 9 in 3 words.

<Ben Evans> Necessary engineering work

<Henri Tremblay> Painful for frameworks

<Mario Torre> Jigsaw Falling Into Pieces. Let me see, 0, 1, 2, 3 words… oh, there maybe an off
by one somewhere in there I think…

<Bruno Souza> Community Involvement Rocks!

<Simon Ritter> Jigsaw puzzle finished

Thanks for reading! Don’t agree with our champions? Give your opinion in the comments section below!