er, lost the end of that first sentence there. I think that reducing
dependencies on Unsafe &c is a good goal regardless.

On Wed, Oct 10, 2018 at 1:51 PM Galen O'Sullivan <gosulli...@pivotal.io>
wrote:

> #1 sounds awesome but may be unrealistic given our advertised feature set.
> I think that reducing dependencies on Unsafe &c
>
> If we can conditionally use Jigsaw modules for Java versions later than 8
> while maintaining Java 8 compatiblity, that seems like the best solution.
>
> +2 to Dan's idea if it allows this.
>
> On Wed, Oct 10, 2018 at 1:47 PM Jacob Barrett <jbarr...@pivotal.io> wrote:
>
>> Here is a discussion from Google Guava project about compiling
>> module-info.java in Java 9+ and including it in a jar with classes
>> compiled
>> for Java 8.
>>
>> https://github.com/google/guava/issues/2970
>>
>>
>> On Wed, Oct 10, 2018 at 1:39 PM Jacob Barrett <jbarr...@pivotal.io>
>> wrote:
>>
>> > I like Dan’s idea! I would rather we work towards the correct solution.
>> >
>> > > On Oct 10, 2018, at 1:22 PM, Dan Smith <dsm...@pivotal.io> wrote:
>> > >
>> > > #2 seems like the least hacky way to continue using things like
>> > > sun.misc.Unsafe. Could we just compile a module-info.java with Java 9
>> and
>> > > bundle it? This would also help consumers of geode that want to use
>> Java
>> > 9
>> > > modules.
>> > >
>> > > I'm a little bit sceptical of this permit-reflect libary, seeing as
>> it's
>> > > been around for about 1 month, has 0 tests in the source that I can
>> see,
>> > > and seems to be tripling down on relying on sun.misc.Unsafe to do
>> stuff.
>> > > I'd be inclined to do #3 before this.
>> > >
>> > > -Dan
>> > >
>> > > On Wed, 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
>> >
>> >
>>
>

Reply via email to