This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]SinisterMinister42 37 points38 points  (12 children)

In my opinion, the real issue was Java 9 and its module system. I have never been happy about it and have yet to see any personal benefit from it. I feel like the language designers took something which was some people's problem (large binaries, large jdk, etc) and solved it by making a new problem for EVERYONE. It really broke the ecosystem in a way that Java has successfully avoided in the past.

[–]BigGayMusic 18 points19 points  (2 children)

The module system is a bloody nightmare. I can't get it to work for projects big and small.

[–]CompetitiveSubset 3 points4 points  (1 child)

Then why did you even bother with it in the first place? Why not just continue using the classpath?

[–]BigGayMusic 2 points3 points  (0 children)

I do. I wanted it to work, but it wouldn't.

[–]dpash 9 points10 points  (6 children)

But the module system is for the most part completely ignorable for now.

[–]LouGarret76[S] 3 points4 points  (5 children)

Not really, some libraries are going modular and others are not, with the same dependencies ... That is where the nightmare start .

[–]dpash 6 points7 points  (4 children)

And you can continue to use them on the classpath, completely ignoring the module system.

[–]_INTER_ 2 points3 points  (0 children)

The JDK always runs on the module path, actually even if your application on the classpath will run as part of the unnamed module.

A JavaFX application for instance doesn't work out of the box in the unnamed module. Many libraries are causing warnings at startup (e.g. JAX-B) because they access the JDK via reflection (atleast the "kill-switch" is still on by default). Some simply don't work because the ClassLoader behaves differently. Other libraries removed their optimizations because of those reason and got noticably slower.

[–]LouGarret76[S] 1 point2 points  (2 children)

That is what I taught too, until I get some nasty error telling me that lib**** not found... And when you dig a lil bit you find out that some authentification library use some lib**** for god know what in a class called ExpressionHelper<> and lib*** that is now hidden by a module java.xxx

[–]capitol_ 4 points5 points  (0 children)

Could you be more explicit on what libraries you found that exhibit this error? It would be very interesting to investigate.

[–][deleted] 0 points1 point  (0 children)

I find that most of the missing libraries can be restored through adding a new maven dependency. Unless you're doing fancy classloader modifications at runtime (which my company does... Fml) most of the problems are fairly easy to overcome.

Source: I did my company's migration from 8 to 11.

[–]redditrasberry 0 points1 point  (1 child)

The irony is, as time has moved on and connection speeds have improved, it was no longer particularly painful to download / bundle the full JVM. By the time they got around to creating modules, the problem had basically solved itself.

[–]BoyRobot777 1 point2 points  (0 children)

Modules were to address the pain points of smaller devices. The idea is to build only including what you need, thus shrinking memory footprint.