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.