Back to Blog

PlantUML Without Java: Text Diagrams With Zero Setup

Updated
plantumlcomparisondiagrams-as-codeuml

PlantUML is a capable, long-lived diagram-as-code tool. But it has one requirement that trips people up constantly: it needs Java. The renderer is a .jar, so every machine that draws a diagram — your laptop, your CI runner, your docs build — needs a working JRE on the path. When the Java version drifts, you get crashes on diagrams that worked yesterday, and “works on my machine” stops meaning anything.

If you like PlantUML’s approach but not its runtime, DGMO is a no-Java alternative: a single CLI and npm package, no JRE, no server, no .jar to keep on the classpath.

The setup difference

PlantUML, minimally:

# install a JRE first (and keep its version in sync everywhere)
brew install plantuml        # pulls in OpenJDK and Graphviz
plantuml diagram.puml        # JVM spins up per render

DGMO:

brew install diagrammo/dgmo/dgmo   # or: npm i -g @diagrammo/dgmo-cli
dgmo diagram.dgmo                  # renders to SVG/PNG, no JVM

In CI that difference is the whole ballgame: no JDK setup step, no version-pinning a runtime you don’t otherwise use, faster cold renders because there’s no JVM to start.

The syntax is lighter, too

A login sequence in PlantUML:

@startuml
participant Browser
participant Server
database UserDB
Browser -> Server: POST /login
Server -> UserDB: SELECT user
UserDB --> Server: user record
Server --> Browser: 200 OK + token
@enduml

The same thing in DGMO — participants are inferred from their names (so UserDB becomes a cylinder automatically), and there’s no @startuml/@enduml wrapper:

LoginBrowserServerUserDBPOST /loginSELECT useruser record200 OK + token
sequence Login

Browser -POST /login-> Server
Server -SELECT user-> UserDB
UserDB -user record-> Server
Server -200 OK + token-> Browser

DGMO covers the practical UML subset most teams actually reach for — sequence, class, state, ER, and C4 — with modern themed output and seven color palettes built in.

Where PlantUML still wins

This isn’t a clean sweep, and it isn’t close in every direction.

PlantUML documents nine of the UML 2.x diagram types — including use case, activity, object, deployment and timing, none of which DGMO draws at all. It goes well past UML too: Archimate models, Salt wireframes and tree widgets, syntax diagrams from EBNF or a regular expression, rendered JSON and YAML, and directory trees. If your team needs that formality or that breadth, PlantUML’s decades of depth are hard to beat — and that depth is worth a JRE.

Two corrections to what this post used to say. It credited PlantUML with BPMN, which PlantUML does not have — its activity diagrams carry swimlanes, and that is the closest thing. It also said “the full UML 2.x catalog”, which overstates a catalog of fourteen types. DGMO aims at the diagrams most people draw day to day, not exhaustive UML coverage.

Try it

If the Java dependency is the only thing standing between you and diagrams-as-code, DGMO removes it. Start with the sequence diagram guide, or see the full side-by-side on the comparison page.

Every claim about PlantUML here was checked against plantuml.com’s own documentation and its Homebrew formula on 2026-08-07, against PlantUML 1.2026.6. If we have something wrong about your project, tell us — we would rather fix it than win an argument with it.