JAX London: Some people seem to believe that Node.js might have a chance at overtaking Java in the near future. Can Java really be dethroned? Why/why not?
Markus Eisele: With Java being the number one programming language in the enterprise, it leads to a vibrant ecosystem of tools, standards and methodologies. It isn’t the most concise or most beautiful language, but it can be scaled to large teams and we learned to ensure a decent quality.
To me, it is a natural progression and doesn’t necessarily tell a story about relevance or popularity of Java.
JAX London: What did you think of the fact that Java 9 was delayed to September? Do you agree with the JCP Executive Committee’s decision to vote against JSR 376? Why or why not?
Markus Eisele: I didn’t expect it to come out at all this year. The EC made very clear that the advantages for a modularized JDK have a clear focus, and that is the JVM itself. It puts a big burden on framework developers and will most likely have a big influence on the way we implement applications going forward. And even if one could argue that a bad module system is better than none, I do believe that without the changes and clarifications pushed for by the EC, nobody would have used Java 9 at all. Besides Oracle.
JAX London: Georges Saab, chairperson of the OpenJDK governing board and vice president of development for the Java Platform group at Oracle told us in early June that many developers will probably get started on JDK 9 without modules. How do you feel about the modular ecosystem?
Markus Eisele: This is exactly what is going to happen. You won’t use something that has no advantage and only drawbacks. The possibility to switch off the module system will at least keep companies on latest versions with hopefully patched and secure JVMs. Imagine what would have happened if Oracle EOLs Java 8 updates and nobody is using Java 9.
It isn’t the most concise or most beautiful language, but it can be scaled to large teams and we learned to ensure a decent quality.
I personally believe that the modularization efforts come too late and provide too little value to developers. On the other hand, we might see more specialized JVMs for smaller and/or specialized devices. There might be optimized versions for containers. Let’s all keep our fingers crossed that a lot of the knowledge will also end up in OpenJDK and not only lead to Oracle products.
JAX London: What is the most important misconception about Java 9? How about Jigsaw?
Markus Eisele: I have two favorites. One is the inclusion of the Reactive Streams specification. I’ve seen the first blog posts about how to use it in your own applications. It shouldn’t be used directly but together with a reference implementation, for example, Akka Streams . Here is one of the better blog posts that I know, giving an introduction to it.
The second one is Jigsaw or better the Java Platform Module System. There are many aspects that will cause a lot of confusion at best and a module hell at worst. Stephen Colebourne published three good articles about it that try to clear a little of the confusion. He talks about Modul Naming, Automatic Modules and how Modules aren’t artefacts
JAX London: What would you like to see in Java 10?
Markus Eisele: Developer productivity would be my biggest interest. Further, improve Lambdas, better streams support in all APIs (e.g. JDBC), and there are a couple of interesting draft JEPs that I would like to see.