Do you have a listed of restricted API’s that are used by Geode? Which libraries used by Geode are affected? Are these run-time only warnings or actual errors?
Anthony > On Oct 10, 2018, at 12:20 PM, Owen Nichols <onich...@pivotal.io> wrote: > > Goal: > > Run Geode on Java 11 (GEODE-3 > <https://issues.apache.org/jira/browse/GEODE-3>). > > > Problem: > > Java 8 allows Geode (and its 3rd party libraries) full access to all Java > APIs, including internal APIs. However, Java 11 restricts access to many of > these APIs by default. > > > Solution #1: > > Remove all usage of restricted APIs from all Geode code, and find > replacements for all 3rd party libraries that depend on restricted APIs. > > Solution #2: > > Adopt Java 11’s “Jigsaw" Module System and properly declare dependencies on > restricted APIs. > > Solution #3: > > Update all existing public and personal scripts, wrappers, IDE > configurations, test harnesses, and other java invocations to add a handful > of --add-opens flags to the java commandline to override the default Java 11 > restrictions. > > Solution #4: > > Use the MIT-licensed permit-reflect > <https://github.com/nqzero/permit-reflect> library to programmatically > override Java 11’s API restrictions. > > > In terms of feasibility: > #1 would be extremely difficult. Geode has a large number of dependencies on > internal Java APIs in critical areas, and replacing them would be > time-consuming, potentially destabilizing, and very likely to negatively > impact performance. > #2 is complex because we still need Geode to run on Java 8, so not using any > Java 11 features seems safer than introducing multi-version jars, > cross-compilation, or separate releases per target Java platform. > #3 is easy enough to implement in scripts that are under source control, but > users or developers that have their own IDE configurations or test > environments may struggle to understand why they are getting errors and how > to fix them. > #4 restores full Java8-like permissions with essentially just a change to > main() method. > > > Which strategy do you prefer? Java 11 test jobs are in the pipeline > <https://concourse.apachegeode-ci.info/teams/main/pipelines/develop> as of > today — let’s make them green! > > > -Owen