Migrate to Java 25
Recipe ID
org.openrewrite.java.migrate.UpgradeToJava25Artifact
org.openrewrite.recipe:rewrite-migrate-javaThis recipe will apply changes commonly needed when migrating to Java 25. This recipe will also replace deprecated API with equivalents when there is a clear migration strategy. Build files will also be updated to use Java 25 as the target/source and plugins will be also be upgraded to versions that are compatible with Java 25.
Usage
This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.
mod run . --recipe org.openrewrite.java.migrate.UpgradeToJava25If the recipe isn’t available locally, install it with:
mod config recipes jar install org.openrewrite.recipe:rewrite-migrate-java:3.41.0Definition
This recipe runs the following recipes in order.
- Migrate to Java 21
org.openrewrite.java.migrate.UpgradeToJava21 - Upgrade Kotlin to 2.3 for Java 25 compatibility
org.openrewrite.java.migrate.UpgradeKotlinForJava25 - Upgrade build to Java 24 for Kotlin 1.x
org.openrewrite.java.migrate.UpgradeBuildToJava24ForKotlin1x - Upgrade build to Java 25 (non-Kotlin)
org.openrewrite.java.migrate.UpgradeBuildToJava25 - Upgrade build to Java 25 for Kotlin 2.3+
org.openrewrite.java.migrate.UpgradeBuildToJava25ForKotlin - Upgrade plugins to Java 25 compatible versions
org.openrewrite.java.migrate.UpgradePluginsForJava25 - Migrate
System.out.printto Java 25 IO utility classorg.openrewrite.java.migrate.io.ReplaceSystemOutWithIOPrint - Use
Process#waitFor(Duration)org.openrewrite.java.migrate.lang.MigrateProcessWaitForDuration - Replace
InflaterandDeflaterend()calls withclose()org.openrewrite.java.migrate.util.MigrateInflaterDeflaterToClose - Use
Reader.of(CharSequence)for non-synchronized readersorg.openrewrite.java.migrate.util.MigrateStringReaderToReaderOf - Remove Security AccessController
org.openrewrite.java.migrate.AccessController - Remove Security Policy
org.openrewrite.java.migrate.RemoveSecurityPolicy - Remove Security SecurityManager
org.openrewrite.java.migrate.RemoveSecurityManager - Replace
System.getSecurityManager()withnullorg.openrewrite.java.migrate.SystemGetSecurityManagerToNull - Use
ZipExceptioninstead ofZipErrororg.openrewrite.java.migrate.MigrateZipErrorToZipException - Migrate GraalVM resource-config.json to glob patterns
org.openrewrite.java.migrate.MigrateGraalVMResourceConfig - Comment Kotlin modules capped at Java 24
org.openrewrite.java.migrate.CommentKotlinModulesCappedAtJava24
Data tables
Structured output this recipe can produce.
- Maven metadata failuresAttempts to resolve maven metadata that failed.
org.openrewrite.maven.table.MavenMetadataFailures - Source files that had resultsSource files that were modified by the recipe run.
org.openrewrite.table.SourcesFileResults - Source files that had search resultsSearch results that were found during the recipe run.
org.openrewrite.table.SearchResults - Source files that errored on a recipeThe details of all errors produced by a recipe run.
org.openrewrite.table.SourcesFileErrors - Recipe performanceStatistics used in analyzing the performance of recipes.
org.openrewrite.table.RecipeRunStats