Migration Toolkit for Runtimes 简介
了解如何使用 Migration Toolkit for Runtimes 迁移和现代化 Java 应用程序和组件。
摘要
使开源包含更多
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 简介
1.1. 关于 Migration Toolkit for Runtimes
本指南适用于希望使用 Migration Toolkit for Runtimes (MTR) 迁移 Java 应用程序或其他组件的工程师、顾问和其他组件。它提供 Migration Toolkit for Runtimes 概述,以及如何使用工具计划和运行您的迁移。
第 2 章 关于 Migration Toolkit for Runtimes
什么是 Migration Toolkit for Runtimes?
Migration Toolkit for Runtimes (MTR) 是一个可扩展、可自定义的基于规则的工具,简化了 Java 应用程序的迁移和现代化。
MTR 检查应用程序工件,包括项目源目录和应用程序存档,然后生成 HTML 报告突出显示需要更改的区域。MTR 支持许多迁移路径,包括以下示例:
- 升级至 Red Hat JBoss Enterprise Application Platform 的最新版本
- 从 Oracle WebLogic 或 IBM WebSphere Application Server 迁移到 Red Hat JBoss Enterprise Application Platform
- 容器化应用程序并使之成为云就绪
- 从 Java Spring Boot 迁移到 Quarkus
- 从 Oracle JDK 更新至 OpenJDK
- 从 OpenJDK 8 升级到 OpenJDK 11
- 从 OpenJDK11 升级到 OpenJDK 17
- 将 EAP Java applicatons 迁移到 Azure
- 将 Spring Boot Java 应用程序迁移到 Azure
有关用例和迁移路径的更多信息,请参阅开发人员网页的 MTR。
Migration Toolkit for Runtimes 如何简化迁移?
Migration Toolkit for Runtimes 会查找常见资源和在迁移应用程序时的已知问题。它为应用程序使用的技术提供了高级视图。
MTR 生成详细的报告,评估迁移或现代化路径。此报告可帮助您估算大型项目所需的工作量,并减少涉及的工作。
2.1. MTR 功能
Migration Toolkit for Runtimes (MTR) 提供了很多功能,可协助规划和执行迁移项目。
- 规划和工作估算
- MTR 通过详细说明工作类型并估算完成任务来协助项目经理。在 MTR 中作为故事点表示的工作量级别。实际估算将基于所需技能以及所需的迁移工作分类。
- 识别迁移问题并提供解决方案
- MTR 确定迁移问题并突出显示发生问题的代码中的特定点。MTR 建议代码更改并提供其他资源,帮助工程师解决特定问题。
- 详细报告
- MTR 生成大量报告,为迁移工作和特定迁移任务的详细信息提供高级别视图。您可以查看应用程序中所有应用程序的迁移问题、图表和概述信息、应用程序中的模块细分问题、报告使用的技术以及有关其他应用程序和服务的依赖关系。您还可以检查源文件,以查看发生问题的代码行。有关可用 MTR 报告的更多信息,请参阅 CLI 指南。
- 内置规则和迁移路径
- MTR 附带一组核心规则,可为多个常见迁移路径提供迁移协助。这些规则确定使用其他应用服务器中的专有功能,或者弃用了旧版 JBoss EAP 的子系统。MTR 还包含用于识别常见迁移问题的规则,如硬编码 IP 地址和 JNDI 查找。
- 规则可扩展性和自定义
- MTR 提供了创建强大和复杂的规则的功能。您可以在 MTR 提供的核心规则集上扩展,并创建规则来识别对迁移项目非常重要的额外问题。您还可以覆盖核心规则并创建自定义规则类别。有关自定义 MTR 规则的更多信息,请参阅规则开发指南。
- 分析源代码或应用程序存档的功能
- MTR 可以评估应用程序存档或源代码,并可一起评估多个应用程序。它可识别跨多个应用程序共享的存档,这有助于减少更准确的工作估算。
2.2. 关于 MTR 规则
Migration Toolkit for Runtimes (MTR) 包含基于规则的迁移工具,用于分析您计划迁移的应用程序所使用的 API、技术和架构。实际上,MTR 分析过程使用 MTR 规则来实施。MTR 使用内部规则从存档、解译文件、扫描和分类文件类型中提取文件类型,分析 XML 和其他文件内容,分析应用程序代码,以及构建报告。
MTR 根据规则执行结果构建数据模型,并将组件数据和关系存储在图形数据库中,然后可以根据迁移规则的要求以及报告目的进行查询和更新。
MTR 规则使用以下规则模式:
when(condition) perform(action) otherwise(action)
MTR 开箱即用提供一组全面的标准迁移规则。由于应用程序可能包含自定义库或组件,因此 MTR 允许您编写自己的规则来识别现有规则集中未涵盖的组件或软件。
如果您计划自己编写自定义规则,请参阅规则开发指南以了解具体步骤。
第 3 章 支持的配置
3.1. 支持的迁移路径
Migration Toolkit for Runtimes (MTR) 支持从第三方企业应用服务器(如 Oracle WebLogic Server)迁移到 JBoss 企业应用平台(JBoss EAP),并升级到最新版本的 JBoss EAP。
MTR 提供了一组全面的规则,用于评估应用程序以在 Red Hat OpenShift Container Platform (RHOCP) 上进行容器化和部署。您可以运行 MTR 分析来评估您的应用程序是否适合迁移到多个目标平台。
下表描述了最常见的迁移路径。
表 3.1. 支持的迁移路径: Source platform TOKEN 目标
| 源平台 TOKEN | JBoss EAP 6 | JBoss EAP 7 | RHOCP | OpenJDK 8、11 和 17 | Apache Camel 3 | Spring Boot on Red Hat Runtimes | Quarkus | Azure |
|---|---|---|---|---|---|---|---|---|
| Oracle WebLogic Server | ✔ | ✔ | ✔ | ✔ | - | - | - | - |
| IBM WebSphere Application Server | ✔ | ✔ | ✔ | ✔ | - | - | - | - |
| JBoss EAP 4 | ✔ | ✘ [a] | ✔ | ✔ | - | - | - | - |
| JBoss EAP 5 | ✔ | ✔ | ✔ | ✔ | - | - | - | - |
| JBoss EAP 6 | 不适用 | ✔ | ✔ | ✔ | - | - | - | - |
| JBoss EAP 7 | 不适用 | ✔ | ✔ | ✔ | - | - | - | ✔ |
| Oracle JDK | - | - | ✔ | ✔ | - | - | - | - |
| Apache Camel 2 | - | - | ✔ | ✔ | ✔ | - | - | - |
| Spring Boot | - | - | ✔ | ✔ | - | ✔ | ✔ | ✔ |
| Java 应用程序 | - | - | ✔ | ✔ | - | - | - | - |
[a]
虽然 MTR 目前不提供此迁移路径的规则,但红帽咨询可帮助从任何源平台迁移到 JBoss EAP 7。
| ||||||||
第 4 章 先决条件
安装了 Java 开发套件 (JDK)。MTR 支持以下 JDK:
- OpenJDK 11
- Oracle JDK 11
- 8 GB RAM
-
macOS 安装:
maxproc的值必须是2048或更高版本。
第 5 章 关于工具
Migration Toolkit for Runtimes (MTR) 提供了多个工具,可帮助您进行迁移和现代化工作的不同阶段。查看每个工具的详情,以确定哪个适用于您的项目。
- Web 控制台
- Migration Toolkit for Runtimes Operator
- CLI
IDE 附加组件用于:
- Eclipse 和 Red Hat CodeReady Studio
- Visual Studio Code、Visual Studio Codespaces 和 Eclipse Che
- Intellij IDEA
- Maven 插件
5.1. 关于 CLI
CLI 是 Migration Toolkit for Runtimes 的 Migration Toolkit for Applications 中的命令行工具,允许用户对应用程序的迁移和现代化工作进行评估和优先级。它提供了大量报告,突出显示分析而不用其他工具的开销。CLI 包括广泛的自定义选项,允许您微调 MTR 分析选项或与外部自动化工具集成。
有关使用 CLI 的更多信息,请参阅 MTR CLI 指南。
5.2. 关于 Web 控制台
Migration Toolkit for Runtimes 的 Web 控制台允许团队对大量应用程序进行迁移和优先级的迁移和优先级。它允许您将应用程序分组到项目中以进行分析,并提供大量突出显示结果的报告。
5.3. 关于 Eclipse 和 Red Hat CodeReady Studio 的 MTR 插件
Eclipse 和 Red Hat CodeReady Studio 的 Migration Toolkit for Runtimes (MTR) 插件可帮助您迁移和现代化应用程序。
MTR 插件使用自定义规则集对项目进行分析,标记源代码中的迁移问题,提供指导来修复问题,并提供自动代码替换或快速修复(如果可能)。
有关使用 MTR 插件的更多信息,请参阅 MTR Eclipse 和 Red Hat CodeReady Studio 指南。
5.4. 关于 Visual Studio Code 的 MTR 扩展
Visual Studio Code 的 Migration Toolkit for Runtimes (MTR) 扩展可帮助您迁移和现代化应用程序。
该 MTR 扩展还可与 Microsoft 托管的开发环境 Visual Studio Code 空间兼容。
MTR 扩展利用自定义规则集来分析您的项目,标记源代码中的问题,提供指导来修复问题,并提供自动代码替换(如果可能)。
有关使用 MTR 扩展的更多信息,请参阅 MTR Visual Studio Code 扩展指南。
5.5. 关于 Maven 插件
Migration Toolkit for Runtimes 的 Maven 插件集成到 Maven 构建流程中,允许开发人员每次执行源代码时持续评估迁移和现代化工作。它提供了大量报告,突出显示分析结果,专为希望更新每个构建的开发人员而设计。
第 6 章 规划应用程序迁移
6.1. 评估迁移的目标
许多企业都面临着保持现有业务运作运作的挑战,同时还能尝试创新。通常,通过提高预期,可以更快地提供新功能并降低成本。
在评估迁移或现代化工作量时,务必要解决特定于您的组织的挑战。组织面临的常见挑战是有限的预算,缺乏内部技能、感知风险、没有已知可预测的流程以及及时准确的工作量估算。
通常,评估大规模中间件迁移或现代化工作量时的目标如下:
- 预测工作量和成本水平
- 调度应用程序迁移和处理冲突
- 在代码、基础架构、流程或知识级别识别所有潜在风险
- 预测实现业务案例的投资回报
- 识别并减轻对业务的风险
- 减少对现有业务运营的中断
红帽已制定了一项策略来最大限度地降低风险,并使应用程序迁移和现代化更加高效。
6.2. 红帽的应用程序迁移方法
红帽已制定了一项策略,使大规模应用程序迁移到 Red Hat JBoss Middleware 可量化、成本更低、更风险且更易于完成。
从专有或过时的中间件平台迁移到 Red Hat JBoss Middleware,通过支持应用程序基础架构提供轻量级、模块化和云就绪中间件,从而提高团队效率。JBoss 中间件和其他红帽技术还提供了现代化应用程序开发和交付的绝佳机会,让您可以更迅速地创新。
6.2.1. 最佳实践
红帽建议在规划和执行迁移或现代化时考虑以下实践:
创建用于信息共享的集中式协作平台。
全面、易访问的文档非常重要,因此可通过解决同一问题两次,轻松共享知识并确保不会重复工作。建议您记录以下项目:
- 逐步指南,用于从头开始迁移或现代化应用程序。
- 已知和遇到问题的解决方案集合。
- 关于新平台的信息。
- 对特定试点项目所做的更改记录。
尽可能重复使用、自动化和标准化。
考虑重复使用现有组件而不是创建新组件。自动化与应用程序生命周期相关的流程,如构建、配置、部署和测试。标准化和记录软件打包格式、配置管理、库和依赖项。
使用可靠的可重复方法。
建议是采用实际方法并尽可能进行一些更改,以获得功能相同的应用程序。
涉及早期针对选定的 Red Hat Middleware 组件的红帽专业技术。
这对使迁移和现代化的低风险、可预测且高效性至关重要。联系红帽咨询以获得帮助。
6.2.2. 方法
红帽推荐的方法论是成熟的、可扩展的方法,可帮助您逐步规划和执行迁移或现代化。
图 6.1. 红帽迁移方法

该方法由以下阶段组成:
- 发现
- 探索技术和识别问题、组织要求和挑战。讨论选项和潜在方法。
- 设计
- 从应用程序、基础架构、流程和知识角度识别并缓解最大风险。为解决方案建立策略。证明技术并构建业务案例。
- 部署
- 根据明确的交付模型执行之前定义的策略,以正确地扩展现代化或迁移。
6.2.2.1. 发现阶段
图 6.2. 红帽迁移方法:发现阶段

发现 阶段是您将所有利益相关者和决策者汇聚在一起,以了解当前状态和业务驱动,以及确定迁移或现代化需求。
在此阶段,您将探索技术并讨论潜在的方法。确定现有痛点、问题、要求和一些潜在的挑战。定义高级业务优先级和讨论范围。确定您希望在实现应用程序开发和交付的现代化方式,以便更快地创新。
通常,这会在与红帽专家的研讨会中进行介绍。
6.2.2.2. 设计阶段
图 6.3. 红帽迁移方法:设计阶段

设计阶段是当您确定所有风险时,制定出一个策略和目标架构,证明其技术并建立业务案例。这个阶段由以下步骤组成:
- 评估
检查现有基础架构、架构、技术和应用程序。识别依赖项、知识、流程和生命周期。定义所需的基础架构、架构、技术和应用程序。确定可行性和潜在风险。草案一个计划并提供粗略估计。
使用 Migration Toolkit for Runtimes web 控制台或 CLI 分析应用程序有助于确定依赖项、潜在风险和相对工作。有关如何使用这些工具的信息,请参阅 Web 控制台指南或 CLI 指南。
- 证明
- 解决并记录所确定的技术风险,例如,高风险项目和问题未知。构建并塑造新的平台基础架构。根据结果重新定义估算。
- 实验项目
选择一小组代表应用程序来转换。根据需要完成目标平台基础架构。在进程进行微调时更新文档。此试点项目由迁移执行中的一个或多次迭代组成,在部署阶段扩展。
使用 Migration Toolkit for Runtimes MTR 插件加快代码迁移。有关如何使用 MTR 插件的信息,请参阅 Eclipse 和 Red Hat CodeReady Studio 指南。
- 计划
- 根据前面的步骤的结果,对估算并优化项目计划。定义在 Deploy 阶段用于完成迁移的 rollout 策略。准备和安排相关的技术支持课程。
6.2.2.3. 部署阶段
图 6.4. 红帽迁移方法:部署阶段

部署阶段是在设计阶段创建的计划时。在此阶段,您将扩展整个转型过程,以完成计划并将所有应用程序带到新的生产环境。
计划以迭代方式运行,以递增方式传递值。对于每个迭代,您不断对计划和文档发现的验证,以改进下一指纹。
使用 Migration Toolkit for Runtimes MTR 插件可加快每个迭代速度。它可用于 Eclipse 或 Red Hat CodeReady Studio,并在源代码中直接标记迁移问题,提供内联提示,并提供代码更改建议。有关如何使用 MTR 插件的信息,请参阅 Eclipse 和 Red Hat CodeReady Studio 指南。
附录 A. 参考材料
A.1. 其他资源
A.1.1. 参与
为了帮助应用程序的 Migration Toolkit for Runtimes 包括大多数应用程序结构和服务器配置,您可以使用以下项目帮助:
- 发送电子邮件到 jboss-migration-feedback@redhat.com,并告诉我们哪些 MTR 迁移路径。
- 提供示例应用程序来测试迁移规则。
识别迁移可能很难迁移的应用程序组件和问题区域。
- 编写这些问题迁移区域的简短描述。
- 编写简短概述,了解如何解决问题迁移区域。
- 在应用程序上尝试 Migration Toolkit for Runtimes。请务必报告您遇到的任何问题。
贡献 Migration Toolkit for Runtimes 规则仓库。
- 编写 Migration Toolkit for Runtimes 规则以识别或自动迁移过程。
- 为新规则创建一个测试。
- 规则开发指南中提供了详细信息。
为项目源代码贡献代码。
- 创建核心规则。
- 提高 MTR 性能或效率。
任何级别的参与都非常感谢!
A.1.2. 资源
- MTR论坛 :https://developer.jboss.org/en/windup
- JIRA issue tracker: https://issues.redhat.com/projects/WINDUP
- MTR 邮件列表: jboss-migration-feedback@redhat.com
A.1.3. 报告问题
MTR 使用 JIRA 作为其问题跟踪系统。如果您在执行 MTR 时遇到问题,请提交 JIRA 问题。
更新于 2023-04-06