本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 之类的功能来包含更多项目内容作为上下文,并一次获取有关多个文件的建议。