Redian新闻
>
简化 Java 应用的升级:Eclipse Migration Toolkit for Java(EMT4J)

简化 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 的不兼容性,结果会以 ** TXTJSONHTML** 格式输出。

为了演示 EMT4J,考虑如下的样例应用,它调用了 Java 11 中已经删除的 ** Thread.stop() **方法:

Thread thread = new Thread();thread.stop();

在克隆 Git 仓库并将 Maven 工具链配置为 JDK 8 和 JDK 11 之后,可以采用如下命令构建项目:

mvn clean package -Prelease

这将会在emt4j-assembly/target目录生成一个** .zip ** 文件,该文件可以进行解压。在解压后的目录中,就可以进行分析了。例如,在命令行中运行如下的命令:

java -cp "lib/analysis/*" org.eclipse.emt4j.analysis.AnalysisMain -f 8 -t 17     -o java8to17.html /home/user/application/classes

这将会分析指定目录下的类文件并在java8to17.html
文件中显示从 Java 8 升级到 Java 17 时的潜在问题。另外,也可以使用归档文件解压后在bin
目录下的** .bat .sh 脚本来启动命令行分析。README 文件描述了分析类和 JAR ** 文件的所有可用选项。

由此生成的 HTML 文件将会展示描述、解决方案和问题的位置:

1.1 Removed API Back to Content1.1.1 DescriptionMany of these APIs were deprecated in previous releases and     have been replaced by newer APIs.1.1.2 How to fixSee corresponding JavaDoc.1.1.3 Issues ContextLocation: file:/home/user/application/classes/App.class,     Target: java.lang.Thread.stop()V

除此之外,在 Java 应用启动的时候,可以使用 EMT4J 代理,或者在构建应用的时候使用 Maven 插件。

该项目包含了从 Java 8 升级至 11 和从 Java 11 升级至 17 的规则集。例如,用于校验应用是否使用 JDK 内部 API 的 JDK 内部 API 规则:

<rule desc="JDK internal API" type="reference-class"       match-type="by-package" class-package-file="jdk_internals.cfg"    result-code="JDK_INTERNAL" must-contain-in-bytecode="true"    sub-result-code="@{subResultCode}" priority="p4">    <support-modes>        <mode>agent</mode>        <mode>class</mode>    </support-modes></rule>

support-modes 表明该规则是否可以用于 agent 模式和 / 或静态分析其中静态分析也就是 class 模式,能够用于命令行和 Maven 插件中。关于翻译资源的打包是通过 result-code 属性实现的,在本例中,也就是 _JDK_INTERNAL_,它会映射为emt4j-common/src/main/resources/default/i18n目录中的 JDK_INTERNAL.propertiesJDK_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

@RuleImpl(type = "reference-class")public class ReferenceClassRule extends ExecutableRule {

现有的规则可以提供灵感,以便于按照 README 文件所定义的说明添加自定义规则。

原文链接:

Eclipse Migration Toolkit for Java (EMT4J) Simplifies Upgrading Java Applications(https://www.infoq.com/news/2022/12/eclipse-migration-toolkit-java/)

相关阅读:

GraalVM Java 编译器将于 2023 年加入,与 OpenJDK 的发布节奏和流程保持一致(https://www.infoq.cn/article/XOzIWQtI1qUdtX7g0Ej3)

Java 近期新闻:Ideal Graph Visualizer 开源、TomEE MicroProfile 5.0 认证(https://www.infoq.cn/article/vrFf9KauwxZ4bqWr454P)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

Cloud IDE 是不是一个伪命题

阿里辟谣海外建全球总部;科技巨头加速裁员,商学教授直呼企业管理层愚蠢;谷歌Fuchsia OS部门遭遇重大打击 | Q资讯

副业搞得好、赚钱没烦恼:新春程序员寻找“副业”灵感指南

一个科技新时代开启,硅谷五巨头将何去何从

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Eclipse 4.26 (2022-12) 正式发布【内部优惠】【免中介费+免2月房租+送3个月车位|直达BU/NEU/Suffolk/Emerson】近地铁、咖啡厅、超市、商场世界欠她一个诺贝尔奖【Greenhouse 2023waitlist開始排位|本科生可|NEU/伯克利/Suffolk|近Newbury|生活便利】晚风心里吹【现房+排位|Fenway 经典高级公寓|室内洗烘|性价比王】NEU/BU/Berklee|直达Emerson, Suffolk【俯瞰Chinatown奢華公寓|精緻生活】免仲介費|多户型即刻入住|Emerson, Suffolk, NEU|中國胃首选!【Malden优质公寓】人均1500的studio,地铁直达NEU校内,去Tufts/Emerson/Suffolk也方便~国家高性能医疗器械创新中心牵头研发我国首台国产体外膜肺氧合系统(ECMO)获批上市我把你养成这样李文亮说:一个健康的国家不应该只有一个声音!九大投行|Credit Suisse Securities Research Spring Program正在进行中!【撸铁健身人必看高级公寓 | 免1.5月+半中介 | 人均$1157起】直达Suffolk,Emerson, 开车10分钟入市区【现房+排位】【市区顶级公寓】【Emerson/Suffolk/Chinatown/Downtown】【室内洗烘】【接受本科生】【9/1|人均1.4K|21年新建高级公寓|室内洗烘|BU上学10分钟】近公交地铁,直达伯克利,Emerson,Suffolk我国首台国产体外膜肺氧合机(ECMO)成功研制修完又复活!史诗级Log4j漏洞爆发1年仍“阴魂不散”,下一场暴雷可能已在路上Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型(二)[评测]Phanteks Eclipse G360A 评测何时起,“骰子”不读shǎi,改读tóu了?Us and STEM: The Collective Paving The Way for Women in Tech【2/1入住 | 免仲介费 | East Boston超大1.5房】Emerson/Suffolk/NEU首选,$2,400网红炒菜神锅Knife4j 4.0正式发布,新征程!!!【免中介费+2月房租+2月车位|East Cambridge新建】地铁直达BU/NEU/Suffolk/EmersonCLEMENGER BBDO悉尼首席执行官离开该公司;Gemba任命CLAIRE KELLY担任总经理一职(广告狂人日报)【Fenway超低价Studio | BU/Suffolk/Emerson】4分钟上绿线,BU走路上学,电梯公寓,9/1入住【现房+排位|Fenway Park高层景观高级公寓|室内洗烘】NEU/BU/Berklee|直达Emerson,SuffolkFastTrack Universität 2023莱比锡大学公立语言项目招生简章新年快乐!AMINO十二月新鲜事:被投企业Femtosense、纵深视觉完成新一轮融资Shanghai Vows Greater Market Access for Economic Recovery民心、深国交、哈罗都考的 —— CAT4测试如何准备? 重磅CAT4真题分享【波士顿网红公寓始祖|本科生可|NEU/Emerson/Suffolk|近Chinatown|下楼就有CVS和Tatte】【Chinatown高级公寓|免中介费|近Emerson/Suffolk|近绿线、橘线地铁】ICLR 2023 | Specformer: 基于Transformer的集合到集合图谱滤波器
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。