NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2023-01-28
    北京
  • 本文字数:1764 字

    阅读完需:约 6 分钟

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

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.niosun.reflect


实际的规则类型_reference-class_位于_emt4j-common/src/main/java/org/eclipse/emt4j/common/rule/impl_目录中,因为 JDK 内部规则中,support-modes的值为agentclass


@RuleImpl(type = "reference-class")public class ReferenceClassRule extends ExecutableRule {
复制代码


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


原文链接:

Eclipse Migration Toolkit for Java (EMT4J) Simplifies Upgrading Java Applications


相关阅读:

GraalVM Java 编译器将于 2023 年加入,与 OpenJDK 的发布节奏和流程保持一致

Java 近期新闻:Ideal Graph Visualizer 开源、TomEE MicroProfile 5.0 认证

2023-01-28 09:3516983

评论

发布
暂无评论
发现更多内容

“双十一”直播纵享丝滑,华为云CDN加速服务极致体验

YG科技

理解JavaScript模运算符

南城FE

JavaScript 前端

AI2024更新,最新Illustrator 2024 for Mac 中文激活版资源

影影绰绰一往直前

Illustrator 2024 ai2024下载 AI2024破解版

Util 应用框架开发环境搭建(四)- 安装 数据库

何镇汐

后端 软件开发 .net core 开源框架

pycharm pro 2023 for mac(Python编辑开发)中文激活版

iMac小白

pycharm破解 PyCharm中文版 PyCharm下载 PyCharm Pro密钥

华为云HR产品:助力先进制造企业实现人力资源数字化转型

YG科技

华为云联合i人事推出一体化智能人力资源解决方案

YG科技

开启数字校园新篇章 福建农林大学智慧校园 “数字FAFU”APP发布会成功举行

轶天下事

VMware Fusion Pro 13 for Mac(VM虚拟机)中文激活版

iMac小白

VM虚拟机 VMware Fusion Pro 13 VMware Fusion Pro

亚马逊云 Lightsail尝鲜

孤虹

亚马逊云

已完结!给小白的《50讲Python自动化办公》

程序员晚枫

Python GitHub Office 自动化办公

Tableau Desktop 2019 for Mac(全能数据分析工具) v2019.1.0完美激活版

mac

数据分析工具 Tableau Desktop 2019 苹果mac Windows软件

开发工具:Xcode for Mac正式版下载

iMac小白

Xcode14 Xcode for Mac Xcode Mac版

云上办赛好帮手,华为云WeLink助力2023年甘肃省大学生GIS应用技能大赛成功举办

轶天下事

第二届OpenHarmony技术大会展区亮点纷呈,多元视角感受智联未来

科技热闻

mac电脑好用的文件夹图标修改器 Folder Factory 中文免激活

胖墩儿不胖y

Mac软件 文件夹图标修改工具 文件夹管理工具

Util 应用框架开发环境搭建(五)- 安装 Git客户端

何镇汐

后端 软件开发 .net core 开源框架

加速智慧校园建设,福建农林大学联合华为云WeLink打造“数字FAFU”APP

轶天下事

文心一言 VS 讯飞星火 VS chatgpt (128)-- 算法导论11.1 3题

福大大架构师每日一题

福大大架构师每日一题

【腾讯云 HAI域探秘】StableDiffusionWebUI一小时搞定100张设计图

不叫猫先生

腾讯云 Stable Diffustion

从零开始搭建个人网站博客

价投小邱

个人博客 个人网站

Util 应用框架开发环境搭建(七)- 安装 Util代码生成器

何镇汐

后端 软件开发 .net core 开源框架

免费算力优化猫狗识别

打工人!

深度学习

Acrobat Pro DC for Mac(最强PDF编辑器) 22.002.20191中文激活版

mac

苹果mac Windows软件 Acrobat Pro DC 2022 pdf制作软件

AI驱动管理升级,WeLink携手华为云差旅共探数智转型新路径

轶天下事

Linux Vim撤销和恢复撤销快捷键

智趣匠

喜讯!极限科技成功签约中国一汽搜索数据库三年许可订阅合同!

极限实验室

easysearch 极限科技 中国一汽

“双11”华为云CDN大文件下载加速,更快更稳更优质

YG科技

IT运营与DevOps:有何不同?

SEAL安全

DevOps 企业号11月PK榜 IT运营

Util 应用框架开发环境搭建(六)- 安装 NodeJs

何镇汐

后端 软件开发 .net core 开源框架

北漂五年程序员|腰突颈椎病康复指南

九旬

程序员 前端 后端 健康 北京

简化Java应用的升级:Eclipse Migration Toolkit for Java(EMT4J)_编程语言_Johan Janssen_InfoQ精选文章