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:
* Spring 4 --> Spring 5
* Hazelcast? Not ready yet
https://github.com/hazelcast/hazelcast/issues/13182
* XStream? Sort of ready (https://github.com/x-stream/xstream/issues/101)
and released as Stream 1.4.10 <http://x-stream.github.io/changes.html>. We
can open up our own classes to stream reflection as needed
* Hibernate? ready (https://www.thoughts-on-java.org/hibernate-5-3/) as of
Hibernate 5.3

Long term access to reflection and unsafe has been allowed - but access
needs to be granted.
--
Jody Garnett
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to