{"meta":{"title":"使用 GitHub Copilot 现代化 Java 应用程序","intro":"GitHub Copilot可以通过评估代码库、识别升级路径以及自动执行修正和容器化任务来帮助现代化和迁移Java应用程序。","product":"GitHub Copilot","breadcrumbs":[{"href":"/zh/copilot","title":"GitHub Copilot"},{"href":"/zh/copilot/tutorials","title":"教程"},{"href":"/zh/copilot/tutorials/modernize-java-applications","title":"对Java应用程序进行现代化改造"}],"documentType":"article"},"body":"# 使用 GitHub Copilot 现代化 Java 应用程序\n\nGitHub Copilot可以通过评估代码库、识别升级路径以及自动执行修正和容器化任务来帮助现代化和迁移Java应用程序。\n\n<!-- expires 2026-10-31 -->\n\n<!-- When this expires, check with the stakeholder for release #18998 on whether or not the content is still needed -->\n\n在GitHub Copilot中的Visual Studio Code应用现代化扩展通过识别过时的框架、弃用的API和升级障碍，自动执行Java升级。\nCopilot云代理 应用代码更改、更新生成文件，并为你解决生成和 CVE 问题。 <!-- markdownlint-disable-line GHD046 -->\n\n扩展生成的建议和报告可帮助团队快速采用新技术并降低技术债务。\nCopilot 通过可操作的步骤和摘要指导你完成升级，加快和保护迁移，同时减少手动工作量。\n\n有关扩展功能、设置和用户界面说明，请参阅 Microsoft 文档中的 [ GitHub Copilot 应用现代化文档](https://learn.microsoft.com/en-us/azure/developer/github-copilot-app-modernization/)。\n\n## 现代化框架\n\n使用 [Java 升级扩展](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-upgrade)启动代理会话时，该扩展将帮助你使用以下框架实现Java应用程序的现代化。\n\n* **执行评估任务**。 该扩展可以分析代码、配置和依赖项，从而评估应用程序的当前状态。\n* **创建可自定义的现代化计划**。 根据评估，该扩展可以建议现代化路径，包括必要的框架和库更新。\n* **早期识别问题**。 该扩展标识依赖项、过时的库和语言功能以及潜在的迁移问题。 该扩展提供可作的策略来修正问题。\n* **自定义计划**。 根据应用程序的特定需求编辑现代化计划，例如合并组织标准和做法、排除某些组件或确定特定功能或设计模式的优先级。\n* **实现计划**。 该扩展可以帮助应用代码更改、更新生成文件、重构已弃用的 API 以及解决生成和语法问题。 该扩展将在每个步骤后自动修复生成错误并执行测试验证，以确保稳定性和无错误更改。 <!-- markdownlint-disable-line GHD046 -->\n* **查看更改**。 该扩展可以生成详细的升级报告，汇总应用的更改，并列出任何未解决的问题和现代化剩余步骤。\n* **生成单元测试**。 该扩展会自动评估现有测试，并生成新的测试文件并将其添加到工作区。 生成一份报告，汇总生成之前和之后的测试结果。\n* **容器化应用程序**。 该扩展可以自动生成 Dockerfiles、生成映像并验证现代化应用程序在容器服务（如 Azure Kubernetes 服务 (AKS)、Azure 容器应用 和 AKS 自动）中运行的所有内容，从而简化部署和可伸缩性。\n* **准备部署**。 该扩展可以通过生成脚本和配置等部署项目来帮助为容器化和部署准备应用程序。\n* **将部署自动化到 Azure**。 该扩展可帮助您在 Azure 上部署或预配现代化应用程序，生成必要的工件和 Azure 资源，以及执行步骤。\n\n你可以改进团队对应用程序代码库的理解，并利用 Copilot 它来帮助完成复杂的现代化任务，从而节省时间和精力，例如：\n\n* 反向工程和代码转换\n* 漏洞和依赖项分析，以及代码行为检查和修正\n* 自动生成资产、文档和升级报表\n* 测试生成和评估\n* 部署自动化\n\n## 现代化工作流概述\n\n在此示例中，我们将演练使用 GitHub Copilot 中的 Visual Studio Code 应用现代化扩展实现Java应用程序的现代化的高级步骤。\n\n有关详细的先决条件和说明，请参阅 Microsoft 文档中的 [快速入门：通过 GitHub Copilot 应用现代化升级 Java 项目](https://learn.microsoft.com/en-us/java/upgrade/quickstart-upgrade)。\n\n> \\[!NOTE]\n> 在现代化工作流中，在执行特定操作之前，系统经常会提示 Copilot云代理 你进行确认。\n\n### 1.打开Java项目\n\n使用 VS Code 打开项目文件夹。\n\n#### 建议操作\n\n* 在继续之前，请确保项目构建成功。\n* 在开始现代化过程之前，如果遇到生成问题，可以使用 Copilot 来帮助解决这些问题。\n\n### 2.启动现代化工作区\n\n在代理模式下启动 副驾驶聊天 和启动新会话。 选择 **GitHub Copilot 应用现代化 – Java 升级** 从可用工具中。\n\n### 3.分析项目以获取升级机会\n\n```\n          Copilot 将扫描代码库。 分析包括：\n```\n\n* 检测过时的框架（例如 Spring Boot、Jakarta EE、Java SE 版本）。\n* 标识已弃用的 API 和过时模式。 <!-- markdownlint-disable-line GHD046 -->\n* 有关升级机会的建议。\n\n可以在编辑器中查看结果和结构化升级计划，该计划将显示：\n\n* 框架和依赖项的当前和建议版本。\n* 需要迁移或重构的代码位置。\n* 升级阻碍因素或不兼容的依赖项。\n\n#### 建议操作\n\n* 在继续升级之前，请查看并自定义现代化计划。\n\n### 4. 应用 Copilot 升级建议\n\n使用Copilot应用或查看代码更改、更新构建文件和重构API。\n\n如果发现生成错误， Copilot 则可以输入修复和测试循环，直到项目完全编译。\n\n```\n          Copilot云代理 自动更改可能包括：\n```\n\n* 更新 `pom.xml` 或 `build.gradle` 文件以获取新的依赖项版本。\n* 生成拉取请求或直接提交更改。\n* 重构代码以适应 API 的更改。 例如，从 `javax.*` 命名空间迁移到 `jakarta.*` 命名空间。\n* 建议或应用代码转换以应对破坏性更改。\n\n  ```\n          Copilot 将反复迭代并持续修复错误，直到项目成功构建，并修复完所有需要修复的问题。 不需要立即修复的次要问题可能仍然存在。 这些不会阻止升级完成。\n  ```\n\n#### 建议操作\n\n* 在接受之前，请在差异编辑器中查看所有代码更改。\n* 使用 Copilot 进一步解释和记录代码更改。\n* 当扩展提示你时，接受选项以检查因已知 CVE问题而修改的依赖项，并验证代码行为的一致性。\n* 查看剩余的任何问题并评估其重要性。\n\n### 5. 查看升级报告和建议的后续步骤\n\n升级过程完成后，Copilot 将生成包含摘要升级报告：\n\n* 项目信息。\n* 代码行已更改。\n* 更新了依赖项。\n* 汇总的代码更改。\n* 修复了 CVE 安全性和代码不一致问题（如果有）。\n* 未解决的次要 CVE 问题。\n\n#### 建议操作\n\n* 查看报告以了解所做的更改。\n* 按照任何建议的后续步骤完成现代化。\n\n### 完成现代化\n\n为支持现代化而进行进一步的工作可能包括：\n\n* ```\n            彻底**检查**初始现代化和代码更改。 确保满足公司的编码标准和最佳做法。\n  ```\n* 仔细**查看**修改的代码。 例如，检查生成的代码是否符合项目的用途和体系结构。 有关更多建议，请参阅 [查看 AI 生成的代码](/zh/copilot/tutorials/review-ai-generated-code)。\n* **修复错误**。 检查特定内容是否存在细微错误，并使用自己的调试和代码检查工具来评估新内容。\n* **编写测试** 并确定升级项目的测试差距。\n* ```\n            通过删除不再需要的任何文件来**清理**项目。\n  ```\n* ```\n            使用新语言**重构**代码。 现代化过程可能会导致一个项目的体系结构基于原始项目，但这不再是满足需求的理想或最佳解决方案。 现在，你可能想要重构代码，以充分利用语言和所用框架的功能。\n  ```\n* **更新文档**。 项目信息和贡献文件现在可能已过期，需要重写。\n* **容器化**。 更新应用程序代码，生成 Dockerfiles 等容器化文件，并生成映像以测试有效性。 如果需要， Copilot 可以执行这些容器化任务，并创建一个全面的计划，详细说明后续步骤。\n* ```\n            将现代化应用**部署**到目标环境，包括 Microsoft Azure 等云平台。\n  ```\n\n<!-- end expires 2026-10-31 -->"}