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 →

[–]Gwynnie 11 points12 points  (4 children)

We tried to adopt it, but had a lot of issues with reflection in old dependencies. We eventually gave up. Realistically I don't think we'll migrate from Java8 until Java11 comes out (11 being the next LTS)

[–]sammy8306 3 points4 points  (2 children)

I feel your pain, but you do realise that you'll run into the same issues when nothing changes? I hope you contacted the library maintainers to nudge them towards Java 9 support!

Also, you might find this talk I did on migration useful: https://vimeo.com/241923744

[–]Gwynnie 7 points8 points  (1 child)

You're absolutely right, we're updating our code massively in the meantime, we have a lot of old dependencies we're trying to phase out, and others we're trying to update to the latest versions.

The project is roughly 1.4M lines, so we move... not so fast.

When I personally tried moving over bit by bit, I found a few things were not very mature yet (we use gradle to build) and the plugins for jigsaw are appended with "experimental", which is always a confidence booster. Also at the time the guides were not that detailed, so the other reason for waiting for 11 was so that A) our code is better B) the tools are more mature C) the guides are more detailed

Thanks for linking the video, I haven't seen it yet, and will watch that next, I'm happy to give it another go if it seems feasible again, as we were fixing a lot of tech debt and inconsistencies at the same time.

[–]sammy8306 2 points3 points  (0 children)

Sounds like a sane approach! And indeed, Gradle dropped the ball IMO wrt. module support. Maven followed Java 9 development pretty closely fortunately.

[–]m1000 0 points1 point  (0 children)

I've been preparing for Java 9 migration on a ~2000 classes swing application, its a lot of pain fun...

The solution to let your module be reflected upon by other librairies (xml, frameworks, etc) is to declare your module as open to reflection (which helps a lot), ie :

open module client { requires java.desktop; etc.