ZGC is one of the most exciting Java 11 features

JAX London, 08-11 October 2018
The Conference for JAVA & Software Innovation
4
Sep

Nobody wants Java 8 to be our Python 2

Source: Shutterstock

The developer world is fast and constantly changing. Find out what Quentin Adam has to say about keeping up with the new Java cycle and why the language’s future has never looked brighter.

JAX enter: How do you feel about the new six-month cycle and the new rhythm? After all, Java 10 was the fastest release in Java’s 23-year history and now we’re already 2 months away from Java 11.

This new release cycle is empowering the java community. As a platform, it shows it’s alive, quickly responding to market needs, and proves that the project is still young, continue to progress and change. As a language it allows java to stay fresh and evolve within the entire language ecosystem, using the all JVM language as lab, integrating only proven things. The new release cycle will also break large organisation integration window that usually last  several years and slow down innovation, and force them to adopt a new iteration cycle on the Java platform. This is good news for their developers, publishers, consultants and eventually for the platform. It forces them to follow innovations and updates. This kind of release cycle proved valuable on Firefox few years ago.

JAX enter: Do you think the new release cadence will lead to fatigue or is it just keeping developers on their toes?

The developer world is built on faster cycle than before, and more importantly, the production world is also accelerating ; DevOps, software factories and continuous deployment lead to time to market acceleration for the code, and for all the tools we use as developers or DevOps. The new release cycle will include Java and the JVM to this vibrant ecosystem, allowing it to not being seen as an old thing. So this frequency will keep developer alert and make them stay on Java instead of more quickly evolving language (like Go, Kotlin or any other trending stuff), this will provide more innovation to Java as a language and library ecosystem.

 

 

JAX enter: Describe your favorite Java 11 feature.

Speaking about Java 11 as a platform, the most exciting feature is ZGC , the new low latency and concurrent garbage collector. It will solve a lot of problems on huge load and massive installation of big data software like Hadoop, Hbase and Kafka. Theses kind of software, when they are under heavy load, hence heavily using Heap at large volume, rely dramatically on the GC. It will unlock new performance levels and capabilities for the JVM world on all the big data market. It also shows that JVM is still leading the way on GC research and innovation. On this, addition of epsilon, the no-op GC (the GC does nothing, very useful for short living program like CLI command, and way faster) is showing the modularity of GC on Java platform.

Speaking of Java 11 as language, the new syntax in lambda for local variables is really nice, allowing to use implicit types, it makes lambda reading much easier and will drive to use it more in java, which is a great thing.

 

JAX enter: Java 11 will be “lighter” in the sense that JavaFX will soon be decoupled from the JDK, we’re saying goodbye to Java EE modules and Nashorn JavaScript engine will be deprecated. What’s left to axe?

It’s a good news. The path to JDK modularization (project Jigsaw) have been long, and complicated, but finally it’s here! The next step is to use it and start to move part of the JDK to modules, and profit for all the hard work done. It will help to remove old stuff, and move them to modules, graphics stuff not needed on a server, server stuff not needed on a client… And it will allow to create new modules to extends the JDK with features more easily.

JAX enter: A lot of developers are still using Java 8. What does this mean for Java 11 adoption? Do you think Java 11 will be important or big enough to make them want to drop Java 8?

Java 9 introduced Jigsaw, which was great and useful, but all the marketing message was just on this and how difficult using the modules were. And lot’s of users have focus only on this and see the migration as a very difficult project, slowing down the adoption. I think many of the java ecosystem leaders working on alternate languages, on builder tools or on CI projects carry lots of responsibilities on this. Because the difficulty of a language port is way higher than just following with a traditional java application. But new feature like ZGC and shorter release cycle will resume the update cycle and after a few month we will see new version adoption grow again.

JAX enter: Speaking of Java 8, public updates will remain available for individual, personal use through at least the end of 2020 but business users won’t be that lucky — the ‘public updates’ tap will be turned off in January 2019. A lot of Java developers believe that this decision is “ruining Java”. What’s your take on that?

Oracle doing Oracle. They are here to make money, and pay for support on old release is a battle tested business model. But in any case it’s a good way to force organisations to move to the next java release. If the support of old versions is too long, the risk is to stop adoption, and nobody wants java 8 to be our python 2. So that’s it. it’s time to upgrade!

 

JAX enter: Nashorn JavaScript engine will soon be deprecated and the most viable alternative seems to be GraalVM. What does GraalVM have that Nashorn doesn’t? Should Nashorn be kept alive by the community?

Modules in the JDK is a good thing, and splitting core from non-essential stuff is important. Considering the javascript language inside the Java ecosystem, the vision was to use it as scripting language. But today, this role is more devolute to Apache Groovy, and the current usage of javascript on top of JVM does not require it to be embedded in the core of the platform. As a technology project, Nashorn is a very good piece of software, and I really like it, I even built a server side javascript application server and build tools on top of it years ago. But times go and it will be maintained only if people need it day to day.

JAX enter: How do you feel about ZGC? Can it make latency a non-issue for Java applications?

ZGC is impressive piece of software, I’m impressed. It will help JVM to scale on many humongous workloads and continue to rules the big data market. Does it solve forever latency issue? No, it’s a good step forward. But as there is no perfect tool for every needs, from fixing washing machine to building wooden house, computer science can use several tool to fix the problems we face. Sometimes a Garbage Collector is a problem, and as GC will always introduce latency you need to use some non-managed language like Rust or C. As the java platform has already a wide landscape of usage, the interest of ZGC is to be more performant on it, as the demands grow and the hardware progresses too.

JAX enter: Demand is growing for serverless platforms. Will serverless begin a major reshaping of Java?

Serverless is more a trend for conference and blog article than a new way to build software, and as I explain to my article , FaaS today is more the return of prorietary application servers, with more limitation than never expected. But is you look at the serverless meaning, people want to get rid of server management (and not servers, who are still running software), and it’s the core principle of PaaS to deploy stuff and managed it automatically. From a java perspective, there is nothing to do here, some people will begin to create new framework or platform on top of Java with a serverless branding, that’s great, but I see nothing to do to make it easier, and I do not think it have to be a focus.

JAX enter: What features would you like to see in Java 12?

For Java as a language, I see two main points:

  • Pattern matching: this feature is really interesting, leading to ay more readable code. It’s a good solution to avoid errors on cascading if/else, allow the compiler to detect uncovered options, it will be a really good add to java.
  • Try to make it less verbose, maybe integrating more project lombok ideas, with optional getter/setter (auto generate it at compilation), this will be a good solution to reduce boilerplate code in our codebase.

For java as a platform, I really hope for more work on the webassembly compilation, to be able to use JVM/java codebase on the browser and the blockchain.

Thank you!

Behind the Tracks

Software Architecture & Design
Software innovation & more
Microservices
Architecture structure & more
Agile & Communication
Methodologies & more
Emerging Technologies
Everything about the latest technologies
DevOps & Continuous Delivery
Delivery Pipelines, Testing & more
Cloud & Modern Infrastructure
Everything about new tools and platforms
Big Data & Machine Learning
Saving, processing & more