JetUML

JetUML is a UML tool developed as a pure-Java desktop application for educational and professional use. The project was launched in January 2015 with a focus on minimalist design. The name JetUML relates to the primary goal of the tool, namely the quick sketching of diagrams in the Unified Modeling Language (UML). JetUML is a free and open-source software licensed under the GNU General Public License (GPL).

History
The JetUML project was launched in January 2015 by Martin P. Robillard, a professor of computer science at McGill University. The original goal of the tool was to support the interactive sketching of UML diagrams during lectures and software design sessions.

The initial source code was derived from the Java Swing-based Violet UML application developed by Cay Horstmann, and then progressively rewritten to modernize it and focus solely on UML sketching. In winter 2018, the application was migrated to the JavaFX GUI framework (Release 2.0). In spring 2020 the application was converted to a modular application (Release 3.0) and started to be distributed as a self-contained executable.

JetUML was used to create the hundred-plus UML diagrams in the book Introduction to Software Design with Java.

Features
JetUML aims to sketch software design ideas with a minimalist feature set. It allows users to create, modify, and annotate the main UML diagram types: class, sequence, state, object diagrams, and use case. JetUML uses UTF-8 encoding to share diagrams across systems including Windows, Linux, and macOS.

JetUML saves diagrams in JSON files and can export diagrams as images in various graphic formats. JetUML does not collect or share any personal information from users. Users can send feedback and report issues directly to the open-source repository in GitHub.


 * No dependencies: without depending on any external libraries, JetUML minimizes the development and maintenance cost.
 * No reflection: JetUML does not use any highly reflective framework to enhance code readability.
 * No streaming: since JetUML involves few data-intensive operations, it avoids using streams in the interface of classes and limits the use of stream API within the method scope.
 * Well-Encapsulated: JetUML is designed to support the highest possible level of encapsulation.

Limitations

 * Incomplete support for other UML diagram types.