写点什么

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

评论

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

员工遇到问题 - 是给答案还是给引导?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

我的学习笔记

SilentMacUser

Python JavaScript 学习 大前端 开发

张开怀抱迎接Golang

Kylin

读书笔记 语法 3月日更 Java转go Go 语言

大作业(二)

Binary

Elasticsearch 写入流程 Making Changes Persistent

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

简述软件不可用性及解决办法

跳蚤

我的Java转Go之路

roseduan

Java 转行 Go web Go 语言

多应用集中落地,四川区块链产业爆发增长

CECBC

区块链

数据采集之Flume采集及点击流模型详解

五分钟学大数据

大数据 28天写作 3月日更 flume 点击流模型

雄岸科技区块链布局价值待考

CECBC

区块链 科技

架构师是什么?

ES_her0

28天写作 3月日更

「架构师训练营 4 期」 第十一周 - 001&2

凯迪

架构师训练营 4 期

场景化面试:Kafka 为何有如此高的吞吐量和性能

面试官问

kafka 零拷贝 PageCache

【笔记】第七周 第 2 课

Geek_娴子

「架构师训练营 4 期」 第十周 - 001&2

凯迪

架构师训练营 4 期

【得物技术】前端微服务

得物技术

微服务 大前端 得物技术

React 中 useContext 和 useMemo 一般性使用

sadhu

React useContext useMemo React Hooks

还原五百丁APP需求文档

林亚超

人社部拟发10几个新职业,区块链行业占两个

CECBC

区块链人才

软件工程任务排期方法

steve_lee

大作业(一)

Binary

区块链+版权:NFT出圈,善用技术能否“破心中贼”?

CECBC

数字技术

MySQL调优

Sakura

28天写作 3月日更

第十一周作业

Geek_mewu4t

Vue3源码 | 深入理解响应式系统下篇-effect

梁龙先森

源码分析 大前端 Vue3

又一款Nginx 管理可视化神器!通过界面完成配置监控,一条龙!

Java小咖秀

nginx 运维 后端

安全架构学习总结

跳蚤

英文IT数码类播客学习笔记

SilentMacUser

红帽 互联网 播客 计算机历史

ARTS - week 2

steve_lee

区块链+金融落地应用详解

CECBC

金融

基于 SparkMLlib 智能课堂教学评价系统-系统设计(三)

大数据技术指南

大数据 spark 智能时代 28天写作 3月日更

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