写点什么

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:521963

评论

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

17:为什么说海澜之家是“男人的货仓”和“服装的搬运工”?

punkboy

品牌 电商 电商平台 服装行业 男友力

不惧面试:HTTP协议(一)基础扫盲

悟空聊架构

面试 HTTP post GET 6月日更

【译】JavaScript 代码整洁之道-函数篇

KooFE

JavaScript 大前端 函数 6月日更 整洁代码

Pandas之:Pandas简洁教程

程序那些事

Python 大数据 数据分析 pandas 程序那些事

MySQL基础之三:条件查询

打工人!

MySQL 6月日更

音频和视频流最佳选择?SRT协议解析及报文识别

明儿

音视频 协议 流媒体开发

Python位运算符——详解

在即

6月日更

你知道 Redis 可以实现延迟队列吗?

xcbeyond

队列 延迟队列 6月日更

2017-2020(4周年)读书年度总结及书单

punkboy

程序员 书单 书单推荐 推荐书单

15:需求沟通的灵魂拷问:人与人之间的信任呢?

punkboy

需求管理 需求 需求落地 信任 信任机制

模块五 作业

夏日

架构实战营

可落地的积极心态

蛋先生DX

心态 6月日更

【Vue2.x 源码学习】第五篇 - 数组的劫持

Brave

源码 vue2 6月日更

模块5 设计微博系统中”微博评论“的高性能高可用计算架构

Chris Cheng

架构实战营

(内含福利)不想成为咸鱼,我们怎样找到自己的未来之路呢?

刘华Kenneth

招聘 职场成长 云技术

16:阿里、京东、美团、电通等电商行业营销模型汇总

punkboy

营销 模型 市场营销 营销数字化 电商营销

Golang channel 通道

escray

学习 极客时间 Go 语言 6月日更

【云原生AI】Fluid + JindoFS 助力微博海量小文件模型训练速度提升 18 倍

阿里巴巴云原生

Kubernetes手记(2)- 核心组件/附件

雪雷

k8s 6月日更

公司战略:要不要多元化发展?

石云升

创业 职场经验 6月日更

Go并发编程-channel多路复用

Rayjun

Go 语言 select

Hadoop实战篇(1)

进击的梦清

大数据 hadoop Linux

Java 并发编程—— CountDownLatch 应用

Antway

6月日更

区块链+印章,区块链技术的长期潜力正在释放

CECBC

设计微博系统中”微博评论“的高性能高可用计算架构

方堃

权限与认证:基于JWT的授权实现

程序员架构进阶

架构 JWT 认证授权 28天写作 6月日更

模块5作业

杨彬

#架构实战营

标识符与保留字(即关键字)

在即

6月日更

技术管理简单说

蛋先生DX

技术管理 6月日更

高级软件工程师必备的五大技能

架构精进之路

6月日更 软素质

网络攻防学习笔记 Day36

穿过生命散发芬芳

网络攻防 6月日更

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