Freedom251 › Formal Verification Tools
OpenJML

What OpenJML is
OpenJML is a free, open-source tool for checking Java programs against specifications written in Java Modeling Language (JML). It provides static deductive verification and runtime assertion checking, and supports contracts and counterexamples. It accepts Java and JML input and runs as self-hosted software. The standalone command-line application is available for macOS, Ubuntu Linux, WSL, Cygwin, and Windows CMD. Downloads include a VS Code extension and an Eclipse plugin, each requiring an OpenJML installation. The feature status page describes Eclipse, Visual Studio, IntelliJ, and LSP integrations as obsolete and unsupported, with future integration planned. Its language server offers editor warnings and errors, syntax coloring, go to definition, find references, and document highlights. For runtime assertion checking, Java language elements through Java 7 are generally parsed, typechecked, and compiled, with documented exceptions and partial support. OpenJML uses SMT solvers to check logic, bundling a selection with the release. The command-line tool is licensed under GPL version 2. David Cok is named as principal developer, and much of the project work has been provided by volunteers. General JML questions can be raised through GitHub issues. Test suite generation is not yet supported because JMLUnitNG must be ported to Java 21.
Who it suits
OpenJML suits Java developers who want to verify code against JML contracts or use runtime assertion checking. It may also fit teams seeking a self-hosted, open-source tool with command-line use and editor features, provided its documented Java and integration support meets their needs.
What it does well
- Free, open-source command-line tool licensed under GPL version 2.
- Provides static deductive verification and runtime assertion checking.
- Supports contracts and counterexamples for Java and JML input.
- Bundles a selection of SMT solvers with releases.
- Language server offers navigation, highlighting, syntax coloring, and diagnostics.
What to know first
- Test suite generation is not yet supported.
- Listed Eclipse, Visual Studio, IntelliJ, and LSP integrations are obsolete and unsupported.
- VS Code and Eclipse extensions require an OpenJML installation.
- Runtime assertion checking generally covers Java elements through Java 7, with exceptions.
Limits
OpenJML has no paid plan listed; it is free and open source. Test suite generation is not yet supported, and runtime assertion checking generally supports Java language elements through Java 7, with exceptions and partial support documented.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| OpenJML | Open-source command-line tool · OS-specific downloads · IDE extensions require an OpenJML installation | Free |
As openjml.org lists them, read 9 Oct 2026. The maker's own page has the final word.
Getting started
- Visit the OpenJML website and choose the download for your operating system.
- Install the standalone OpenJML command-line application.
- For editor use, install the VS Code extension or Eclipse plugin after installing OpenJML.
Verdict
Choose OpenJML if you need a free, self-hosted way to check Java programs against JML specifications, with both deductive verification and runtime assertion checking. Look elsewhere if test suite generation or supported integration with Eclipse, Visual Studio, IntelliJ, or LSP is essential.
Questions
How much does OpenJML cost?
The OpenJML plan is free. It is an open-source command-line tool.
What does OpenJML do?
It checks whether Java programs annotated with JML specifications satisfy them. It provides static deductive verification and runtime assertion checking.
Which platforms does it support?
The standalone command-line application is available for macOS, Ubuntu Linux, WSL, Cygwin, and Windows CMD.
Does it have editor integrations?
Downloads include a VS Code extension and an Eclipse plugin, both requiring an OpenJML installation. Eclipse, Visual Studio, IntelliJ, and LSP integrations are listed as obsolete and unsupported, with future integration planned.
Is OpenJML open source?
Yes. The command-line tool is licensed under GPL version 2.
Can OpenJML generate test suites?
No. Test suite generation is not yet supported because JMLUnitNG must be ported to Java 21.
Facts from OpenJML's own pages
- Command line
- OpenJML is available as a standalone command-line application for macOS, Linux (Ubuntu), WSL, Cygwin, and Windows CMD. · openjml.org, 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, 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, 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, 9 Oct 2026
- License
- The OpenJML User Guide states that the command-line tool is licensed under GPL version 2. · openjml.org, 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, 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, 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, 9 Oct 2026
- Purpose
- OpenJML checks whether Java programs annotated with Java Modeling Language specifications satisfy those specifications. · openjml.org, 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, 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, 9 Oct 2026
- Support channel
- The About page directs users to GitHub issues for general JML information. · openjml.org, 9 Oct 2026
- Verification modes
- It provides static deductive verification and runtime assertion checking. · openjml.org, 9 Oct 2026
Where OpenJML stands on Freedom251
- Formal Verification Tools#12 of 34