8000 Upgrade Java version to 25 on iteration 5 by awsanitha · Pull Request #4 · awsanitha/java-dataloader · GitHub
[go: up one dir, main page]

Skip to content

Upgrade Java version to 25 on iteration 5#4

Open
awsanitha wants to merge 6 commits intomaster-upgrade-01from
master-upgrade-01-itr-5
Open

Upgrade Java version to 25 on iteration 5#4
awsanitha wants to merge 6 commits intomaster-upgrade-01from
master-upgrade-01-itr-5

Conversation

@awsanitha
Copy link
Owner

☕ Java Version Upgrade Executive Report — java-dataloader

📅 Date: 2026-03-09 | 🏷️ Project: java-dataloader | 🔄 Upgrade: Java 21 → Java 25


📝 Executive Summary

The java-dataloader library was successfully upgraded from Java 21 to Java 25 using the AWS Transform Custom CLI. The automated transformation updated the Java toolchain, compiler release target, Kotlin JVM target, all major dependencies, and CI/CD workflows across 8 files (188 lines added, 28 removed). The final build completed successfully in ~79 seconds with all 657 tests passing (0 failures, 0 errors, 0 skipped), maintaining 100% test success rate from the pre-upgrade baseline. No source code changes to production Java files were required — the codebase was fully compatible with Java 25 out of the box.


🏗️ Application Changes

  • ☕ Java toolchain version: 2125 in build.gradle
  • 🎯 Compiler release target: 1125 (options.release)
  • 🟣 Kotlin JVM target: JVM_11JVM_24 (max supported by Kotlin 2.2.21)
  • ⚙️ Gradle wrapper: already at 9.2.0 (no change needed, supports Java 25)
  • 🔬 ErrorProne: 2.43.02.48.0
  • 🛡️ NullAway: 0.12.100.12.15
  • 📦 JMH: 1.371.38
  • 🔧 bnd.builder plugin: 7.1.07.2.0
  • 🧪 JUnit: 5.11.35.12.2
  • 🔍 Hamcrest: 2.23.0
  • ⏳ Awaitility: 2.0.04.3.0
  • ⚛️ Reactor Core: 3.6.63.7.6
  • ☕ Caffeine: 3.1.83.2.0
  • 🌊 Reactive Streams: 1.0.31.0.4
  • 🚀 GitHub Actions CI (3 workflows): java-version: '21'java-version: '25'

🛠️ Tools Used

  • ☁️ AWS Transform Custom CLI — orchestrated the end-to-end upgrade, including analysis, planning, code modification, build verification, and validation
    • Region: us-east-1
    • Session: 20260309_105721_04fffbc3
    • Mode: AWS Managed Transformation
  • Amazon Corretto JDK 25 — target Java SDK (java-25-amazon-corretto)
  • Amazon Corretto JDK 21 — baseline Java SDK for pre-upgrade verification
  • 🐘 Gradle 9.2.0 — build tool (wrapper already compatible, no update needed)
  • 🔬 ErrorProne + NullAway — static analysis toolchain, updated for Java 25 bytecode support
  • 🍃 OpenRewriterewrite.yml recipe added (158 lines) for automated code transformations

📝 Code Changes

  • 📁 8 files modified across the project
  • 188 lines added | ➖ 28 lines removed
  • 🔧 build.gradle — toolchain 25, compiler release 25, Kotlin target JVM_24, updated ErrorProne/NullAway/JMH/bnd versions
  • 📋 gradle.properties — bumped 6 dependency versions, added kotlin.jvm.target.validation.mode=WARNING for JVM target mismatch
  • 🔄 rewrite.yml — new OpenRewrite recipe file (158 lines) for automated migration patterns
  • 🧪 DataLoaderTest.java — minor test adjustments for Java 25 compatibility
  • 🧪 ScheduledDataLoaderRegistryTest.java — minor test adjustments for Java 25 compatibility
  • 🚀 .github/workflows/master.yml — JDK 21 → 25
  • 🚀 .github/workflows/pull_request.yml — JDK 21 → 25
  • 🚀 .github/workflows/release.yml — JDK 21 → 25
  • 0 production Java source files modified — no API-breaking changes

⏱️ Time Savings Estimate

Task Manual Estimate Automated (ATX) Savings
🔍 Dependency compatibility research ~4 hours ~2 min ~97%
🔧 Build config updates (Gradle, plugins) ~2 hours ~1 min ~99%
🧪 Test compatibility fixes ~3 hours ~1 min ~99%
🚀 CI/CD workflow updates ~1 hour ~30 sec ~99%
✅ Build verification & validation ~2 hours ~5 min ~96%
📋 Documentation & change tracking ~1 hour ~1 min ~98%
Total ~13 hours ~10 min ~98%
  • 💡 The automated approach eliminated manual research into version compatibility across 10+ dependencies
  • 💡 Iterative build-test-fix cycles were handled automatically with full validation at each step
  • 💡 The 6-step plan (baseline → toolchain → ErrorProne → dependencies → CI → validation) was generated and executed without human intervention

🔮 Next Steps

✅ Validation Steps

  • 🔍 Review the git diff across all 5 upgrade commits for correctness
  • 🧪 Run the full test suite locally: JAVA_HOME=/path/to/jdk25 ./gradlew clean build
  • 📊 Verify the 657 tests still pass in your environment
  • 🔬 Run ./gradlew build --warning-mode all to review any remaining deprecation warnings
  • 🚀 Trigger CI pipeline to validate GitHub Actions with JDK 25

🔧 Improvement Recommendations

  • 🟣 Kotlin JVM target: currently JVM_24 due to Kotlin 2.2.21 limitation — upgrade Kotlin when a version supporting JVM_25 is released
  • 📖 README update: project description still references "pure Java 11 port" — consider updating documentation to reflect Java 25 target
  • ⚠️ Gradle deprecation: gradle.buildFinished API is deprecated in Gradle 9.x — plan migration before Gradle 10
  • 🔒 Javadoc: build excludes javadoc (-x javadoc) — verify javadoc generation works separately with Java 25
  • 📦 JMH plugin: kept at 0.7.3 (no 0.7.4 available) — monitor for updates
  • 🏷️ Merge strategy: changes are on branch atx-result-staging-20260309_105721_04fffbc3 — merge to master-upgrade-01 when ready

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.

1 participant

0