写点什么

Spring Migration Analyzer:从 Java EE 到 Spring 转换的工具

  • 2013-01-02
  • 本文字数:970 字

    阅读完需:约 3 分钟

SpringSource 已经发布了第一个里程碑版本的 Spring Migration Analyzer 。这是一个辅助类的应用程序,它会扫描 JavaEE 构件并生成一个简要的报表,在这个报表中包含了如果这个应用程序要迁移到 Spring 时要特别注意的 API 和类。这个报表有助于做出迁移评估,因为它可以作为估计迁移难度的工具。

Spring Migration Analyzer 是作为命令行工具提供的,它可以运行在安装了 JVM 的操作系统之上(它只会使用 Java)。它以已存应用程序的二进制部署文件(如 war 或 ear)作为输入并产生一个 HTML 的输出报表(在单独的目录中)。这个报表包含了探查到的 JavaEE 技术列表以及将其迁移到 Spring/Tomcat 所需工作的建议。页面上会有一个整体概览区域,你可以点进去查看每个类会如何影响迁移工作(如果他们使用了特定的 JavaEE API 的话)。会考虑到的技术包括:

以下是一个示例报表:(点击放大)

Spring Migration Analyzer 也会探测到一些其他的特性如 EJB 的类型(如 Session 还是 Entity)、Spring 库、供应商特定的部署描述符甚至编码中使用的事务。对于探测到的每一项技术都会有文字来描述在进行 Spring 迁移时要怎么做。报表还包含了应用程序中每个类的结构如域、方法、java 导入以及抛出的异常等。

但需要注意的是,如果按照默认配置运行 Analyzer 的话,你会得到很多错误的结果。这主要是因为它处理的是二进制构件而不是源码,它不会区分应用程序的实际代码和外部类库的代码。理想情况下,报表中要排除外部类库而只关心开发人员创建的源码(就像其他的软件报表工具所处理的代码一样,这样的工具如单元测试、代码覆盖率以及质量检查等)。

例如,一个使用 Logback 来记录日志的应用程序会报告它使用了 JMS:

但源码中并没有 JMS 的代码,这只是因为 logback 二进制包中导入了 JMS,因为它支持将 JMS 作为日志目标。因此为了得到更为有意义的结果,你要使用“exclude”命令行分支来忽略外部类库(如 /WEB-INF/lib 目录)。并且输出目录不能与输入目录相同。

因此,尽管在理论上工具的这个命令行分支是可选的,但实际上它是必需的。总之,以目前的状态Spring Migration Analyzer 是一个有用的主意,但是为了避免向用户产生错误的报表还需要一些调整。

想得到更多信息的话,可以查看文档以及当前的缺陷列表。它的源码托管在 GitHub 上。

2013-01-02 06:522424

评论

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

从今天起真正释放创造力 | Werner Vogels 在 re:Invent 2022带来多项开发者福音

亚马逊云科技 (Amazon Web Services)

亚马逊云科技

连阿里P8都赞不绝口的“分布式架构原理设计笔记”到底有多牛

小小怪下士

Java 程序员 分布式 架构设计

带你实现react源码的核心功能

goClient1992

React

亚马逊CTO Werner Vogels 演讲Keynote:世界一直无序地运转向前 @AWS re:Invent 2022

B Impact

【MindStudio训练营第一季】MindStudio Profiling随笔

Angel Wings

华为 AI 调优 MindStudio Ascend

面试官:你先回去等通知吧!这个Java岗位我还有机会吗?

钟奕礼

Java java面试 java编程 程序员、

盘点 | 4类爆款小游戏开发引擎

FinFish

游戏引擎 小游戏 小游戏开发 微信小游戏 游戏开发引擎

手写一个react,看透react运行机制

goClient1992

React

实时数据赋能制造业产能升级:详解半导体和汽车制造行业最佳实践(活动报名)

tapdata

制造业 数据集成 汽车制造 实时数据 半导体行业

软件测试 | 测试核心:如何减少线上故障?

测试人

软件测试 软件质量 自动化测试 测试开发

代码安全与质量 | 在这个充满变数的时代,花小钱办大事

龙智—DevSecOps解决方案

代码质量 代码安全检测 代码安全 安全防护

隐藏复杂、抽象概念,「技术无感化」 ——The Future of Database2022 | 黄东旭新番

B Impact

2022年第三季度汽车品牌智能网联竞争力指数(ICVCI)分析

易观分析

汽车 易观分析 智能网联

2023来袭,分享500道我收集的Java架构面试题

钟奕礼

Java 程序员 java面试 java编程

版本控制 | 一文了解什么是组件化开发,以及如何从单体架构转向组件化开发

龙智—DevSecOps解决方案

组件化 组件化开发

信息安全等级保护的5个级别分别是什么?最高级别是哪个?

行云管家

等保 等级保护

一个月面试了3家大厂Java岗,我发现这几个突破点

钟奕礼

Java 程序员 java面试 java编程

深入React源码揭开渲染更新流程的面纱

goClient1992

React

Log4Shell 漏洞披露已近一年,它对我们还有影响吗?

SEAL安全

Log4Shell 12 月 PK 榜

【MindStudio训练营第一季】MindStudio 可视化AI应用开发体验随笔

Angel Wings

MindStudio

为什么我们不支持手工上传镜像

Jianmu

Docker 容器 镜像

【MindStudio训练营第一季】MindStudio 专家系统随笔

Angel Wings

mindspore MindStudio

HummerRisk 入门3:开发手册

HummerCloud

云安全 云原生安全 12月月更

手机银行APP评测系列:天津银行持续优化手机银行用户体验,但仍需加强细节提升

易观分析

手机银行 用户

双机互备是什么意思?双机互备就是双机热备吗?

行云管家

双机热备 双机互备

可观测性神器之Micrometer

宋小生

监控 可观测性 micrometer

【MindStudio训练营第一季】MindStudio 高精度对比随笔

Angel Wings

MindStudio

36kr企服点评启发:“信任的基础是真实,只要做到真实,一定能够建立起双向信任”

B Impact

金融信创正当时!看这家银行如何实现数据仓库与营销平台国产替换?

索信达控股

数据库 银行 数据库迁移 智能营销

觅健牵手博鳌医院战略合作:即时优享全球肿瘤创新治疗方案

联营汇聚

神秘新品即将来袭!大上科技开启护眼新未来倒计时

硬科技星球

Spring Migration Analyzer:从Java EE到Spring转换的工具_Java_Kostis Kapelonis_InfoQ精选文章