- Home
- Formal Verification Tools
- OpenJML
OpenJML
What it is
OpenJML is a free, open-source tool that checks whether Java programs annotated with Java Modeling Language specifications satisfy those specifications. It provides static deductive verification and runtime assertion checking, including counterexamples. The standalone command-line application runs on macOS, Ubuntu Linux, WSL, Cygwin, and Windows CMD. Downloads include a VS Code extension and an Eclipse plugin, both requiring an OpenJML installation. The feature status page marks Eclipse, Visual Studio, IntelliJ, and LSP integration as obsolete and unsupported, with future integration planned. Its language server offers editor warnings and errors, syntax coloring, definition and reference navigation, and document highlights. Java elements through Java 7 are generally handled in runtime assertion checking, with documented exceptions and partial support. OpenJML uses bundled SMT solvers as logic checkers. The command-line tool is GPL version 2 licensed. Test suite generation is not yet supported.
For and against
For
- Provides deductive verification and runtime checking
- Supports Java and JML input
- Includes counterexamples
- Offers command-line and VS Code tools
- Bundles supported SMT solvers
Against
- Several IDE integrations are obsolete and unsupported
- Java support is generally through Java 7
- Test suite generation is unavailable
- Extensions require an OpenJML installation
The verdict
OpenJML provides contract-based Java verification through a self-hosted command line and editor tooling. Users should account for its older Java coverage and unsupported integrations.
Who it suits
It suits Java developers and verification workflows using JML contracts, deductive checking, runtime assertions, and self-hosted tooling.
Plans and prices
OpenJML
Open-source command-line tool · OS-specific downloads · IDE extensions require an OpenJML installation
Read 9 Oct 2026 · openjml.org
On the record
- Command line
- OpenJML is available as a standalone command-line application for macOS, Linux (Ubuntu), WSL, Cygwin, and Windows CMD.openjml.org · read 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.openjml.org · read 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.openjml.org · read 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.openjml.org · read 9 Oct 2026
- License
- The OpenJML User Guide states that the command-line tool is licensed under GPL version 2.openjml.org · read 9 Oct 2026
- LSP capabilities
- The language server supports editor warnings and errors, syntax coloring, go to definition, find references, and document highlights.openjml.org · read 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.openjml.org · read 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.openjml.org · read 9 Oct 2026
- Purpose
- OpenJML checks whether Java programs annotated with Java Modeling Language specifications satisfy those specifications.openjml.org · read 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.openjml.org · read 9 Oct 2026
- Solver integrations
- OpenJML uses SMT solvers as logic checkers, and a selection of supported solvers is bundled with the release.openjml.org · read 9 Oct 2026
- Support channel
- The About page directs users to GitHub issues for general JML information.openjml.org · read 9 Oct 2026
- Verification modes
- It provides static deductive verification and runtime assertion checking.openjml.org · read 9 Oct 2026