Skip to content

Investigate JDK 17 build and runtime compatibility #31

Description

@ejboy

Technical status

Partially supported — Maven/Ant build & tests and in-process drivers work; pure fat-jar JS needs Rhino on the application classpath (follow-up packaging/docs issues listed in the plan).

Goal

Use a separate exp-jdk17 branch to determine the smallest practical set of changes required to compile, test, package, and run Scriptella on JDK 17.

This is an experiment, not yet a commitment to merge JDK 17 support into Scriptella 1.3 RC2.

Approach

Prefer the cheapest targeted compatibility fixes. Avoid broad dependency or build modernization unless it is required to obtain a meaningful JDK 17 result.

Push the experimental branch even if some issues remain unresolved, and use this ticket to record findings and the final merge/defer decision.

Areas to investigate

  • Maven reactor build and tests on JDK 17
  • JavaScript driver behavior without the JDK-bundled Nashorn engine
  • Existing Rhino JSR-223 integration and ScriptellaDriverITest
  • Janino 3 compilation and generated class loading
  • Mail driver behavior using the explicit javax.mail dependency
  • Javadoc and release artifact generation
  • Ant distribution packaging, after the Maven path works
  • Java 8 bytecode and runtime compatibility, if the experiment becomes a merge candidate

The shell driver added in #32 is already available and is not part of this investigation.

Initial validation

JAVA_HOME=/path/to/jdk17 mvn clean verify
JAVA_HOME=/path/to/jdk17 mvn clean deploy -Dcentral.skipPublishing=true

Run representative JDBC, JavaScript, Janino, mail, and command-line launcher scenarios.

Deliverables

  • Published exp-jdk17 branch

  • Exact successful and failing commands

  • Minimal compatibility fixes made during the experiment

  • Remaining blockers and likely effort

  • Assessment of whether Java 8 compatibility can be preserved

  • Recommendation to either:

    • merge the bounded changes for 1.3 RC2; or
    • retain the branch as groundwork for Scriptella 1.4

Decision rule

Consider merging into RC2 only if JDK 17 compatibility requires roughly one or two focused implementation chunks and does not require a broad dependency or architecture migration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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