## 视频
<video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video>
## 导读
开发人员花费大量时间完成维护和升级遗留应用程序的无差异化工作。团队需要在开发新功能与进行强制性修补和更新工作之间取得平衡。现在,利用生成式AI的力量,[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail)可以加快这些关键的升级任务,将应用程序转变为使用最新的语言特性和版本。加入本次会议,了解您的团队如何自动化Java应用程序升级,并很快将.NET框架应用程序移植到跨平台的.NET。
## 演讲精华
<font color = "grey">以下是小编为您整理的本次演讲的精华,共1100字,阅读时间大约是6分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font>
视频详细介绍了亚马逊的一项创新功能——[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation,该功能旨在简化应用程序升级和维护过程的自动化。据Vas(首席产品经理)和J Shara(高级软件开发经理)表示,应用程序升级具有一定的挑战性,因为在更新和现代化现有应用程序与执行生产业务工作和交付新功能之间需要取得平衡。这些相互冲突的优先事项通常会导致升级进程延误,从而形成技术债务。
具体来说,Vas指出,企业在开发新应用程序时,通常会采用最新和最先进的技术和语言。然而,随着时间的推移,新的技术和功能不断涌现。这使得保持应用程序更新变得复杂且耗时,主要原因是两个方面:
1. 了解哪些新功能是相关且需要更新的需求进行研究,以了解每个新版本的特性。
2. 许多代码很可能是由其他团队或已不在公司的开发人员编写的,因此在理解现有代码库方面存在很大的学习曲线。
因此,升级进程不断被推迟,导致技术债务持续累积。这迫使组织定期进行紧急的升级活动以满足安全要求,从而影响了更高效工作的开展。
例如,Vas解释说,对于Java,每两年发布一次新的长期支持(LTS)版本。即使您不进行升级,较旧版本在一段时间后也会失去支持。因此,您必须不断升级以获取安全更新。然而,这与在冲刺周期中交付业务目标和新功能相冲突。是否升级版本还是推出新API功能始终是一个矛盾。所以升级堆积起来,增加了技术债务。
为了解决这个问题,亚马逊推出了Q Code Transformation,旨在通过自动化升级过程的一部分来提高开发者的业务生产力。目前,该功能支持将Java 8和Java 11应用程序升级到Java 17,计划在未来扩展对其他Java版本和其他编程语言的支持。
1. 使用旧版Java构建原始应用程序并进行测试
2. 应用知识库以进行必要的更改,如升级超过20万个分析的库的依赖项
3. 使用新版Java重新构建应用程序
4. 利用知识库和大语言模型逐步修复任何构建错误
5. 提供包含所有已完成更改的补丁文件
这完全自动化了开发者必须执行的手动过程——研究新的语言版本,确定需要升级的依赖项,进行代码更改,逐个修复构建错误等。对于甚至稍微复杂一些的应用程序,这通常需要几天到几周的有价值的开发者时间。
例如,J Shara分享了一个经验,即一位工程师花费了近一周的时间才将一个大型应用程序从JUnit 4迁移到JUnit 5。而使用亚马逊Q代码转换,这些繁琐的升级可以在分钟内自动处理。
目前,知识库专注于开源包。因此,对于任何内部依赖项,可能仍然需要进行一些手动升级工作。但是,亚马逊计划通过分析客户代码库来构建特定于内部库和框架的定制知识,以便在未来改进这一点。
总的来说,[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation工具大大减轻了升级和维护的工作负担,使得开发者能够专注于打造直接为客户创造价值的创新功能。它提高了生产力,同时也确保了应用程序的安全性,因为它们始终处于更新状态并符合最新版本的要求。除了Java升级外,即将推出的还有将.NET应用程序迁移到Linux上的.NET Core的支持。
亚马逊内部使用了这个工具,在短短几天内成功地将1000多个Java应用程序进行了迁移,预计节省了大约10年的开发人员时间和精力。这充分展示了通过使用[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation自动执行应用升级所带来的生产力的大幅提升。
视频中展示了一个实例,展示了在名为JPetStore的样本应用程序上进行Java升级的过程。演讲者逐步演示了如何在亚马逊云科技Toolkit插件中启动升级,监控转换进度,以及查看运行在Java 17上所需的所有更改所生成的补丁文件。
一些具体的升级亮点包括:
- 将Jackson Core库依赖项更新为新兼容的版本
- 使用新的Java 17注释对代码进行注解
- 删除已废弃的公共访问修饰符
- 将JUnit 4测试用例迁移到使用新注解标准的JUnit 5
据演讲者介绍,这些繁琐的代码更改(如升级版本和迁移框架)对于大型代码库来说可能需要几周的工作。然而,使用[Amazon Q](https://aws.amazon.com/cn/q/?trk=cndc-detail) Code Transformation,它们可以在点击一下的情况下自动处理。
尽管目前知识库的主要关注点是开源包,但演讲者承认了限制,并表示计划通过分析客户内部代码来扩展它。总之,他们强调了这一功能如何帮助开发人员减少在无关维护工作上花费的时间,使他们能够专注于通过构建新功能来推动业务价值。
总体来说,亚马逊的Q代码转换自动化技术使得应用从较旧版本升级到较新版本的过程变得更加简单高效。这使得开发者可以摆脱繁琐且耗时的维护工作。通过运用来自超过20万开源项目的知识,并将规则驱动系统与大型语言模型相结合,仅需点击一次按钮,就能在几分钟内完成Java应用的升级。这不仅提升了生产力,还增强了安全性,使开发者能够更专注于为客户提供新功能。
**下面是一些演讲现场的精彩瞬间:**
在亚马逊云科技的re:Invent上,主要的产品经理正在向与会者展示一项新功能。
![](https://d1trpeugzwbig5.cloudfront.net/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation/images/rebranded/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation_0.png)
在Java开发领域,要将代码库和依赖项升级到新框架和功能,同时处理破坏性更改,这是一项耗时且重要的投资。
![](https://d1trpeugzwbig5.cloudfront.net/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation/images/rebranded/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation_1.png)
知识库是通过深入挖掘已升级的开源仓库和内部应用程序构建而成的,这些知识库构成了其他所有步骤所依赖的核心部分。
![](https://d1trpeugzwbig5.cloudfront.net/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation/images/rebranded/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation_2.png)
升级依赖项、应用知识、使用Java 17构建、修复错误并通过构建/测试周期迭代是亚马逊云科技上现代化应用程序的关键步骤。
![](https://d1trpeugzwbig5.cloudfront.net/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation/images/rebranded/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation_3.png)
该系统提供了一个详细的转型摘要,详细说明了项目现代化的升级情况。
![](https://d1trpeugzwbig5.cloudfront.net/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation/images/rebranded/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation_4.png)
演讲者展示了如何使用亚马逊云科技CodeGuru中的D升级工具将Java代码升级到Java 17。
![](https://d1trpeugzwbig5.cloudfront.net/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation/images/rebranded/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation_5.png)
领导者强调了亚马逊云科技如何使得在两天内开发1000个应用程序成为可能,而传统的时间线是每个应用程序需要2-3天,这节省了将近10年的开发努力。
![](https://d1trpeugzwbig5.cloudfront.net/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation/images/rebranded/DOP229-Automate_app_upgrades___maintenance_using_Amazon_Q_Code_Transformation_6.png)
## 总结
亚马逊Q代码转换是一项自动化应用升级和维护的新功能,旨在帮助开发者实现应用程序的现代化,同时最大程度地减少对业务生产力的影响。在应用升级过程中,主要挑战在于如何在引入新特性和维护现有代码之间取得平衡。手动升级需要投入大量时间,因为开发人员需要研究依赖关系并解决兼容性问题。然而,亚马逊Q代码转换能够自动处理这些繁琐的任务。
该系统能够分析您的代码库,运用专业知识进行依赖项升级、更新注释以及修复编译错误等。系统会快速迭代以解决各种问题,采用基于规则的引擎和大语言模型等技术。这样,您可以在开发者工作量最低的前提下获得经过验证的升级后的代码库。
要使用此功能,只需通过亚马逊云科技工具箱插件进行访问。点击“转换”并选择目标版本(例如Java 17)即可。代码将被临时上传至安全的云环境进行分析和处理。随后,您将收到一个补丁文件,在将其集成到您的IDE之前可以进行查看。
目前,该功能主要针对流行的开源Java库。未来发布的版本将处理自定义内部依赖项、.NET升级以及其他语言。最终目标是消除重复的无差别维护工作,使开发者能够专注于高价值功能的交付。
## 演讲原文
## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
[2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站")
[点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯!
[点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯!
## 即刻注册亚马逊云科技账户,开启云端之旅!
[【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“")
[【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")