Amazon Q 开发者如何为 Java 语言升级转换代码 - Amazon Q 开发者版

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Q 开发者如何为 Java 语言升级转换代码

为了转换您的代码,Amazon Q Developer 会生成一份转换计划,用于升级项目的代码语言版本。转换代码后,它会提供转换摘要和文件差异信息,以便您在接受更改之前查看更改内容。由于 Amazon Q Developer 只需进行最少的更改即可使升级后的代码与目标 JDK 兼容,因此需要进行额外的转换才能升级项目的库和依赖项。以下各部分提供了有关 Amazon Q 如何执行转换的更多详细信息。

构建代码并创建转换计划

要开始转换您的代码,Amazon Q 会在本地构建您的项目,并生成包含源代码、项目依赖项和构建日志的构建构件。

生成构建构件后,Amazon Q 会在安全的构建环境中构建您的代码,并创建针对您要升级的项目或模块定制的转换计划。转换计划概述了 Amazon Q 将尝试进行的具体更改,包括新的依赖项版本、主要代码更改以及针对已弃用代码的建议替代方案。这些更改基于您的代码的初步构建,并且可能会在转换过程中发生变化。

转换您的代码

为了转换您的代码,Amazon Q 会尝试根据转换计划中提出的更改将您的代码升级到目标 Java 版本。当它进行更改时,它会重新构建并运行源代码中的现有单元测试,以迭代方式修复遇到的任何错误。JDK 可以从以下源代码版本升级到目标版本:

  • Java 8 到 17

  • Java 8 到 21

  • Java 11 到 17

  • Java 11 到 21

  • Java 17 到 21

为了使您的代码与目标 Java 版本兼容,Amazon Q Developer 只需进行最少的必要更改。成功升级到 Java 17 或 21 后,需要进行额外的转换才能升级项目的库和依赖项。选择相同的源代码版本和目标代码版本(例如,17 到 17)。

Amazon Q 在升级您的代码时会尝试进行以下更改:

  • 根据目标 Java 版本建议更新已弃用的代码组件

  • 将常用库和框架升级到与目标 Java 版本兼容的版本。这包括将以下库和框架更新到其最新可用的主要版本:

    • Apache Commons IO

    • Apache HttpClient

    • bc-fips

    • Cucumber-JVM

    • Hibernate

    • jackson-annotations

    • JakartaEE

    • Javax

    • javax.servlet

    • jaxb-api

    • jaxb-impl

    • jaxen

    • jcl-over-slf4j

    • json-simple

    • jsr305

    • junit

    • junit-jupiter-api

    • Log4j

    • Micronaut

    • Mockito

    • mockito-core

    • Okio

    • PowerMockito

    • Quarkus

    • slf4j

    • slf4j-api

    • Spring Boot

    • Spring Framework

    • Spring Security

    • Swagger

    • testng

查看转换摘要并接受更改

转换完成后,Amazon Q 会提供一份转换摘要,其中包含有关其所做更改的详细信息,包括最终构建的状态,该状态表明您的整个项目是否已升级。您还可以查看构建日志摘要,以了解阻碍 Amazon Q 在升级版本中构建代码的任何问题。

转换摘要还包括转换计划中提议的更改与 Amazon Q 最终为升级您的代码所做的更改之间的差异,以及原始计划中未包含的任何其他更改。

查看转换摘要后,您可以在文件差异视图中查看 Amazon Q 提议的更改。在您接受更改之前,Amazon Q 建议的任何代码更改都不会影响您当前的项目文件。转换后的代码在转换完成后 30 天内可用。

完成部分成功的转换

根据代码库的复杂性和具体情况,在某些情况下,转换可能会部分成功。这意味着 Amazon Q 只能转换项目中的某些文件或代码区域。在这种情况下,您必须手动更新剩余的代码,这样您的项目才能使用更新的语言版本进行构建。

为了帮助转换代码的其余部分,您可以在 IDE 中使用 Amazon Q 聊天功能。您可以让 Amazon Q 查看部分更新的文件,并提供新的代码来解决诸如编译错误之类的问题。您还可以使用 /dev@workspace 之类的功能来包含更多项目内容作为上下文,并一次获取有关多个文件的建议。