Skip to content

Java Migration Java8toJava11 #48692

@Pankraz76

Description

@Pankraz76

Java Migration: Java8toJava11

While this project already compiles against Java 25, it's impressive—though not surprising—that it still relies on Java 8 APIs, coding styles, and best practices.
What worked back then has evolved: the Java language and its APIs have introduced new features, idioms, and improvements.

To help align our codebase with modern Java conventions at scale, we've integrated automated migration rules into Checkstyle and Spotless.


Should Spring follow suit?

If we aim to keep our Spring stack modern and aligned with the latest Java best practices, we could consider leveraging tools like OpenRewrite to automate migration to newer JDK versions.

For example, OpenRewrite provides recipes for upgrading to Java 21—and beyond—while applying current idiomatic patterns:

This could help ensure our Spring components stay clean, performant, and consistent with evolving Java platform standards.

example:

There were problems parsing buildSrc/SpringRepositorySupport.groovy
All sources parsed, running active recipes: org.springframework.boot.openrewrite.SanityCheck
Changes have been made to build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java by:
    org.openrewrite.java.migrate.UpgradeToJava21
        org.openrewrite.java.migrate.UpgradeToJava17
            org.openrewrite.java.migrate.Java8toJava11
                org.openrewrite.java.migrate.nio.file.PathsGetToPathOf
                    org.openrewrite.java.ChangeMethodTargetToStatic: {methodPattern=java.nio.file.Paths get(..), fullyQualifiedTargetTypeName=java.nio.file.Path}

full scope:

All sources parsed, running active recipes: org.springframework.boot.openrewrite.SanityCheck
Changes have been made to build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java by:
    org.openrewrite.java.migrate.UpgradeToJava21
        org.openrewrite.java.migrate.UpgradeToJava17
            org.openrewrite.java.migrate.Java8toJava11
                org.openrewrite.java.migrate.nio.file.PathsGetToPathOf
                    org.openrewrite.java.ChangeMethodTargetToStatic: {methodPattern=java.nio.file.Paths get(..), fullyQualifiedTargetTypeName=java.nio.file.Path}
                    org.openrewrite.java.ChangeMethodName: {methodPattern=java.nio.file.Path get(..), newMethodName=of}
        org.openrewrite.java.migrate.UpgradeBuildToJava21
            org.openrewrite.java.migrate.UpgradeJavaVersion: {version=21}
Changes have been made to build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/PomCondition.java by:
    org.openrewrite.java.migrate.UpgradeToJava21
        org.openrewrite.java.migrate.UpgradeToJava17
            org.openrewrite.java.migrate.lang.StringFormatted: {addParentheses=false}
        org.openrewrite.java.migrate.UpgradeBuildToJava21
            org.openrewrite.java.migrate.UpgradeJavaVersion: {version=21}
Changes have been made to build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/MavenPublishingIntegrationTests.java by:
    org.openrewrite.java.migrate.UpgradeToJava21
        org.openrewrite.java.migrate.UpgradeToJava17
            org.openrewrite.java.migrate.lang.StringFormatted: {addParentheses=false}
        org.openrewrite.java.migrate.UpgradeBuildToJava21
            org.openrewrite.java.migrate.UpgradeJavaVersion: {version=21}
Changes have been made to build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-applyingAotPluginDoesNotPreventConfigurationOfJavaToolchainLanguageVersion.gradle by:
    org.openrewrite.java.migrate.UpgradeToJava21
        org.openrewrite.java.migrate.UpgradeBuildToJava21
            org.openrewrite.java.migrate.UpgradeJavaVersion: {version=21}
                org.openrewrite.gradle.UpdateJavaCompatibility: {version=21, allowDowngrade=false}
Changes have been made to build-plugin/spring-boot-gradle-plugin/src/dockerTest/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java by:
    org.openrewrite.java.migrate.UpgradeToJava21
        org.openrewrite.java.migrate.UpgradeToJava17
            org.openrewrite.java.migrate.Java8toJava11
                org.openrewrite.java.migrate.nio.file.PathsGetToPathOf
                    org.openrewrite.java.ChangeMethodTargetToStatic: {methodPattern=java.nio.file.Paths get(..), fullyQualifiedTargetTypeName=java.nio.file.Path}
                    org.openrewrite.java.ChangeMethodName: {methodPattern=java.nio.file.Path get(..), newMethodName=of}
        org.openrewrite.java.migrate.UpgradeBuildToJava21
            org.openrewrite.java.migrate.UpgradeJavaVersion: {version=21}
Changes have been made to build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ClassPath.java by:
    org.openrewrite.java.migrate.UpgradeToJava21
        org.openrewrite.java.migrate.UpgradeToJava17
            org.openrewrite.java.migrate.Java8toJava11
                org.openrewrite.java.migrate.nio.file.PathsGetToPathOf
                    org.openrewrite.java.ChangeMethodTargetToStatic: {methodPattern=java.nio.file.Paths get(..), fullyQualifiedTargetTypeName=java.nio.file.Path}
                    org.openrewrite.java.ChangeMethodName: {methodPattern=java.nio.file.Path get(..), newMethodName=of}
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions