Java 9 and the future of modularity: Will Project Jigsaw be a hit or flop?
Never a dull moment with Java 9. First, the JCP EC decided not to approve the Public Review Ballot for JSR 376 but then they signed off on the Reconsideration Ballot. Java 9 will be released on September 21 but will developers get started on JDK 9 without modules? In the second part of our interview series, Java influencers weigh in on Java 9 and the modular ecosystem.
What’s cooking in the Java world?
When the EC failed to approve the Public Review Ballot for JSR 376, some people thought that Project Jigsaw is doomed. There were 13 votes against and 10 in favor and although the final results of the Public Review Ballot for JSR 376 were hardly encouraging, David Blevins, founder and CEO of Tomitribe claimed that the red checkbox has its benefits.
Turns out he was right! The Public Review Reconsideration Ballot for JSR #376 was approved in late June.
Java 9 will be released on September 21 but even though most people are excited to take it for a spin, not everything has jumped on the modular bandwagon. As Georges Saab, chairperson of the OpenJDK governing board and vice president of development for the Java Platform Group at Oracle told JAXenter in early June, “it is possible to get started on JDK 9 without modules, the class path continues to work, and this is how many developers will likely get started with JDK 9.”
Still, the modular ecosystem is not everyone’s cup of tea and, according to some Java influencers, the community is unlikely to rely on the new module features immediately. Is the world ready for modularity? It depends on whom you ask.
Project Jigsaw plays a central role in the future of the Java Platform since it provides the basis for more rapid evolution of the platform while ensuring the excellent compatibility for which Java is known.
Now it’s time to talk about Jigsaw and the impending modular future.
10 answers: What did you think of the fact that Java 9 was delayed to September? Do you agree with the JCP Executive Committee’s decision not to approve the Public Review Ballot for JSR 376?*
*The Public Review Reconsideration Ballot for JSR #376 was approved in late June.
Meet the Influencers
Markus Eisele: I didn’t expect it to come out at all this year. The EC made it very clear that the advantages of 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 by the EC, nobody would have used Java 9 at all. Besides Oracle.
Without the changes and clarifications pushed by the EC, nobody would have used Java 9 at all. Besides Oracle.
Marcus Biel: Well, that is very difficult to say. Jigsaw is a big chance, it will hurt, but we will benefit from it in the long run. It might be worth the wait to make it as painless as possible.
Lukas Eder: While I’m sure that Oracle, as well as other JVM / Java EE vendors, do have important stakes in this significant project, I’m personally rather bored by JSR 376, which will not affect my work to a great extent in the near future. I’m much more curious about what’s going to be included in Java 10!
Trisha Gee: I’m actually a representative for JetBrains on the JCP Executive Committee, so I’m very close to this issue! Personally, I was torn about the decision — I’m keen to see Java 9 released as soon as possible, it feels like we’ve been waiting a long time. But as developers, we really should understand it takes time to get things right, and it’s much better to get feedback from your users (for example, the Executive Committee and the developer communities they represent) and make changes according to that feedback than to push out a solution which may not be right for certain parts of the community.
The very thing that makes Java appealing to many of its users, particularly the large enterprises, is that it’s mature and stable with a commitment to not breaking existing applications — the cost of this is that it takes time to make big changes to the platform because they must be right for the community.
There are a lot of highly invested parties in the Java Platform who have explored the modularity space before.
Vlad Mihalcea: I think the concerns are real. Modularity is a very difficult topic and rushing it will affect many existing frameworks. In the meanwhile, many concerns might have been addressed by now.
Jake Wharton: As this JSR has now passed in the second vote, I’m fine with the first vote being used to check Oracle and their decisions around modules. It’s important to remember that there are a lot of highly invested parties in the platform who have explored the modularity space before.
While the platform shouldn’t be beholden to their decisions, it also shouldn’t be ignorant of all their work. Ultimately, I think we’ll get a better product in the end as a result of the changes made between the first and second votes.
Thorsten Heller: I totally agree with the JCP Executive Committee’s decision to vote against JSR 376. It absolutely makes no sense for me to introduce a specification with so many open issues or unclear topics. Especially the delineation and co-existence with OSGi is one of the aspects I’m concerned. So postponing Java 9 and reworking the specification was a smart decision.
Baruch Sadogursky: I think it was a good decision. The conversation that happened after the vote and the changes that were made are for the best. We needed this “wait, let’s talk” time.
Quentin Adam: Java 9 is breaking stuff. Lots of stuff. I think all the hard work on the JVM is ready. Although Jigsaw is essential for the future of the Java Platform in the next decade, some decisions were too hard for the tool ecosystem of Java, and some tools require time to work on Java 9 compliance to be able to be used from day 1.
The delay was a good move because it allowed the ecosystem to be ready for Java 9 users make adoption easy and fast. The vote against was the only way to make Oracle delay the release, so, it was a good move. Now that everyone agrees on the Java 9 release, we hope no more delays will be necessary.
Anyway, we’ve been waiting for Jigsaw for about eight years, so a few weeks more are worth it.😊
Bruno Borges: I believe the JCP EC achieved the best outcome possible. The final result was the expected consensus between everyone involved and, in the end, everyone who invests in Java won. Java 9 is an important step toward a Java platform that is friendly to modern practices of software architecture (microservices), and software delivery (containers).
The modularization of the platform will help Java developers to really benefit from a cloud native software development approach. Now we can get a much smaller JVM for tiny microservices. I remember a tweet from Mark Reinhold saying that the minimum JRE 9 is 15 MB only. That’s a huge improvement!
Georges Saab, chairperson of the OpenJDK governing board and vice president of development for the Java Platform Group at Oracle told JAXenter 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.
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 lead only to Oracle products.
The majority of companies will see Jigsaw as a great risk and delay it for as long as (they think) possible.
Marcus Biel: Jigsaw is a big chance. It will require a lot of work to migrate, and the majority of companies will delay doing that.
The majority of companies will, for many years, see this as a great risk and delay it for as long as (they think) possible — without considering the great advantages that modularization entails. Very unfortunate.
If, on top of this, you consider that most companies are still using Java 7 and only a few companies are actually using Java 8 — I think that this topic will still be relevant for the next 5-10 years.
Lukas Eder: I’m sure Georges is right. I perfectly understand that Jigsaw (and modularity) is important for the JDK to evolve. The community has found “good enough” solutions to modularity long ago through tools like Maven and/or OSGi, and others. The community probably won’t rely on the new module features immediately.
Don’t get me wrong. It’s important that Java has a module system, but I don’t think Java 9’s implementation will be very exciting for most of us. This doesn’t mean that a future Java won’t improve it.
Trisha Gee: I’ve read a lot about it and also worked a little with it, migrating one of my microservices applications to make use of JPMS. I think making modules a first class citizen of the language is a good thing, and it made me, as a developer, apply good design practices like encapsulation and separation of concerns much more carefully. However, the lack of modularity in Java (the language) has led to others developing their own solutions (the project I just mentioned, for example, used Gradle sub-projects). Modularity in Java 9 is not meant to replace any of these, but it does need to play nicely with them, and that’s part of what they’ve been working hard on.
My overall feeling on Java 9 modularity is that new projects will probably want to investigate whether using JPMS will give them any benefits, but most existing large code bases will not be migrated to use it (indeed, they might not see any benefit from it unless they were already going to re-architect into smaller pieces, for example for migrating from a monolith to microservices).
The difficult part, in my opinion, falls upon the developers of library code, those open source jar files we all use daily. Some developers will want the libraries they depend upon to be true modular jar files, not automatic modules, which puts pressure on library developers to migrate their code. There are benefits to doing this, especially for library developers, for example, they can hide away implementation details and internal APIs (the very thing Jigsaw was designed to do), but it will be non-trivial for many to do this migration and the benefits need to outweigh the costs.
Vlad Mihalcea: I’m not very interested in modularity. I think it’s more important for frameworks than end-user applications.
Jake Wharton: Modularity is an important long-term concept for many reasons. As a library author, the enhanced encapsulation is extremely appealing, but it will take many years before its use becomes widespread. It’s also an essential tool for building custom, tiny JVMs onto which you can launch your application. As container use spreads, minimizing the resource impact of the JVM required to run our applications means higher density deployments and reduced infrastructure costs.
Thorsten Heller: To be honest, I’m still a split mind regarding the module system and Java 9 and how it relates and works together with OSGi. I wouldn’t have big issues right now to drop the whole module system in Java 9 to focus on other aspects.
Baruch Sadogursky: That’s good. Most of the development doesn’t need modularity and Jigsaw in its old form brought a lot of complexity and limitations without clear benefits. It’s an extremely important move for the JDK, no doubt about it, so Jigsaw is good, but encapsulating it in the platform as a first step is the right move.
Maybe people will wait until Java 10 to start using modules in a day-to-day work and codebase, but the plumbery will be there.
Quentin Adam: Modularity inside the JDK is mandatory for the future of the JVM as a platform. The first step is to push it inside the JDK and allow usage of modules. Mass adoption will take time, for frameworks and tools to be fully compatible with it, and to advocate developers and architect the pros and cons of the modular system.
Maybe people will wait until Java 10 to start using modules in a day-to-day work and codebase, but the plumbery will be there, track record and war stories will be available, and adoption will be on a clear path. When generics came to Java, the adoption took a few years too. I do not think the entire Java ecosystem can jump on modules starting next November. It’s a chance for the community and JUGs to be efficient, meet new people and gain more audiences, because peoples will need to learn and will be looking for news. This kind of release has a great effect on the community and will allow boosting the average knowledge of the platform.
Bruno Borges: I tried JDK 9 EA for the first time like, a week ago, and by the way, I encourage all Java developers to test it and see if their applications continue to work fine. Guess what? My applications worked just fine. And I made no changes to them! I totally agree with Georges: many developers will simply upgrade and use Java 9 without thinking about modules.
In the final part of the interview series, we talk about the biggest misconceptions about Java 9 and JSR 376. Are you eager to find out what our influencers want to see in Java 10? You’ll have to wait until July 24.
If you’d like to meet the top Java movers and shakers, join us in London in October.