3 ms·
Jigsaw breaks far too much stuff to be useful in its present form. There are a _lot_ of cross-links between things you might expect to be separate; e.g. java.sq
by lvh 10y ago
Jigsaw breaks far too much stuff to be useful in its present form. There are a _lot_ of cross-links between things you might expect to be separate; e.g. java.sql's date objects using java.util.Date.
Despite all the breakage, Jigsaw still totally punts on the problem of versioning. So, all it lets you do is declare that you need something (with a self-destructing opt-out); but it still doesn't solve the problem of two libraries requiring two distinct, mutually incompatible versions of the same library.
Producing clever vendoring tricks in build packages would solve actual problems that Jigsaw doesn't even begin to address. Until then, the added value seems pretty questionable.
There are a lot of nice things happening in JDK9 that just makes everything a little bit better as if by magic, and they're being held back by a standard that breaks stuff and ostensibly few people want. That doesn't mean the exercise was futile; the source code reorg is probably an improvement regardless.
- cromwellian 10y agoI've never liked the hacks around loading multiple versions of the same library. To me, this seems fragile and bloated workaround, and it would be far better to encourage people to fix their dependencies. In other ecosystems where they can't abuse a classloader, this kind of multi-version dependency is discouraged, and at Google we completely ban it for Java.
- sk5t 10y ago> this kind of multi-version dependency is discouraged, and at Google we completely ban it for Java Good to hear. It takes a surprising lot of backbone to resist the call to "just do" tortured things to fix a problem--sometimes I play the bad guy, saying "no, that's stupid, figure out a better way" but yet we see repackaged Java classes shipping here and there...
- _pmf_ 10y ago> In other ecosystems where they can't abuse a classloader That's not abusing the classloader; it's using the classloader. > and at Google we completely ban it for Java Yeah, I'll sure to listen to Java tips from the developers of the Android API.
- cromwellian 10y agoWell, we also developed Guava, so karma balanced. :)
- chopin 10y agoI would be interested to learn how you cope with indirect dependencies (i.e. dependencies brought in by your dependencies). I often have to deal with the situation that both of my dependencies A and B require Y but in different versions. Neither A nor B offer versions where the dependency on Y is compatible (or the same).
- lvh 10y agoThat's fair, but people do have them, and they're a big part of the reason Jigsaw is suggested to be too big to fail.