使Java应用程序现代化

watsonx Code Assistant 标准计划

您可以将您的应用程序现代化为 Liberty。 要使应用程序现代化,首先要上传迁移包或构建和分析应用程序,然后修复应用程序问题。

开始之前,请 设置您的企业Java环境

可供选择的应用服务器源有

  • Apache Tomcat 应用服务器
  • JBoss 应用程序服务器
  • Weblogic Application Server
  • WebSphere Application Server 传统 V6.1
  • WebSphere Application Server 传统 V7.0
  • WebSphere Application Server 传统 V8.0
  • WebSphere Application Server 传统 V8.5.5
  • WebSphere Application Server 传统 V9.0
  • 其他第三方应用服务器

仅Eclipse IDE:为了在多Java中获得最佳效果,请确保将聚合器模块和每个子模块作为单独的项目导Eclipse。如果您将顶层目录作为单个项目导入,Watsonx Code Assistant 不太可能成功检查您的项目。

完成上传应用程序迁移包的步骤或分析应用程序的步骤。 完成一组步骤后,您可以修复迁移问题。 无论是迁移捆绑步骤还是应用程序分析,解决问题的步骤都是相同的。 问题解决后,您就拥有了一个现代化的应用程序。

分析代码所需的时间

分析您的申请所需的时间各不相同。 以下是典型的时间。

分析所需时间
时间 应用程序详细信息
几秒钟到几分钟 少于100个班级
2到10分钟 20,000至50,000行代码
10分钟或以上 30万行代码

当watsonx Code Assistant分析应用程序时,默认情况下会将某些第三方软件包排除在代码分析之外。 更多信息,请参阅 排除在应用程序分析之外的第三方软件包

使用迁移包对应用程序进行现代化改造

以下步骤假定使用 IBM Cloud® Transformation Advisor 3.10或更高版本生成迁移捆绑包。 迁移包包含一份需要解决的现代化问题清单。 它还包含自动生成的配置信息,以便应用程序在 Liberty 中正常运行。

如果您已经为项目上传并分析了迁移包,则上传新的迁移包会覆盖现有的分析。

在您对应用程序进行现代化改造之前,请完整构建您的应用程序,以确保您从已知良好的应用程序构建版本开始。 这种构建方式还能确保类文件与最新的源代码保持一致,这是运行自动化程序为 Java 版本升级添加更改之前的一项要求。

如果您恢复了对代码的修改,如果您想再次对应用程序进行现代化,则必须点击返回上传/分析,并进行全面分析。

  1. 在集成开发环境中,右键单击要现代化的应用程序目录中层次结构中的任何项目。

  2. 使用任一路径启动现代化进程。 两者都一样:

    • 点击 watsonx Code Assistant 然后单击“现代化为自由”。
    • 单击现代化 Java 应用程序,然后单击现代化为自由
  3. 在现代化 <您的*应用程序名称>*页面,上传迁移包。

    集成开发环境会分析项目文件夹,收集有关应用程序的信息,然后上传Transformation Advisor生成的迁移包。

    1. 单击上传迁移包

    2. 从列表中选择应用程序捆绑包 ".zip 文件,然后单击 "打开"

      上传迁移包的过程完成后,“现代化 <您的应用程序名称>”页面会显示迁移包中的以下配置文件:

      • server.xml 是 Liberty 的配置文件,启动应用程序时需要使用。
      • 只有在为 Liberty 应用程序构建容器映像时才需要使用 Containerfile
    3. 选择要添加到项目中的文件,然后点击 "Proceed

      • (必填)选择 "server.xml 文件。
      • (可选)只有在为 Liberty 应用程序构建容器映像时,才选择 "Containerfile 文件。

    迁移包上传完成后,将显示需要修复或审查的问题。

  4. 修复应用程序的问题。

    根据要解决的问题,解决这些问题的能力可以是自动的、辅助的,也可以是自主的。 附加信息"选项卡上的问题不需要更改代码,但您可能需要验证或测试这些问题,并根据需要更改代码。

分析应用程序,使其现代化

以下步骤假定您正在分析应用程序,而不是使用Transformation Advisor迁移捆绑包对应用程序进行现代化。 分析会在 "server.xml 文件中为您提供需要解决的问题列表和有限的服务器配置。 server.xml 文件包含您的应用程序使用的功能列表,但不包括其他配置信息,如数据库连接或JMS配置。

如果您恢复了对代码的修改,如果您想再次对应用程序进行现代化,则必须点击返回上传/分析,并进行全面分析。

  1. 在集成开发环境中,右键单击要现代化的应用程序目录中层次结构中的任何项目。

  2. 使用任一路径启动现代化进程。 两者都一样:

    • 点击 watsonx Code Assistant 然后单击“现代化为自由”。
    • 单击现代化 Java 应用程序,然后单击现代化为自由
  3. 在现代化 <您的*应用程序名称>*页面上,展开分析应用程序,然后单击开始分析

  4. 选择分析参数,这些参数定义了应用服务器的分析规则。

    1. 选择应用服务器源和应用服务器目标。

    2. 可选择更改JavaSE 源,它会自动显示推荐值。

      推荐值基于watsonx Code Assistant为应用服务器源推荐的JavaSE 版本。 您的应用服务器使用的JavaSE 版本可能与推荐版本不同。 如果是,则将JavaSE 源更改为应用服务器使用的版本。

      例如,"watsonx Code Assistant推荐使用 "Java为 "WebSphere Application Server,"V8.5.5为 SE 8,尽管您的应用服务器可能使用的是 "JavaSE 的早期版本。

      支持的最低Java版本是Java5。

    3. 选择JavaSE 目标。

    4. 单击“分析” 或“构建并分析”。

      应用程序分析是在应用程序二进制文件中进行的。 在开始分析之前,必须先构建应用程序。 您可以自动或手动构建应用程序。

      • 要自动构建和分析应用程序,请单击“构建和分析”。
      • 如果手动构建应用程序,请首先构建应用程序,然后单击“分析”

      应用程序构建和分析完成后,将显示需要修复或审查的问题。

      当您点击 “构建和分析”时,应用程序将以当前 Java 源版本构建,以便分析 Java 升级问题。 请确保IDE具有 Java 开发工具包的 Java 源版本,并已进行配置,以便IDE能够成功构建应用程序。

  5. 修复应用程序的问题。

    根据要解决的问题,解决这些问题的能力可以是自动的、辅助的,也可以是自主的。 附加信息"选项卡上的问题不需要更改代码,但您可能需要验证或测试这些问题,并根据需要更改代码。

为什么分析报告中包含的是.class 文件而不是.java 文件?

在对二进制文件(JAR/WAR/EAR)进行分析时,问题总是在类文件中被发现。 在 watsonx Code Assistant 之外运行二进制扫描程序时,它无法访问源代码,因此.class 文件会包含在分析报告中。 导入迁移计划或在 watsonx Code Assistant 中运行分析时,报告会显示对类文件的引用,但 watsonx Code Assistant 会将.class 文件链接到.java 文件,而.java 文件会显示在 watsonx Code Assistant 用户界面中。

修正问题并审核申请的补充信息

现代化 <您的*应用程序名称>*页面列出以下信息:

  • 应用服务器源和应用服务器目标
  • JavaSE 版本源和JavaSE 版本目标
  • 技术报告、清单报告和分析报告的链接
  • 问题修复选项卡(可以是自动修复、辅助修复或自主修复)以及其他信息。

在运行自动修复时,以及在 Java 版本目标更改后构建应用程序时,都需要目标 Java 开发人员工具包。 确保为您的集成开发环境配置了目标 Java 开发工具包。

  • Eclipse IDE 扩展会自动尝试从 IDE 中所有已配置的 Java 开发工具包集合中查找与 Java 版本目标相匹配的正确 Java 开发工具包。
  • 在 Visual Studio Code IDE 中,必须手动更改 Java 开发工具包配置。

完成自动修复

如果自动修复选项卡中有一个或多个修复,请选择该选项卡。

由于watsonx Code Assistant会为您完成修复,因此您无需修改任何代码。 大语言模型 (LLM) 不用于自动修复。

  1. 展开说明并阅读。
  2. 可选择打开问题,查看问题描述。
  3. 单击运行自动修复
    • 自动修复功能已修复。
    • 外部问题会保留在列表中,直到您更新相关的依赖关系。
  4. 运行自动修复完成后,单击“重建”并刷新以更新问题列表。

如果自动修复失败,并在控制台输出中产生编译错误,请确保将 maven-compiler 插件的版本更新为 3.13.0 或更新版本。

完成辅助修复

如果“辅助修复” 选项卡中有一个或多个修复,请选择该选项卡。

在您修复代码的同时,watsonx Code Assistant会在聊天中为您提供修改代码的建议。

针对不同问题提供的援助水平各不相同。 辅助修复功能可以帮助您解决问题,有时代码建议会为您解决所有或大部分问题。 其他时候,代码建议可能只是简单地移除一个旧的 API 以防止编译失败,您无需采取进一步行动。 在每次辅助修复时,遵循步骤非常重要,这样才能了解每次辅助修复的价值和局限性。 如果未提供完整的代码建议,您可以在聊天中以协助修复为话题展开对话。 继续参与聊天,加深对问题及其解决方案的理解。

有关辅助修复相关问题的列表,请参阅 辅助修复参考资料

使用辅助修复:

  1. 展开“说明”并按说明操作。

  2. 每个问题都要展开。

  3. 点击 “阅读更多” 可展开阅读。

  4. 单击问题中列出的文件。

    文件在编辑器中打开。

  5. 展开问题查看问题详情。

  6. 如果在详细信息中指示您选择代码片段,请选择该代码片段。

  7. 单击“帮助我” 以获取解决问题的帮助。

    如果使用的是 Visual Studio Code,则有以下限制:

    • 确保只在一个活动编辑器中选择 Java 代码。
    • 确保选择 Java 代码的活动编辑器与 " Modernize to Liberty "或 " Java Upgrade "视图处于不同的编辑器组中。
  8. 按照聊天中的代码建议修改代码,以解决问题。

    有时,聊天会提供信息性回复,而不是代码建议。

  9. 在修复问题时,点击 “重建”并刷新,直到所有辅助修复都完成。

完成自主修复

如果“自主修复” 选项卡中有一个或多个修复,请选择该选项卡。

您可以更改代码并确定如何修复代码,也可以通过聊天获得帮助。

  1. 展开“说明”并按说明操作。

  2. 扩展每个问题。

  3. 点击 “阅读更多” 可展开阅读。

  4. 单击问题中列出的文件。

    文件在编辑器中打开。

  5. Click 开始聊天, which is displayed for each occurrence of the issue.

    聊天窗口打开,您可以获得帮助。 例如,您可以询问代码助手当前代码的作用。 或者,您可以询问是否存在问题代码的替代实现方法。

  6. 在修复问题时,点击 “重建”并刷新,直到所有自动修复的问题都得到解决。

处理补充信息

如果“附加信息”选项卡上有一个或多个数字,请选择该选项卡。

标签上所列问题的确定方式与其他标签上问题的确定方式相同。 虽然附加信息问题不需要更改代码,但请查看这些问题,以确保在代码迁移后您的应用程序能够正常运行。

附加信息可能指出一些问题,例如API中的细微行为变化或数据库或用户注册中的连接问题,以及如何解决这些问题。

例如,您的应用程序连接到一个数据库。 通过阅读本期杂志,您可以确保为应用程序配置的主机和端口在应用程序迁移时是有效的且可访问的。

  • 展开说明并遵照执行。

  • 点击每期。

    • 点击 “阅读更多” 可展开阅读。
    • 点击问题中列出的文件链接,查看代码。

处理当前应用程序之外的外部问题

在进行修复时,有些问题可能会被归类为当前应用程序之外的外部问题。 这些问题的源代码在指定的存档中,不属于当前源程序的一部分。

如果档案是贵组织拥有的图书馆:

  1. 您可以将其相关源代码作为一个单独的应用程序打开,然后使用 watsonx Code Assistant 修复其中的问题。

  2. 然后,您就可以更新当前的应用程序,使用新的修复版本。

如果档案馆是贵组织不拥有的图书馆:

  1. 您需要更新到不包含此问题的版本。 如果没有这样的版本,您可能需要使用其他技术。

  2. 您可以与 watsonx Code Assistant 开始对话,以帮助确定替代品。 首先,请尝试询问 What is the library X used for?Is it easy to replace?。 继续对话,获取更多有关您使用图书馆的具体信息。