从Java项目生成UML类图

220

有没有一款好的工具可以帮助将Java类反向工程成UML,以展示我的类之间的关系概览?它不需要从JAR文件反编译,因为我有源代码。我知道有很多这样的工具,但大多数只能生成单个类。我希望有一款工具可以生成一个类图,显示当前所有类和包如何协同工作的概览,以便分析当前的架构设计。当然,分析是一件事,另一件事是为了文档记录。

我目前知道几个可以进行反向工程但不能生成概览类图的Java UML工具。以下是我尝试过的清单:

  • StarUML(非常好的开源UML工具,但不能生成概览类图)
  • ArgoUML(速度缓慢,运行不流畅,且容易崩溃)
  • UModel(这是一款商业软件。我曾经使用过,但发现难以使用)
  • MS Visio(它不支持Java UML反向工程。只用于VB)

有没有其他建议可以添加到此清单?并希望能够生成一个概览Java类图。顺便说一下,我正在使用Eclipse。


1
只是为了增加一些可能性,在Eclipse中,有Papyrus。但是,生成代码插件可悲的是对我不起作用。它有太多的依赖项需要安装。最终我使用了eUML2。 - Carven
@user2900314 你应该参考我的早期评论。 - Carven
http://www.objectaid.com/ 对我非常有效。 - Mr. AJ
UMlet也可以做到:http://www.umlet.com/ - Martin Meeser
http://www.zenuml.com不能直接从Java代码生成UML图,但它的DSL类似于Java。顺便说一下,我创建了zenuml :) 它是免费的。 - Devs love ZenUML
显示剩余8条评论
4个回答

139

我写了Class Visualizer,它可以实现以下功能。

这是一个免费工具,拥有所有提到的功能 - 我个人也用它来完成此帖子中所描述的相同目的。

对于每个浏览的类,它会显示两个立即生成的类图:类关系和类UML视图。

类关系图允许遍历整个结构。

它完全支持注释和泛型,还具有特殊的JPA实体支持。

在处理大型项目(数千个类)方面表现非常出色。


12
这个程序非常好。感谢你的创作和提供链接。 - Igor Rodriguez
22
建议在推荐自己涉及的产品、服务等时,作为一种礼貌行为,应该添加免责声明。 - dbm
3
这太酷了。考虑到我们几十年前开始的非常复杂的项目——其中大部分代码都是 JDK 1.1 古董级别的——这提供了一个很好的概览,展示了各个组件之间的联系。作为源代码和 Javadoc 的补充,它以惊人的价格提供了巨大的价值。 - gerardw
2
类可视化器是一个非常出色和极其有用的工具吗?是的,它确实如此。我们如何支付它?它可以免费下载!我们如何学习使用它?花费10分钟观看视频! - Martin Meeser
2
我有一个类调用同一项目/文件夹中另一个类的方法,但是那个类没有显示出来。我添加了所有可能的依赖项,包括所有jdk8的jar包。我错过了什么吗? - Aquarius Power
显示剩余10条评论

50

我使用Soyatec的eUML2插件,在Eclipse下工作良好,可以生成源代码。这个工具在Eclipse 4.4.x版本之前很有用。


1
我从来没有尝试过它,因为我一直认为免费版本没有代码到UML生成的功能。 - Carven
42
太烂了。非常难用。指导要求用户在所有属性前添加“f”字符以进行嗅探。它还具有破坏性,并向所有类文件添加了一堆自己的注释。此外,说明也不直观。如果有人可以反驳我的经验(基于Kepler中的当前版本),请这样做。而且,只有三周的试用期。现在正在卸载。 - ingyhere
当前的Eclipse版本不再提供免费版本了。遗憾。 - rfreytag
该工具暂时无法与Eclipse Mars版本一起使用(还没有?)。 - Christian St.
1
我不喜欢它。它与最新版本的Eclipse/Oxygen不兼容。 - Tayfun Yaşar
显示剩余5条评论

3

关于Eclipse的Omondo插件怎么样?我使用过它并且发现它非常有用。虽然如果你为大型源代码生成图表,可能需要使用更多的内存来启动Eclipse。


链接无法使用。 - Blip

2
我会说MoDisco是迄今为止最强大的一个(虽然可能不是最容易使用的)。
MoDisco是一个通用的反向工程框架(因此您可以定制您的反向工程项目,使用MoDisco甚至可以反向工程Java方法的行为,而不仅仅是结构和签名),但也包括一些预定义的功能,例如从Java代码生成类图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接