Java SE 11 Support - deegree/deegree3 GitHub Wiki

Why do we need to act?

The Java release train is following a new track and schedule from Java SE 9 on. There will be a new release every 6 months!

With the faster release cadence, a new strategy was required for delivering updates. Oracle now produce two JDK binaries: the traditional Oracle JDK and one built purely from OpenJDK source. By JDK 11 these will be functionally equivalent but not so from the perspective of updates. Each OpenJDK binary will only have updates (security patches and bug fixes) for six months, until the release of the next JDK. The Oracle JDK will have a long-term support (LTS) release every three years. JDK 8 is currently an LTS; the next will be JDK 11.

Quote from https://www.azul.com/what-comes-after-jdk-8/

Further reading:

Related issues:

Conclusion: We have to move to Java SE 11 asap!

Should we use OpenJDK or OracleJDK as reference?

The TMC has the strong motion to use OpenJDK as a reference from Java 11 and onwards. Major concern is that running an Oracle JDK in a non-development environment will require Oracle Java SE Subscriptions! The new license for Oracle JDK 11 contains the following:

You may not:

  • use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application; [...] If You want to use the Programs for any purpose other than as expressly permitted under this Agreement, You must obtain from Oracle or an Oracle reseller a valid Programs license under a separate agreement permitting such use. However, You acknowledge that the Programs may not be intended for production use and/or Oracle may not make a version of the Programs available for production or other purposes; any development or other work You undertake with the Programs is at Your sole risk.

Quote from https://www.oracle.com/technetwork/java/javase/terms/license/javase-license.html

Further reading:

Related TMC decisions:

Related issues:

Conclusion: We will focus on OpenJDK!

Can we move to OpenJDK 11 seamlessly?

The goals are: make it run, make it compile, make it fit into Java's new module system.

TL;DR: No, it's not as easy as it looks like.

What needs to be done (in details):

  1. Get deegree webservices running with OpenJDK 11 (on Apache Tomcat 9).
  2. Get deegree to compile with OpenJDK 11.
  3. Modularize deegree to use the new Module System of Java 9+ (project jigsaw/JSR-376).

How do we do this?

Make it run

Deploy the most recent version of deegree WAR file into a Servlet Container supporting Java SE 11. This will be Apache Tomcat 9 for an example (see http://tomcat.apache.org/whichversion.html). Use the provided docker container for OpenJDK 11 with Tomcat 9 as a reference. We can use this Dockerfile as a start.

Make it compile

Run Apache Maven 3.6+ with OpenJDK 11 and get it fixed. That includes:

  • update Maven plugins
  • update project dependencies
  • and update the build infrastructure too!

Related issue with Docker commands to compile and run:

Make it fit

That's a huge amount of work since the deegree modules are fairly shattered and the build has some quite awkward spots. Contributions and funding is needed. Participating at the OSGeo Java 2018 Code Sprint is highly recommended, to learn how the other OSGeo projects using Java are dealing with that challenge.

Further reading:

Conclusion: A lot of work needs to be done. Contributions and funding is welcome!

Will deegree webservices be backwards compatible with JDK 8?

NO! As of deegree version 3.5 the support for Java SE 8 will be dropped!

Further reading:

Conclusion: Users are requested to upgrade their runtime environments to Java SE 11 using OpenJDK 11 as soon as deegree webservices version 3.5 is general available (GA)!