Do we even want Jigsaw?
Recently it was announced that the Java modularity Project Jigsaw would be pushed out of Java 8. Jigsaw and its older brethren JSR 294 and JSR 277 have a tortured history from years of fighting during Java 7. That fighting is not just internally on political and design issues but externally vs other modularity systems, namely OSGi.
InfoQ has a decent round-up of opinions on the matter. They say:
- Good agile development: Release early, release often; if Jigsaw is late defer it to the next release and deliver Java 8 on time.
- Java 8 without Jigsaw is not worth the disk it’s written to. Just wait for Jigsaw.
- Jigsaw has already been delayed twice and who knows if it will ever be delivered. Give up, Oracle and put your weight behind an existing technology.
Re #1 – Jigsaw is a titanic change to how Java is built, delivered, and used. Based on the JDK release cycle, this doesn’t even make sense in the context of the larger JDK. On a project basis, they have been releasing builds for years, so they’ve done that.
Re #2 – this is ridiculous. Java 8 will be delivering lambdas, an overhaul of the collections library, an interface extension mechanism, and hopefully JSR 310 which will find give us a date/time library in the JDK that would be worth using. These are going to be the most impactful changes on Java development since generics. Java 8 is useful without Jigsaw.
Re #3 – this seems to narrow the options to either Jigsaw or OSGi. A third alternative, is *don’t put modularity in the JDK*. Don’t get me wrong: I wish Java came with a level of granularity above the package and below the app (a “module”). I wish our classpath was defined by modules with support for versions etc and a way out of the linear “classpath hell”. But I am deeply concerned about Jigsaw being way more disruptive than valuable. I don’t see the status quo as being particularly that bad. It’s painful, but I’m so used to the pain I hardly notice it. :)
Personally, I was glad to see Jigsaw pushed out of Java 8. I’m happy to avoid thinking about what it means for a couple more years and allow the people involved to continue contemplating how to integrate Jigsaw in ways that don’t cause a schism of classpath vs modulepath for years to come. I’d far rather have lambdas and functional collection support than Jigsaw.