您是否有应用程序正在 Java 8(甚至 Java 7)上运行,并且想知道需要执行多少工作才能让应用程序在 Java 11 上运行? Migration Toolkit for Application Binaries 可以帮助到您!该工具可以扫描您的应用程序,发现迁移至 Java 11 时可能会遇到的任何潜在问题。
Migration Toolkit for Application Binaries 已经存在多年,可以帮助开发者从本地和云端的各种 Java SE 和应用程序服务器环境中进行迁移。多年来,我们增加了对以下场景的支持:帮助开发者升级到更新的 Java SE 级别。我们之前添加了迁移规则,用于标记从 Java 6 迁移至 Java 7 以及从 Java 7 迁移至 Java 8 时遇到的问题。现在,我们支持从 Java 8 迁移至 Java 11。您可能会问:"Java 9 和 10 发生了什么?"对于 Java 9 和 10,Oracle 宣布这些版本只有短期支持(六个月),我们由此认为大多数开发者都会通过长期支持的发行版(即 Java 11)进行大规模的迁移工作。本教程着重从 Java 11 角度介绍一些有趣的工具相关功能部件;如果您想了解有关其他方案的更多信息,可访问该工具的下载页面,上面提供的众多资源。
在迁移至 Java 11 时,应用程序开发者遇到的最大障碍之一就是 从 JDK 中删除 Java EE 模块 。这意味着,如果您的应用程序正在使用其中任何模块内的任何类(javax.jws、javax.xml.ws 等中的类),这些应用程序将无法在 Java 11 上运行,因为它们无法访问这些类。这是坏消息。不过好消息是,Liberty 团队做了大量工作,当您在 Liberty 应用程序服务器(Open Liberty 和 WebSphere Liberty)上迁移至 Java 11 时,使得删除的 Java EE 模块变为可用。 对于缺失的 Java EE 程序包,只需向 server.xml 添加正确的功能部件,您的应用便可再次运行。
那么,如何知道应用程序是否正在使用任何已删除的程序包呢?如何知道要启用哪些 Liberty 功能部件呢?Java 11 引入的其他更改如何应对?如何处理这些问题?该工具可以就此提供帮助。我建议您使用 Migration Toolkit for Application Binaries 着手开展工作。该工具将扫描您的应用程序二进制文件(.ear 或 .war 文件)并生成一份报告,突出显示在您的应用程序中发现的任何潜在的 Java 11 问题。如果您正在使用 Eclipse,该工具还有一个源扫描程序版本,用于检查源代码,并标记二进制扫描程序查找的相同问题。当您确定需要在应用程序中更改源代码时,这个源扫描程序工具将很有用,因为它使您能够导航到需要处理的确切代码行。本教程重点介绍二进制扫描程序,因为这是准备迁移应用程序的第一步。
java -jar binaryAppScannerInstaller.jar
cd <target directory>/wamt
现在,您已准备好对您的应用程序运行该工具。您需要指定有关场景的一些信息,以便标记相关的迁移规则:
以下是我运行的命令,用于告知二进制扫描程序我要从 Liberty 迁移至 Liberty,并从 Java IBM 8 迁移至 OpenJDK 11(此命令适用于 Open Liberty 和 WebSphere Liberty):
java -jar binaryAppScanner.jar C:/demo/Apps/MyApplication.war --sourceAppServer=liberty --targetAppServer=liberty --sourceJava=ibm8 --targetJava=openjdk11
运行报告需要几秒钟/分钟,具体取决于应用程序的大小。运行完成后,将生成一份 HTML 报告。生成的 HTML 报告的顶部显示该工具标记了多少个问题(如果有)。HTML 报告包括四个部分:
可随意阅读整个报告,但此处我真正感兴趣的是详细的迁移分析报告。就我而言,我对使用一些 javax.xml.ws 类的应用程序运行了报告。因此,我收到的这份报告显示我有一条标记的警告规则:
该工具正在扫描许多迁移规则。对于每条规则,我们都包含了迁移建议和一些链接,可帮助您解决这些问题。您将需要浏览每条规则并阅读帮助,确定适合您的应用程序的正确操作过程。运行以下命令,可获得有关可用二进制扫描程序参数的更多信息:
java -jar binaryAppScanner.jar --help --all
本文翻译自: Migration to Java 11 made easy (2019-02-26)