简化 Java 使用的升级:Eclipse Migration Toolkit for Java(EMT4J)
作者 | Johan Janssen
译者 | 张卫滨
策划 | 丁晓昀
Adoptium 发布了 Eclipse Migration Toolkit for Java(EMT4J),这是一个开源的 Eclipse 项目,能够分析和升级使用的 Java 版,以便于从 Java 8 升级至 Java 11,从 Java 11 升级至 Java 17。EMT4J 将支持升级到未来的 LTS 版本。
很多组织都意见使用最新的 Java 运行时,以获取安全性和功能方面的改良。同时,长期支持(Long Term Support)的 Java 版本每两年发布一次,Spring Framework 6 等项目已经至少需要 Java 17。令人遗憾的是,新 Java 版本的摘用是相对缓慢的。例如,在 2022 年,也就是 Java 11 发布四年之后,只有不到 49% 的 Java 使用在使用该版本。
将使用升级至较新的 Java 版本意味着开发人员需要解决 Java 内部变更和功能移除所带来的所有问题。这涉及的功能包括 Nashorn、J2EE 和 Java 等包的移除、API 的变更以及对 Java 内部访问更严厉的限制。
EMT4J 提供了一个支持 Maven 插件(目前在 Maven 中心仓库尚不可用)、Java 代理以及命令行的解决方案,以便于分析项目与新版本 Java 的不兼容性,结果会以 ** TXT、JSON或 HTML** 格式输出。
为了演示 EMT4J,考虑如下的样例使用,它调用了 Java 11 中已经删除的 ** Thread.stop() **方法:
在克隆 Git 仓库并将 Maven 工具链配置为 JDK 8 和 JDK 11 之后,可以摘用如下命令构建项目:
这将会在emt4j-assembly/target目录生成一个** .zip** 文件,该文件可以进行解压。在解压后的目录中,就可以进行分析了。例如,在命令行中运行如下的命令:
这将会分析指定目录下的类文件并在java8to17.html
文件中展示从 Java 8 升级到 Java 17 时的潜在问题。另外,也可以使用回档文件解压后在bin
目录下的** .bat或.sh脚本来启动命令行分析。README 文件描述了分析类和 JAR** 文件的所有可用选项。
由此生成的 HTML 文件将会展示描述、解决方案和问题的位置:
除此之外,在 Java 使用启动的时候,可以使用 EMT4J 代理,或者在构建使用的时候使用 Maven 插件。
该项目包含了从 Java 8 升级至 11 和从 Java 11 升级至 17 的规则集。例如,用于校验使用是否使用 JDK 内部 API 的 JDK 内部 API 规则:
展开全文
support-modes表明该规则是否可以用于agent模式和 / 或静态分析,其中静态分析也就是class模式,能够用于命令行和 Maven 插件中。关于翻译资源的打包是通过result-code属性实现的,在本例中,也就是 _JDK_INTERNAL_,它会映射为emt4j-common/src/main/resources/default/i18n目录中的JDK_INTERNAL.properties和 JDK_INTERNAL_zh.properties翻译文件。
EMT4J 会扫描使用的中的包和类,比如 _emt4j-common/src/main/resources/default/rule/8to11/data/ 目录中 _class-package-file jdk_internals.cfg文件所定义的sun.nio和sun.reflect。
实际的规则类型reference-class位于emt4j-common/src/main/java/org/eclipse/emt4j/common/rule/impl
目录中,因为 JDK 内部规则中,support-modes的值为agent和class。
现有的规则可以提供灵感,以便于按照 README 文件所定义的阐明添加自定义规则。
原文链接:
Eclipse Migration Toolkit for Java (EMT4J) Simplifies Upgrading Java Applications(/)
相关阅读:
GraalVM Java 编译器将于 2023 年加进,与 OpenJDK 的发布节奏和流程保持一致()
Java 近期新闻:Ideal Graph Visualizer 开源、TomEE MicroProfile 5.0 认证()
声明:本文为 InfoQ 翻译,未经许可禁止转载。
点击底部阅读原文访问 InfoQ 官网,获取更多出色内容!
今日好文推举
Cloud IDE 是不是一个伪命题
阿里辟谣海外建全球总部;科技巨头加速裁员,商学教授直唤企业治理层愚蠢;谷歌Fuchsia OS部门遭遇重大打击 | Q资讯
副业搞得好、赚钱没烦恼:新春程序员觅觅“副业”灵感指南
一个科技新时代开启,硅谷五巨头将何往何从