[Geoserver-devel] GSIP-171 Java 18.9 compatibility discussion

The GeoTools discussion started getting into specific and I wanted a chance to start the conversation here to focus on GeoServer challenges. The proposal under discussion is here https://github.com/geoserver/geoserver/wiki/GSIP-171

···

During the last meeting we provided some general feedback:

Proposal for GeoServer:

  • GSIP 171 Java 18.9 Compatibility
  • We can relax and just focus on running with Java 11
  • Still using the CLASSPATH for geoserver
  • Still use automatic module names- As for repackaging just go ahead and untangle conflicts because we are are not a library

This agrees with feedback I have gotten offline (a photo of a “SpringOne Platform” presentation on this topic).

Upgrade considerations

Consider staying on the JVM class-path

  • Spring 5 runs fine in the class path mode as well as on the module path

  • however, other libraries may not work in a module setup quite yet

  • Tomcat and co run in a custom class loader arrangement anyways

Consider staying at Java 8 byte code level

  • Spring 5.1’s ASM 7.0 fork accepts Java 8-12 bytecode level

  • ASM 5.x (very common) rejects unknown bytecode levels beyond Java 8

  • compiling your code with target 1.8 reduces risk of such tools breaking

Build against Java 8, run against JDK 11?

Specific concerns discussed in terms of:

  • short term: run geoserver on the classpath
  • mid term: run geoserver on classpath or module path, with some supporting libraries on the classpath
  • long term: run geoserver on the module path, with some supporting libraries on the classpath

Jars that are not ready?
Jars that are not ready yet will have to stay on the CLASSPATH (jai, jai-ext, imageio-ext, jai-tools). There is a small change to the GeoTools factory interface (isAvailable, isAvailableStatus) to allow us to disable functionality if a required jar is not found and report on the GeoServer status page/rest api.

Short term we are on the classpath so we will not notice this issue.
Long term we expect geotools and geosever modules to remain automatic modules so they can act as a bridge to the jars still on the classpath.

Reflection and Unsafe
Short term these will keep GeoServer on the CLASSPATH.

Medium term we will update components:

Long term access to reflection and unsafe has been allowed - but access needs to be granted.

Jody Garnett

I’ve checked around, the J2EE specification is now separate from Java and I could not find any
indication of a new version of J2EE taking modules into account, as far as I can tell, web apps
are still going to run off the classpath for the foreseeable future.

I know J2EE moved to Eclipse foundation, but searching on the internet I cannot find its new web site
(where I was hoping to find indications on future module usage in servlet based apps), I only come
up with J2EE tooling and the like.
Do you have other news?

Cheers

Andrea

···

== GeoServer Professional Services from the experts! Visit http://goo.gl/it488V for more information. == Ing. Andrea Aime @geowolf Technical Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054 Massarosa (LU) phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 339 8844549 http://www.geo-solutions.it http://twitter.com/geosolutions_it ------------------------------------------------------- Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni circostanza inerente alla presente email (il suo contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato se potesse darmene notizia. This email is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. We remind that - as provided by European Regulation 2016/679 “GDPR” - copying, dissemination or use of this e-mail or the information herein by anyone other than the intended recipient is prohibited. If you have received this email by mistake, please notify us immediately by telephone or e-mail.

The new project name is Jakarta, can find lots of articles (
https://www.infoworld.com/article/3269210/java/whats-new-with-eclipses-jakarta-ee-java.html) but not plans around jigsaw. But the spring 5 articles showed how to run with modules so it must be possible.

Okay here is the website -
https://jakarta.ee/

And technical direction
https://www.eclipse.org/ee4j/direction.php

What a change, actual technical direction we can read.

The heading is

https://www.eclipse.org/ee4j/direction.php#embrace-jpms

TLDR; Use Java 8 now, get ready for Java Plug-in Module System, add MANIFIST.MF entry … exactly like we are trying to do.

···


Jody Garnett

I don’t see a link about it in this thread, what article are you referring to?

My understanding is that classic web apps are running of classpath, when you put a modularized jar
in the classpath is behaves like a normal jar, not as a module, so nothing new there, in order
to make a jar behave as a module it has to be in the modulepath (where it will behave accoring
to its moduleinfo, or get turned into an automatic module).

I have the impression Oracle is caring less about J2EE because on the cloud the direction is
more like going container-less, and either leverage the cloud support for lambdas, or build a tiny
HTTP layer using a light container, at which point using the modulepath becomes possible
and actually interesting (due to the faster startup times the modulepath allows, which is crucial
for small apps starting up and shutting down all the time)

Cheers
Andrea

···

GeoServer Professional Services from the experts! Visit http://goo.gl/it488V for more information. == Ing. Andrea Aime @geowolf Technical Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054 Massarosa (LU) phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 339 8844549 http://www.geo-solutions.it http://twitter.com/geosolutions_it ------------------------------------------------------- Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni circostanza inerente alla presente email (il suo contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato se potesse darmene notizia. This email is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. We remind that - as provided by European Regulation 2016/679 “GDPR” - copying, dissemination or use of this e-mail or the information herein by anyone other than the intended recipient is prohibited. If you have received this email by mistake, please notify us immediately by telephone or e-mail.

No you are right it is a spring boot example from our wiki page:

···


Jody Garnett

Here is another confirmation that Java EE 8 is CLASSPATH:
https://stackoverflow.com/questions/46497172/is-java-9-modularity-for-war-files-as-well

···


Jody Garnett

With today’s milestone release going out I am marking this proposal as complete …

···


Jody Garnett