MovingBlocks / TerasologyLauncher

Terasology Launcher is the official launcher for the open source game Terasology.
http://terasology.org/
Apache License 2.0
154 stars 76 forks source link

Towards Java 14 and Modularity #565

Open skaldarnar opened 4 years ago

skaldarnar commented 4 years ago

Working towards using Java 14 and jpackage to build platform-specific versions of that launcher that can be installed properly. This comes with a bunch of related changes and requirements (such as downloading the runtime by the launcher itself instead of bundling it with each release, and many more).

This issue aims to track progress on the matter.

Next action items:

keturn commented 4 years ago

Does Java 14 require we jlink, or may we start by bumping up some versions and distributing the java 14 JRE? (I think I did read somewhere that Oracle wasn't distributing JREs anymore, they said if you want to distribute a runtime smaller than the JDK you can do a jlink or whatever.)

Since #562 is only test dependencies, I expect it to interact with this less than if it were application code. :crossed_fingers:

Gradle 6.4 (currently at release candidate 4) will have its own support for modular builds. I'm making assumptions here but I'd expect that to replace the org.javamodularity.gradle-modules-plugin. I don't know their timeline but rc4 sounds close to release, doesn't it? I'd be tempted to build on that instead of starting on one and switching.

keturn commented 4 years ago

There is one thing in #562 that might be relevant: It pulls in a component metadata plugin. I don't know if that helps with module conflicts at all, but it does help expose it when incompatible packages are on the classpath.

skaldarnar commented 4 years ago

The game does not run with Java 14 afaik. I think we can prepare a few things (like cleaning up our dependencies or upgrading Gradle) but at some point we'll do hard cut. I think jlink is availabe before 14, so we could probably move to building a minimal runtime for the launcher with jlink and downloading a separate JRE for the game (at launcher runtime). Final step would be to use jpackage to get nice installers...

Waiting for Gradle 6.4 - depends on when it is released. If it is ready we should go for it, but I'll continue to use the modularity plugin for now in hope to easily get rid of it. Reason is that I don't want to block this project unnecessarily...