Migrate to Java 17
org.openrewrite.java.migrate.UpgradeToJava17org.openrewrite.recipe:rewrite-migrate-javaThis recipe will apply changes commonly needed when migrating to Java 17. Specifically, for those applications that are built on Java 8, this recipe will update and add dependencies on J2EE libraries that are no longer directly bundled with the JDK. 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 17 as the target/source and plugins will be also be upgraded to versions that are compatible with Java 17.
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.UpgradeToJava17If 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 11
org.openrewrite.java.migrate.Java8toJava11 - Upgrade build to Java 17
org.openrewrite.java.migrate.UpgradeBuildToJava17 - Changes code to use Java 17's
instanceofpattern matchingorg.openrewrite.staticanalysis.InstanceOfPatternMatch - Add
@Serialannotation toserialVersionUIDorg.openrewrite.staticanalysis.AddSerialAnnotationToSerialVersionUID - Remove
Runtime.traceInstructions(boolean)andRuntime.traceMethodCallsmethodsorg.openrewrite.java.migrate.RemovedRuntimeTraceMethods - Change
javax.tools.ToolProvidermethods calls to staticorg.openrewrite.java.migrate.RemovedToolProviderConstructor - Change
java.lang.reflect.Modifierandjava.lang.invoke.ConstantBootstrapsmethod calls to staticorg.openrewrite.java.migrate.RemovedModifierAndConstantBootstrapsConstructors - Add explicit import for
Recordclassesorg.openrewrite.java.migrate.lang.ExplicitRecordImport - Use text blocks
org.openrewrite.java.migrate.lang.UseTextBlocks - Use
java.security.certinstead ofjavax.security.certorg.openrewrite.java.migrate.DeprecatedJavaxSecurityCert - Adopt
setLongThreadIDinjava.util.logging.LogRecordorg.openrewrite.java.migrate.DeprecatedLogRecordThreadID - Use
SunJSSEinstead ofcom.sun.net.ssl.internal.ssl.Providerorg.openrewrite.java.migrate.RemovedLegacySunJSSEProviderName - Set visibility of
premainandagentmainmethods topublicorg.openrewrite.java.migrate.Jre17AgentMainPreMainPublic - Remove
Thread.countStackFrames()methodorg.openrewrite.java.migrate.DeprecatedCountStackFramesMethod - Replace
finalizemethod injava.util.zip.ZipFile,java.util.zip.Inflaterandjava.util.zip.Deflaterorg.openrewrite.java.migrate.RemovedZipFinalizeMethods - Replace
SSLSession.getPeerCertificateChain()methodorg.openrewrite.java.migrate.RemovedSSLSessionGetPeerCertificateChainMethodImpl - Replace
com.sun.net.sslpackageorg.openrewrite.java.migrate.SunNetSslPackageUnavailable - Replace
RMIConnectorServer.CREDENTIAL_TYPESconstantorg.openrewrite.java.migrate.RemovedRMIConnectorServerCredentialTypesConstant - Replace
finalizemethod injava.io.FileInputStreamandjava.io.FileOutputStreamorg.openrewrite.java.migrate.RemovedFileIOFinalizeMethods - Upgrade plugins to Java 17 compatible versions
org.openrewrite.java.migrate.UpgradePluginsForJava17 - Upgrade Gradle or Maven dependency versions
org.openrewrite.java.dependencies.UpgradeDependencyVersion - Upgrade Gradle or Maven dependency versions
org.openrewrite.java.dependencies.UpgradeDependencyVersion - Upgrade Maven dependency version
org.openrewrite.maven.UpgradeDependencyVersion - Upgrade Maven plugin version
org.openrewrite.maven.UpgradePluginVersion - Upgrade Gradle or Maven dependency versions
org.openrewrite.java.dependencies.UpgradeDependencyVersion - Add
lombok-mapstruct-bindingwhen both MapStruct and Lombok are usedorg.openrewrite.java.migrate.AddLombokMapstructBinding - Enable Lombok annotation processor
org.openrewrite.java.migrate.EnableLombokAnnotationProcessor
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