PlantUML - 程序员必备绘图工具,不只是UML
能很多程序员喜欢用Viso(window下)或OmniGraffle(Mac 下)绘制UML图。但你用过 PlantUtml 之后,你可能会觉得其他工具简直“弱爆了”!。Viso或OmniGraffle 这类工具的确更灵活,绘制系统结构图的时候更有优势,但在绘制UML方面(不太关心样式的情况下),他们和 PlantUML比起来效率就低很多。PlantUML 完全使用代码方式绘图,更符合程序员的习惯,让逻辑表述更清晰,更易于修改。
官方网址:plantuml.com
图片来源 wikimedia
快速入门
核心的使用方式就是“名称”加“箭头”,官方的入门文档也只有两段话:
编写绘图代码文件,如:sequenceDiagram.txt
@startuml Alice -> Bob: test @enduml
运行命令生成图片,会自动生成名为 sequenceDiagram.png 文件
java -jar plantuml.jar sequenceDiagram.txt
So Easy!,用PlantUML绘制UML图就是这么简单,形象你用Viso之类的工具需要拖拽多久?用代码方式简单明了,几秒钟搞定。
当然这里使用命令行方式生成图片未免有些笨拙,后面会介绍跟好用的工具。
PlantUML 能做什么?
UML 图形是必备
时序图:
更多例子参考官方网址
用例图:
更多例子参考官方文档
类图:
更多例子参考官方文档
活动图/流程图
更多例子参考官方文档
组件图
更多例子参考官方文档
状态图
更多例子参考官方文档
对象图
更多例子参考官方文档
不是只有 UML
PlantUML 的强大之处在于不只能绘制UML,还能绘制更多:
复杂的数学公式:
更多例子参考官方文档
表格:
更多例子参考官方文档
Graphviz/DOT
可以使用 Graphviz/DOT 语法绘图:
图表:
更多例子参考官方文档
使用图标
更多例子参考官方文档
XEarth 地图图片
更多例子参考官方文档
一些好玩的功能
向 史蒂夫·乔布斯 和 斯蒂夫·盖瑞·沃兹尼亚克 致敬!真正的hacker应该做的事情!
来源地址:点这里
ASCII Art
PlantUML还可将绘图代码绘制成 ASCII ART 形式:
来源地址:点这里
还可以将ASCII ART 转成图片形式:
来源地址:点这里
数独游戏
来源地址:点这里
手绘风格
来源地址:点这里
来源地址:点这里
支持中文
工具
在线编辑工具
PlantText UML Editor
非常强大,单不挂代理国内访问会比较慢,工具引了几个google的js文件,国内访问不了只能等到超时才行。
官方在线编辑工具
非常简单的工具,截图:
但是可以生成一个可引用的图片地址:
Plant UML Previewer
也是一个非常简单的编辑器,有预发高亮功能。
其他官方推荐在线编辑器
有些是收费的。
参考:官方文档
本地工具
PlantUML 可集成的IDE工具非常多,几乎主流编辑器都支持:
参考:官方文档
下面仅用Eclipse举例
集成到 Eclipse
安装 Graphviz/DOT 官方网址:https://graphviz.org/download/ Mac可以用
brew install graphviz
安装安装PlantUML Eclipse扩展: 更新地址(Eclipse 4 ):http://basar.idi.ntnu.no/svn/tdt4100/anonymous/trunk/updatesite/
配置Graphviz Path 设置->PlantUML->Graphviz Path
打开PlantUML view window -> show view -> PlantUML
试用 对于已有的Java文件,PlantUML 可以自动绘制出类图:
普通UML绘制试用txt文件即可:
参考:官方文档
自建 PlantUML Web 服务
如果你觉得用别人的在线服务,以及别人的图片地址不够安全或稳定。PlantUML 官方也提供自建Web服务的套件,基于 Java 和 Tomcat。参考:官方文档
自建效果参考 PlantUML Web Server
多种开发语言调用
参考:官方文档
其他在线UML工具
ArgoUml
本地IDE工具,略重,截图:
mermaid
和 PlantUML类似,也是通过代码绘制图形,样式比较美观,功能没有 PlantUML丰富,截图:
Draw.io
完全在线的图例编辑工具,可绘制的类型非常丰富,相当于在线的Viso。
ProcessOn
国产在线图例编辑工具
staruml
收费。
UMLet (UMLet - Free UML Tools for fast UML diagrams)
基于 Java 的UML IDE,比较轻量简单,界面不是很好看。
WebSequenceDiagrams(WebSequenceDiagrams - Draw sequence diagrams online in seconds)
专门绘制时序图的在线图例编辑器,基于代码语法的,有关键字提示功能,类似PlantUML,部分功能免费。
Speeder
一个绘制时序图的前端js框架,收费。
JS Sequence Diagrams
另一个绘制时序图的前端js框架,开源免费,有手绘风格。
10 个 Eclipse UML 插件
Mscgen
类似 PlantUML 的绘图工具,基于代码绘制,非常轻量级,有点简陋。
graphviz
另一个强大的基于代码的绘图工具,不过PlantUML已经可以集成他的功能了。参考:Integration of Dot diagrams
JUMLY
一个比较不错的前端js UML框架。样式也比较美观。
blockdiag
一个小众基于代码的UML绘制工具,功能比较少。
yUML
可以通过URL参数绘制UML图形。收费。
扩展阅读
- 《使用 Sublime + PlantUML 高效地画图》
《使用Emacs敲出UML,PlantUML快速指南》
非常不错的中文文档。
《PlantUML Language Reference Guide》
- 《使用 Graphviz dot 创作 UML 类图》
PlantUML - 程序员必备绘图工具,不只是UML相关推荐
- 程序员必备绘图工具,流程图、时序图、类图手到擒来!
- 从业10多年,我总结了这几款程序员必备实用工具
优秀程序员之所以优秀的原因并不一定是他写代码的速度比别人快,而是他解决事情的效率比别人高.副业渠道比别人广,所以提供工作效率的方法并不需要我们样样精通,提高副业收入的办法也不需要我们挖空心思,有时候使 ...
- 天瑞地安科技集团程序员波波告诉你程序员必备开发工具
官方给"程序员"的定义是从事于软件开发.维护的工作人员,所以他们的工作就是不断的开发.开发.开发!整天面对的是一堆又一堆的开发代码,想必一天下来整个人都不好,此时如果有捷径可走,你 ...
- 推荐收藏!10大程序员必备生产力工具
作为程序员,提高生产力是我们一直追求的目标.随着技术的发展,越来越多的工具和应用程序被开发出来,帮助程序员们更好地完成工作.在本文中,我将介绍一些程序员必备的生产力工具. 一.IDE(集成开发环境) ...
- 这几个程序员必备画图工具,很实用!
今天给大家分享一些实用的程序员绘图工具(我自己也在用),分为以下几类: 常规画图:Excalidraw.draw.io.语雀 思维导图:Xmind 代码截图:Carbon 画图模板:ProcessOn ...
- 老司机程序员必备效率工具
程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理. 1.搜索引擎 1.1.秘迹搜索 一款无敌有良心.无敌安全的搜索引擎,不会收集私人信息,保护私隐,没有 ...
- python开发工具排名-Python程序员必备的四款开发工具
原标题:Python程序员必备的四款开发工具 每一位Python程序员都会有套工具来应对开发工作上的挑战.多年来,Python程序员使用开发工具来完成他们的工作.有很多工具对他们是有用的,不过对于初入 ...
- python界面开发工具免费_Python程序员必备的四款开发工具
原标题:Python程序员必备的四款开发工具 Python自学与交流中心QQ群:260308621 大家今晚利用1个小时看python基础视频教程 23-27节 ,自己监督自己.跟着学习哈!一定要做到 ...
- java的六大_java程序员必备的六大工具!
原标题:java程序员必备的六大工具! Java程序员都会有套工具来应对工作上的挑战.多年来,Java 程序员使用软件来完成他们的工作.有很多工具对他们是有用的,不过对于初入行的人员来说,寻找合适的工 ...
- 十大PHP程序员必备工具
十大PHP程序员必备工具 1.Notepad++ 总结来说就是小而精,7.4版本的软件包只有2.9M,比一般的IDE小数十倍,但是Notepad++的功能确是很全面的,代码高亮,语法折叠,宏功能,内置 ...
最新文章
- 编程——无序数组中找到最大乘积(python)
- DDoS攻击惯犯图鉴
- 云数据中心网络遇到的问题_云数据中心面临安全问题,华为SDN解决方案有一个安全大脑...
- 装饰器,语法糖.有参装饰器 ,无参装饰器
- 一个影响我现在生活状况的故事[转载]
- android 禁用和开启四大组件的方法(setComponentEnabledSetting )
- Java字符串常见面试题
- 图像表示的相关概念:图像深度、像素深度、位深的区别和关系
- EOJ 1224 简单迷宫问题 bfs
- zencart包包模板
- 一口气带你学会Redis升级后的几种数据类型,效率daydayup
- 去中心化社交网络协议除了Nostr还有哪些?
- 单细胞拟时分析:基因及通路随拟时表达变化趋势
- JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil
- python html转pdf 调整大小_用Python将HTML转为PDF。
- 微信小程序——【云音乐播放器】
- 计算机代码英语,计算机专业英语 (四)(示例代码)
- C++面向对象程序设计实践——任务与指导书(3)
- android的searchview焦点,Android how to focus ActionBar searchView
- C++ 统计输入的字符串中英文字母的个数
热门文章
- 模型预测控制的缺点_模型预测控制(MPC)与最优控制的理论分析 | NeurIPS 2020
- 二维图像(数组)的fftshift
- java web服务器热部署_Tomcat服务器热部署教程_如何实现tomcat热部署
- STM8L152K4T6原理图与开发程序
- 逻辑回归(LR) 算法模型简介
- php解析微信emoji字符
- k近邻算法_机器学习 第38集:k近邻算法k值过小和过大有什么危害?k值如何选取?( 含有笔记、代码、注释 )...
- 数值分析(一) 牛顿插值法及matlab代码
- 我的Ubuntu软件清单
- oracle去除字段值的所有英文