Useful Java9 Jigsaw resources
Java 9 is out sooner than you think! Apart from a big mix of improvements (performance, reactive streams, etc.) the most notorious change is ‘Jigsaw’ — the Java module system. Intended as an improvement over the classic ‘jars’ and reduce the class loading hell, make dependencies more explicit.
I found that finding practical information and implications on Jigsaw is surprisingly difficult. Few common frameworks are Java 9 ready (e.g. maven) and blogs about Jigsaw are still a bit sparse. Perhaps because the spec wasn’t finalised until recently? Or because we’re all ignoring the massive impact this will have on the JVM ecosystem…at least until `-permit-illegal-access`will be dropped (in Java-10).
Googling for documenation leads you often to the Oracle quick start. That’s a good guide to follow to get a feel for the new commands and notions of modules. However, I actually recommend the java.net hosted The State of the Module System because its more thorough, also on migration aspects.
This Clojure talk has some surprising insights in Jigsaw. Tobey Crawley is an entertaining presenter yet paints a troubling picture for Clojure on Java9 explaining Jigsaw from a JVM citizen perspective:
Some Github projects:
- maven-java9-jigsaw a multi-module maven set up showing off ServiceLoader with JigSaw. Great as a boilerplate for new projects.
- java9-modules-maven-junit-example another service loading example, with some attempts to do reflection.
Finally, for the real java9 fanatics, the countdown to the release date: