Skip to content

Continue Java 9 migration to full support via multiple separate Jars #647

@JordanMartinez

Description

@JordanMartinez

Coming from #270, below is the table of different approaches we identified to initially support Java 9.

Reflection Freeze 8, Continue 9 "Boilerplate" directories/modules
Continuous Java 8 support Frozen Java 8 support (or developer forks) Continuous Java 8 support
Java 9 support Java 9 support Java 9 support
--- module-info.java included module-info.java included
may require executable jar flags --- ---
--- --- requires "boilerplate" directories / modules
--- --- requires modifying build.gradle's compileJava step to account for which JDK is compiling it
--- --- requires java8/java9 to be included in version string OR requires a multi-release jar
--- --- requires modifying how releases are built and released via Gradle

This issue focuses on how we should continue our migration to full Java 9 support. Currently, we are using the reflection approach to make a jar that works on both Java 8 and 9. However, this does not fully utilize the advantages of modularization.

The talk in the aforementioned issue was to migrate to a multi-release jar (MRJars). In melix/mrjar-gradle#1, it is noted that MRJars are a bad solution to a real problem, but I still have yet to hear an explanation why. Also, Gradle does not yet have a fully supported plugin to handle these things correctly, although the experimental Chainsaw plugin does exist.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions