Also, for #3, what does it look like to run a client application? IOW, what are the command-line arguments needed?
Anthony > On Oct 10, 2018, at 1:29 PM, Anthony Baker <aba...@pivotal.io> wrote: > > 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 >