借助大语言模型快速升级你的 Java 应用程序

大家都知道我爱小 Q。在我“转码”的征程中,它就像上帝之手,在我本该枯燥漫长的学习进程中拉满快进条。

不仅是我,最近 Amazon Q Developer 还帮助 Amazon 一个由 5 人组成的团队在短短两天内将 1,000 多个生产应用程序从 Java 8 升级到 Java 17(每个应用程序的平均时间不到 10 分钟)。它就像一个超级英雄,帮助这个团队节省了数月的时间, 以及大量的维护、升级和迁移工作。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

Amazon Q Developer 在升级的过程中不仅智能地升级语言版本,还能识别并替换那些被淘汰的代码,更棒的是,它还能确保新的应用程序是安全的。听起来是不是感觉有点酷?让我们一起来看看它是如何实现的吧!

什么是 Amazon Q Developer?

Amazon Q Develper 是 Amazon Q 的开发者版本,从编码、测试和升级应用程序,到诊断错误、执行安全扫描和修复,以及优化 Amazon 云上资源,可协助开发人员和 IT 专业人员完成所有任务。这篇文章所讨论的执行 Java 版本升级是它的一个非常实用的功能:Amazon Q Code Transformation。

为什么选择 Amazon Q Code Transformation?

  • 节省时间:手动升级可能需要几天甚至几周的时间,而使用 Amazon Q Code Transformation 只需几分钟。

  • 自动化:自动生成转换计划,完成代码转换任务。

  • 高效:识别和更新软件包依赖关系,重构已过时的代码组件,切换到新的语言框架,并纳入安全最佳实践。

  • 安全性:通过升级到最新版本,消除使用不受支持版本所带来的漏洞,提高应用程序的安全性和性能。

Amazon Q Code Transformation 的技术实现

Amazon Q  Developer 完成代码创建,并制定升级计划

Amazon Q Code Transformation plugin 把源代码上传给 Amazon Q, 并在接下来的 24 小时内暂时存放在 Amazon S3 bucket。Amazon Q 会在本地创建包含源代码项目依赖项升级日志的升级项目。

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

Amazon Q  Developer 完成代码转换

为了成功地完成升级任务,Amazon Q 会按照指定好的升级计划来做代码转换。当进行代码更改时,根据情况生成并运行新的单元测试,或者直接运行源代码中已有的单元测试进行验证,并以迭代的方式修复升级过程中遇到的任何错误。

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

  • 将常用库和框架升级到与新的 Java 版本兼容的版本。这包括将 Spring、Spring Boot、Junit、Jakartaee、Mockito、Hibernate 和 Log4j 更新到最新可用的主要版本。

  • 根据建议更新已弃用的代码组件。

开发者查看升级摘要并接受更改

升级完成后,Amazon Q 会提供升级摘要,其中包含所做更改的详细信息,包括:

最终版本的状态,该状态表明整个项目是否已升级。开发者还可以查看日志摘要,了解 Amazon Q 在升级过程中遇到和修复的任何问题。

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

升级完成后,开发者浏览更改摘要,选择接受并提交新代码到代码库。在开发者确认更改之前,Amazon Q 所做的任何代码更改建议都不会影响当前的项目文件。升级后的代码在升级完成后 24 小时内都可用。

升级过程可参看下图。

image.png

作者体验:在一次社区活动中,一位运维工程师找到我,和我确认 JDK 版本升级中,升级计划的创建,升级过程中的测试和错误修复真的都不需要人工干预吗?因为这曾经消耗了他们很多的时间和精力。当他通过一个实验验证了答案后,他无比开心。他说,他真正感受到了人工智能正在帮助他减轻工作压力,简化工作流程。

如何开始?

步骤 1:先决条件

在开始之前,请确保以下条件都已满足:

  • 项目基于 Maven 构建的要升级的 Java 项目,(核查 Java 版本支持的更新)。

  • 在 IDE 中使用 Maven 成功构建项目。

  • 项目源 JDK 在本地可用,并且是源代码的版本。

  • 项目配置正确,指定了正确的 JDK 版本。

  • 项目不使用非 Java 的插件。

步骤 2:在 IDE 中安装 Amazon Q Developer 并配置你的项目

  • 在 IDE 中安装 Amazon Q Developer

  • 在集成开发环境(IDE)中通过 Amazon Web Services tools 安装 Amazon Q Developer,并通过 Amazon IAM 或 Builder ID 进行身份验证。使用 Builder ID 认证登录,无需拥有 Amazon Web Services 账户,即可免费使用 Amazon Q Developer。

  • 在 IDE 中配置项目

  • 1)确保项目根文件夹中包含 `pom.xml` 文件。

  • 2)如果项目包含 Maven 包装器可执行文件(如 `mvnw` 或 `mvnw.cmd`),确保它位于项目的根目录。

步骤 3:代码转换,升级 Java 应用程序版本

有了完全的准备,这个过程就太简单了,如同大象装进冰箱只需要三步一样。

具体的步骤:

1、确保你的 Java 应用程序成功构建

2、选择本地要升级的 JDK,然后在 IDE 中复制并粘贴输出中的路径。

  1. Amazon Q Developer 开始转换,整个过程可能需要几十分钟,无需干预。

  2. Amazon Q code transformation 将执行以下任务顺序:

  3. -在本地构建项目

  4. -上传项目

  5. -在安全的环境中构建项目

  6. -分析代码并制定转换计划

  7. -将代码更新到新的 JDK 版本、依赖项和相关代码

  8. -使用新的 JDK 版本构建项目

  9. -升级已弃用的代码

  10. -完成代码更改和转换摘要,一个包含详细转换信息的 summary.md 文件

  11. -将其提供给你下载

3、下载项目后,查看摘要和所有的变更后确认并将这些更改提交到你的代码存储库。

  1. 可查看的变更包括但不限于:

  2. •查看差异:选择“View diff”来查看建议的更改。在“Apply Patch”对话框中,你可以并排查看项目中的当前代码和建议的更改。例如,你可能会看到某些依赖项的版本已更新,以便与目标 Java 版本兼容。

  3. • 查看详细更改:例如,在 pom.xml 文件中,你可能会看到某个依赖项(如 Project Lombok)的版本已增加。在 Java 文件中,升级后的依赖项使用的注释也可能已更新。

  4. • 代码重构:在新版本中,某些注释或方法可能已经过时或被弃用。

恭喜你!你已经学会如何使用 Amazon Q Code Transformation 完成了你的 Java 升级。升级后的项目不仅更新了依赖项和代码,还纳入了最新的安全最佳实践和性能优化。

立即尝试升级你的 Java 应用程序吧!

更多资源

升级过程中出现的任何问题,都可以问小 Q,当然,也有文档帮助你解决具体的问题:

博客:

  • 使用 Amazon Q 代码转换升级您的 Java 应用程序

文档:

  • AWS Toolkit for IntelliJ IDEA

  • AWS Toolkit for Visual Studio Code

  • Amazon Q Developer 手册

小视频:

  • Amazon Q 小课堂

文章来源:https://dev.amazoncloud.cn/column/article/66a75d4a1968353bac672b17?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=bokey

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773689.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8080端口被占用

微服务项目,启动时发生8080端口占用,但是其他启动了并没有使用到8080端口。 cmd命令窗口查看: netstat -aon | findstr "8080"右键添加需要了解的列表查看8080端口占用的pid比如占用端口的服务是VMware NAT Servic。 在服务管理器(services.msc)中停止VMware NA…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-20 读写I2C接口的RTC时钟芯片

软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录"米联客"FPGA社区 http://www.uisrc.com 视频课程、答疑解惑! 1概述 …

【YashanDB知识库】如何远程连接、使用YashanDB?

问题现象 在各个项目实施中,我们经常遇到客户、开发人员需要连接和使用YashanDB但不知如何操作的问题,本文旨在介绍远程连接、使用YashanDB的几种方式。 问题的风险及影响 无风险 问题影响的版本 历史版本~23.2 问题发生原因 无 解决方法及规避方式 不需要规避 问题分析和处理…

GIS场景零代码拖拽式编辑,支持TMS/WMS/WMTS等多种GIS协议

在三维GIS领域,编辑场景和处理影像数据通常是一个复杂且费时的过程,但现在有了山海鲸可视化,这一切都变得简单有趣。这款免费可视化工具为您提供了零代码拖拽式编辑的体验,让您无需编程知识就能轻松创建和优化GIS场景。通过直观的界面,您只需动动鼠标就能完成从场景编辑到…

【攻防技术系列+代理转发】ICMPSH 工具

虚拟机环境搭建: 【Kali】,192.168.10.131 【window7】,192.168.10.1工具: ICMPSH(基于网络层) Wireshark实验开始前,确保两台主机可以ping通。如果遇到环境ping不通的情况,可以借鉴以下解决方案。 重启网卡:有来有回的过程,数据长度为74。 【kali】: sysctl -w net…

人大金仓踩坑指南

现在越来越多的项目要求-切换国产数据库系统,或达梦(性能高),或人大金仓(扩展性高,更稳定),跨平台如果上来就干,坑还是不少的,本人有幸踩个遍.1. 软件有效期,人大金仓可不便宜,不少政府采购网上都是标价10万+, 测试时候用专业版玩一玩就好到期后,可以直接下载其他版…

linux shell read 按列读取txt文本

前言全局说明一、说明 通常情况下,如果文本里有多列数据,会先读入,然后用 grep 和 awk 先拆分成行,在拆分成列。这样费时费力,遇到特殊字符行,还不好处理。 在解决别的问题时候,无意发现 read 有直接按列读取的功能。二、文件 2.1 存放两列数据的文件 文件名:list.txt…

什么是云计算?

云计算是一种服务的模式(商业模式):将信息类资源以服务的方式提供给用户使用,用户可以便捷的、按需计费的、弹性的从云端获取到信息技术的服务。 云计算技术栈层级:CPU CPU的组成: 1、运算器(算术逻辑单元) 2、控制器() 3、存储器(命令和需要运算的数据) 1、高速缓…

Linux shell mktemp -d命令生成临时文件

前言全局说明一、说明二、mktemp 命令 2.1 创建临时文件 mktemp 2.1 创建临时目录 mktemp -d三、命令行示例 mktemp ll /tmp/tmp.fvi5gFbDgr四、sh 脚本使用 4.1 创建 tmpfile=$(mktemp)4.2 删除 rm "$tmpfile"免责声明:本号所涉及内容仅供安全研究与教学使用,如出…

Linux shell mktemp命令生成临时文件

前言全局说明一、说明二、mktemp 命令 mktemp三、命令行示例 mktemp ll /tmp/tmp.fvi5gFbDgr四、sh 脚本使用 4.1 创建 tmpfile=$(mktemp)4.2 删除 rm "$tmpfile"免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参考、来源: ChatGPT 作…

「代码随想录算法训练营」第二十三天 | 贪心算法 part1

455. 分发饼干题目链接:https://leetcode.cn/problems/assign-cookies/ 题目难度:简单 文章讲解:https://programmercarl.com/0455.分发饼干.html 视频讲解:https://www.bilibili.com/video/BV1MM411b7cq 题目状态:初次有贪心算法的总体概念,有点懵思路: 先将饼干尺寸大…

人工智能|利用人工智能自动找bug

简介 在程序员编程的过程中,产生Bug是一件稀松平常的事情,以前在编码的过程中提前找出Bug,需要通过单元测试、CodeReview等各种方式。 当今,人工智能技术的发展给软件开发和测试带来了许多机会。利用人工智能技术,可以开发出自动化的 bug 检测工具,从而提高软件质量和可靠…