Skip to content

build(java): align toolchain and runtime to Java 25 (bytecode 17)#121

Merged
pditommaso merged 5 commits into
masterfrom
feat/NOTASK-align-java-25
Jul 24, 2026
Merged

build(java): align toolchain and runtime to Java 25 (bytecode 17)#121
pditommaso merged 5 commits into
masterfrom
feat/NOTASK-align-java-25

Conversation

@cristianrcv

Copy link
Copy Markdown
Contributor

Summary

Aligns wave-cli to the proposed org-wide Java 25 standard (implements https://github.com/seqeralabs/adr/pull/48). Adopts Java 25 as the build toolchain and runtime while keeping the language level and bytecode target at Java 17, so produced artifacts remain Java 17 compatible.

What changed

  • app/build.gradle: Gradle toolchain JavaLanguageVersion.of(21) -> of(25) (main java block and the GraalVM nativeCompile javaLauncher). sourceCompatibility/targetCompatibility remain 17.
  • .github/workflows/build.yml: java-version '21' -> '25' in both setup-graalvm steps and the JReleaser setup-java step.
  • .github/workflows/security-submit-dependecy-graph.yml: setup-graalvm java-version 21 -> 25.

GraalVM native-image configuration and build args are unchanged.

Why

Follows the proposed org-wide standard in the Java 25 ADR (seqeralabs/adr#48), which supersedes the 2024-12-03 Java 17/21 ADR. Standardizing the toolchain/runtime on Java 25 across repos while keeping bytecode at 17 preserves runtime compatibility.

How to verify

  • ./gradlew assemble and ./gradlew check build/test on the Java 25 toolchain.
  • Compiled classes still target bytecode 17: javap -v on a compiled class reports major version 61.
  • CI build.yml and security-submit-dependecy-graph.yml provision Java 25 via setup-graalvm/setup-java.
  • GraalVM native build (./gradlew app:nativeCompile) runs on the Java 25 launcher.

🤖 Generated with Claude Code

cristianrcv and others added 3 commits July 8, 2026 14:58
Adopt Java 25 as the build toolchain and runtime (Gradle toolchain and
CI workflows) while keeping the language level and bytecode target at
Java 17.

Follows the proposed org-wide standard in the Java 25 ADR
(seqeralabs/adr#48), which supersedes the 2024-12-03 Java 17/21 ADR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
Switch the CI setup-java JDK distribution from Temurin to Amazon
Corretto, following the Java 25 ADR (seqeralabs/adr#48), which
specifies Amazon Corretto as the preferred distribution for Linux.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
The Groovy 4.0.24 compiler cannot process Java 25 class files (fails with
"Unsupported class file major version 69") when compiling tests on the
Java 25 toolchain. Bump to 4.0.31, which supports JDK 25, matching the
version used by the nextflow project.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Cristian Ramon-Cortes <cristian.ramon-cortes@seqera.io>
@cristianrcv
cristianrcv requested a review from pditommaso July 8, 2026 13:49
cristianrcv and others added 2 commits July 14, 2026 17:41
Align language/bytecode target with the Java 25 toolchain now that the runtime is bundled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… Profile B Java 25 for Micronaut) per adr#51

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
@pditommaso

Copy link
Copy Markdown
Contributor

Updated this branch to the refined two-profile Java model from seqeralabs/adr#51 (system/2026-07-23-java-version.md).

Classification: A-only. wave-cli is a CLI with no Micronaut runtime dependency in any module, so it is entirely Profile A: build on the Java 25 toolchain but target Java 17.

Changes in app/build.gradle:

  • Kept the Java 25 toolchain.
  • Removed sourceCompatibility = 25 / targetCompatibility = 25 from the java {} block (these conflict with --release on the same javac task, and 25 was the wrong target for a CLI consumed by the Nextflow Java-17 runtime).
  • Java sources now target 17 via tasks.withType(JavaCompile).configureEach { options.release = 17 }.
  • Groovy sources (tests) target 17 via tasks.withType(GroovyCompile).configureEach { sourceCompatibility = '17'; targetCompatibility = '17' } (Groovy ignores --release). Groovy is already at 4.0.31, required for the JDK 25 toolchain.

Verified locally on a JDK 25 toolchain: compileJava/compileGroovy/compileTestGroovy all pass and emit bytecode major version 61 (Java 17).

@pditommaso
pditommaso merged commit beabe86 into master Jul 24, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants