OpenJML
OpenJML checks whether Java programs annotated with Java Modeling Language specifications meet those specifications.
What OpenJML is
OpenJML checks whether Java programs annotated with Java Modeling Language specifications meet those specifications. It offers static deductive verification and runtime assertion checking, with support for contracts and counterexamples. The self-hosted tool accepts Java and JML input and is available as a command-line application for macOS, Ubuntu Linux, WSL, Cygwin, and Windows CMD. Downloads include a VS Code extension and an Eclipse plugin, both of which require an OpenJML installation. However, the feature status page marks Eclipse, Visual Studio, IntelliJ, and LSP integration as obsolete and unsupported, with future integration planned. The language server supports editor warnings and errors, syntax coloring, go to definition, find references, and document highlights. Java elements through Java 7 are generally handled in runtime assertion checking, with exceptions and partial support documented. OpenJML uses SMT solvers as logic checkers, and a selection is bundled with releases. The command-line tool is licensed under GPL version 2. Test suite generation is not yet supported because JMLUnitNG must be ported to Java 21.
Good
- Offers static and runtime checking
- Supports contracts and counterexamples
- A selection of SMT solvers is bundled
- Available on macOS, Linux, and Windows
Watch out
- IDE integrations are marked obsolete and unsupported
- Extensions require an OpenJML installation
- Test suite generation is not yet supported
Who it suits
OpenJML suits Java developers who annotate programs with JML and want static verification or runtime assertion checking. It is aimed at users comfortable with a self-hosted command-line tool and its installation requirements.
Verdict
OpenJML provides verification and runtime checking for Java programs specified with JML. Its unsupported IDE integrations and unimplemented test suite generation are important limits to weigh before adopting it.
Plans and prices
From OpenJML's own pricing page, checked 9 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| OpenJML | Free | Open-source command-line tool · OS-specific downloads · IDE extensions require an OpenJML installation |
The facts
Each one read from OpenJML's own pages, with the date it was checked.
What it does
- Command line
- OpenJML is available as a standalone command-line application for macOS, Linux (Ubuntu), WSL, Cygwin, and Windows CMD.checked 9 Oct 2026
- IDE integration
- The downloads page says OpenJML includes a VS Code extension and offers an Eclipse plugin, both of which require an OpenJML installation.checked 9 Oct 2026
- IDE support status
- The feature status page lists Eclipse, Visual Studio, IntelliJ, and LSP integration as obsolete and unsupported, with future integration planned.checked 9 Oct 2026
- Language support
- The feature status page says Java language elements through Java 7 are generally parsed, typechecked, and compiled in runtime assertion checking, with exceptions and partial support documented.checked 9 Oct 2026
- License
- The OpenJML User Guide states that the command-line tool is licensed under GPL version 2.checked 9 Oct 2026
- LSP capabilities
- The language server supports editor warnings and errors, syntax coloring, go to definition, find references, and document highlights.checked 9 Oct 2026
- Notable limitation
- The feature status page says test suite generation is not yet supported because JMLUnitNG must be ported to Java 21.checked 9 Oct 2026
- Project development
- The About page names David Cok as OpenJML’s principal developer and says the majority of project work has been provided by volunteers.checked 9 Oct 2026
- Purpose
- OpenJML checks whether Java programs annotated with Java Modeling Language specifications satisfy those specifications.checked 9 Oct 2026
- Security and compliance
- The official pages opened describe verification and runtime checking capabilities but do not state a security certification or compliance standard.checked 9 Oct 2026
- Solver integrations
- OpenJML uses SMT solvers as logic checkers, and a selection of supported solvers is bundled with the release.checked 9 Oct 2026
- Support channel
- The About page directs users to GitHub issues for general JML information.checked 9 Oct 2026
- Verification modes
- It provides static deductive verification and runtime assertion checking.checked 9 Oct 2026



