借助 Amazon Q Code Transformation (预览版)升级你的 Java 应用程序

Java
Linux
re:Invent
生成式人工智能
Amazon Q
0
0
随着我们的应用程序开始老化,要保持它们的安全性和平稳运行需花费越来越多的精力。负责升级的开发人员,必须花费时间重新学习以往升级中已经发现的破坏性变更和性能优化的复杂性和细微差别。因此,对于他们而言,很难在开发新功能和基本维护任务之间保持平衡。 今天,我们在此将发布 [Amazon Q Code Transformation](http://aws.amazon.com/q/aws/code-transformation?trk=cndc-detail) 的预览版。该款新产品借助 [Amazon Q](http://aws.amazon.com/q?trk=cndc-detail) 可简化现有应用程序代码的升级和现代化任务,[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) 是一种由生成式[人工智能](https://aws.amazon.com/generative-ai/?trk=cndc-detail)驱动的新型助手。[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) 专为工作而生,可以根据您的业务进行定制。 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 目前可以执行 Java 应用程序的升级,从版本 8 和 11 升级到版本17,即 Java 的长期支持(LTS)版本。不久之后,该产品便能将基于 Windows 的.NET Framework 应用程序转换为跨平台.NET。 此前,开发人员可能需要花费两到三天来升级每个应用程序。我们的内部测试显示,相比于通常耗费数天甚至数周的手动升级,转换功能可以在几分钟内升级一个应用程序,从而帮助开发人员释放出时间专注于新的业务需求。例如,亚马逊云科技内部的一个团队成功地在2天内将一千个生产应用程序从 Java 版本 8 升级到版本 17。升级应用程序的平均时间为 10 分钟,最长的升级耗时不到一小时。 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 可自动分析现有代码,生成一个转换计划,并完成计划所建议的转换任务。在此过程中,它会识别和更新包依赖关系,重构已弃用和效率低下的代码组件,切换到新的语言框架,并整合最佳的安全实践。完成后,用户在接受变更之前,可查看转换后的代码,完善构建和测试结果。 通过这种方式,只需执行几个简单的步骤,便可使应用程序保持更新状态以及获得持续支持,如此就可取得性能优势,并避免因使用不受支持版本而产生的漏洞,从而帮助开发人员释放出时间专注于新的业务需求。下面我就为大家介绍一下如何在实际中进行操作。 ### 将 Java 应用程序从版本 8 升级到版本 17 在本次演示中,我将使用 IntelliJ IDEA(同样适用于 Visual Studio Code)。为了在我的 IDE 中使用 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation,我安装了最新版本的 [Amazon Toolkit for IntelliJ IDEA](https://aws.amazon.com/intellij/?trk=cndc-detail),并使用公司提供的 HYPERLINK "https://aws.amazon.com/iam/identity-center/" [Amazon IAM Identity Center](https://docs.aws.amazon.com/codewhisperer/latest/userguide/q-authentication.html?trk=cndc-detail) 凭据登录。需要注意的是,要访问 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation,CodeWhisperer 管理员需要在企业内使用的配置文件中,明确给予 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) 访问权限。 我打开一个我从未有时间更新到 Java 较新版本的旧项目。该项目使用 [Apache Maven](https://maven.apache.org/?trk=cndc-detail) 执行构建管理。项目对象模型(POM)文件(`pom.xml`),即项目的 XML 表示,位于根目录中。 首先,在项目设置中,我会检查项目是否配置为使用正确的 SDK 版本(在本例中为版本 1.8)。选择左侧窗格上的 Amazon Toolkit,然后选择 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) + CodeWhisperer 选项卡。在 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) (预览版)部分,选择 Transform 。 ![1.png](https://dev-media.amazoncloud.cn/19e98a7901254834b6d5aec9fcff887f_1.png "1.png") 这时会打开了一个对话框,我将在进行转换之前检查是否选择了正确的 Maven 模块。 ![2.png](https://dev-media.amazoncloud.cn/ce54a8a0c2b24f07b6b89f6b01b191d6_2.png "2.png") 随机在 Transformation Hub 窗口中跟踪进度。对于我的小型应用程序,升级在几分钟内便可完成,而对于更大的应用程序,可能需要一个多小时。 端到端的应用程序升级包括三个步骤: 1. **识别和分析应用程序**:代码被复制到云中的托管环境,其中构建过程会基于存储库中的说明进行设置。在这个阶段,需要升级的组件将被识别。 2. **创建转换计划**:对代码进行分析,并创建一个 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 的转换方案,该方案将列出升级代码所需的步骤,包括更新依赖关系,构建升级代码,然后对升级过程中遇到的任何构建错误中进行迭代修复。 3. **生成代码,测试构建与转换完成**:以迭代方式遵循转换计划来更新现有代码和配置文件,根据需要生成新文件,使用代码提供的测试进行构建验证,并修复在失败的构建中识别出的问题。 ![4.png](https://dev-media.amazoncloud.cn/81740ef4e0b647488762328e83f710bd_4.png "4.png") 几分钟后,转换完毕,任务成功完成。此时,我可以打开查看转换计划和转换摘要。选择 View diff 以查看更改建议在 Apply Patch 对话框中,我可以看到已添加、修改或删除的文件的总结。 ![5.png](https://dev-media.amazoncloud.cn/a0aa11ffe72a49aebe3e2aaa63039cd1_5.png "5.png") 首先,我会选择 `pom.xml` 文件,然后选择 Show Difference (带有左/右箭头的图标),以便将项目中当前代码与建议的更改项目进行并排查看。例如,为了与目标 Java 版本实现兼容,我看到其中一个依赖关系([Project Lombok](https://projectlombok.org/?trk=cndc-detail))的版本已经得到添加。 ![6.png](https://dev-media.amazoncloud.cn/00af4c952769425a82cd1cf2fa714471_6.png "6.png") 在 Java 文件中,经升级的依赖关系所使用的注解已完成更新。在新版本中,`@With` 已被提升,而 `@Wither` (曾经是实验性的)已被弃用。而这些变更将在 `import` 语句中得以体现。 ![7.png](https://dev-media.amazoncloud.cn/8b8ec47c06e5491791c0f53a971d3cad_7.png "7.png") 还有一个摘要文件,我将其保存在代码仓库中,以便快速查找完成升级所做的更改。 我会花一些时间审核文件。然后,选择 OK 以接受所有变更。 现在,补丁已成功应用,并且建议的变更已与代码完成合并。将变更提交至到我的仓库,然后将注意力转移至还在等待迁移完成的关键业务变更。 ### 注意事项 今天,[Amazon Q Code Transformation](http://aws.amazon.com/q/aws/code-transformation?trk=cndc-detail) 的预览版将于 [Amazon Toolkit for IntelliJ IDEA](https://aws.amazon.com/intellij/?trk=cndc-detail) 和 [Amazon Toolkit for Visual Studio Code](https://aws.amazon.com/visualstudiocode/?trk=cndc-detail) 内上线,其面向群体为 [Amazon CodeWhisperer Professional Tier](https://docs.aws.amazon.com/codewhisperer/latest/userguide/q-authentication.html?trk=cndc-detail) 的用户。为使用 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation,[CodeWhisperer](https://docs.aws.amazon.com/codewhisperer/latest/userguide/q-authentication.html?trk=cndc-detail) 管理员需要给予使用企业内配置文件的访问权限。 预览版期间,用户使用 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 不会产生额外费用。用户可以将使用 [Apache Maven](https://maven.apache.org/?trk=cndc-detail) 构建的 Java 版本 8 和 11 应用程序升级至 Java 版本 17。项目必须在根目录中带有 POM 文件(`pom.xml`)。我们将很快增添可将基于 Windows 的.NET Framework 应用程序转换为跨平台.NET 的选项,并帮助用户加速迁移到 Linux。 一旦转换任务完成,用户可以使用差异视图来验证和接受建议的变更。最终的转换摘要会提供 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 更新的依赖关系和代码文件的详细信息。它还提供了在升级代码的最终构建中遇到的任何构建失败的详细信息,用户可以使用这些信息来修复问题并完成升级。 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 将亚马逊云科技针对自动推论和静态代码分析的长期投资与[生成式人工智能](https://aws.amazon.com/generative-ai/?trk=cndc-detail)的强大功能进行结合,整合了我们发现对于特定上下文代码转换至关重要的基础模型,这些基础通常需要对带有不匹配变更的长尾 Java 库进行更新。 除了由亚马逊云科技构建的生成式人工智能驱动的代码转换之外,[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 还可使用 [OpenRewrite ](https://www.moderne.io/community?trk=cndc-detail)的部分组件,以进一步加速 Java 升级服务。在亚马逊云科技,我们的许多服务都使用开源组件构建,促进这些社区的长期可持续性对我们和我们的客户至关重要。这就是为什么于我们而言,回馈给 OpenRewrite 这样的社区是很重要的,这有助于确保整个行业能够继续受益于它们的创新。OpenRewrite 的处方和改进项的开发是 [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation 的组成部分,而亚马逊云科技计划将其贡献给开源社区 “大幅度提升软件的适应的速度是任何企业最根本的优势之一。这就是为什么我们很高兴看到亚马逊云科技将 OpenRewrite (开源的自动代码重构技术)作为他们服务的一个组成部分,”[Moderne](https://www.moderne.io/?trk=cndc-detail)(OpenRewrite 的赞助商)首席执行官兼联合创始人 [Jonathan Schneider](https://www.linkedin.com/in/jonkschneider/?trk=cndc-detail) 说道。“我们很高兴亚马逊云科技加入 OpenRewrite 社区,并期待他们的贡献,使迁移框架、修补漏洞和更新 API 变得更加容易。” ### 赶快升级你的 Java 应用程序 [Amazon Q Code Transformation 产片页面](http://aws.amazon.com/q/aws/code-transformation?trk=cndc-detail) ### 了解更多有关 Amazon Q 的信息 - [新型生成式 AI 助手 Amazon Q(预览版)上线](https://aws.amazon.com/blogs/aws/introducing-amazon-q-a-new-generative-ai-powered-assistant-preview?trk=cndc-detail) - [Amazon Q(预览版)为IT专业人员与开发人员提供生成式人工智能驱动的辅助](https://aws.amazon.com/blogs/aws/amazon-q-brings-generative-ai-powered-assistance-to-it-pros-and-developers-preview?trk=cndc-detail) - [使用Amazon CodeCatalyst中的生成式 AI 助手 Amazon Q 提高开发人员的工作效率(预览版)](https://aws.amazon.com/blogs/aws/improve-developer-productivity-with-generative-ai-powered-amazon-q-in-amazon-codecatalyst-preview/?trk=cndc-detail) - [Amazon Connec t与 Amazon Q 内新生成式人工智能功能 推进联络中心服务持续完善](https://aws.amazon.com/blogs/aws/new-generative-ai-features-in-amazon-connect-including-amazon-q-facilitate-improved-contact-center-service?trk=cndc-detail) - [Amazon QuickSight 中的新功能 Amazon Q 将在生成式人工智能辅助下更快、更便捷地搜集数据信息(预览版)](https://aws.amazon.com/blogs/aws/new-amazon-q-in-quicksight-uses-generative-ai-assistance-for-quicker-easier-data-insights-preview/?trk=cndc-detail) — [Danilo](https://twitter.com/danilop?trk=cndc-detail) 文案:Upgrade your Java applications with [Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation (preview) 文章来源:https://aws.amazon.com/cn/blogs/aws/upgrade-your-java-applications-with-amazon-q-code-transformation-preview/?trk=cndc-detail
0
目录
关闭