OpenJML review
A focused open-source toolkit for checking Java contracts, proofs, and runtime assertions.
Reviewed by iTechGuides Editors · Editorial team · Updated Nov 2026
OpenJML is an open-source suite for specifying and verifying Java programs with the Java Modeling Language. It is aimed at software practitioners, students, and researchers who work with formal contracts, invariants, preconditions, and postconditions. The toolkit parses and type-checks Java plus JML programs, performs static deductive verification, and supports runtime assertion checking. Its focus is narrow by design: teams seeking formal specification workflows for Java can work within a dedicated contract-based toolset, while projects written in other input languages are outside its stated scope.
The verification workflow combines several useful layers. Static deductive verification uses SMT solvers to assess whether specified behavior can be proved, while runtime assertion checking provides a way to evaluate assertions during execution. OpenJML also checks JML invariants, preconditions, and postconditions, and reports counterexamples and execution traces when proofs fail. These reports can help users investigate why a specification does not hold instead of receiving only a pass-or-fail result. This depth makes OpenJML a fit for codebases where contracts and proof obligations are central, rather than for teams looking only for general-purpose testing or code analysis.
OpenJML supports Windows, macOS, and Linux through a self-hosted deployment model. The project provides a standalone command-line tool, a Language Server Protocol server, an Eclipse plugin integration, and a Visual Studio Code extension. That combination supports both command-line workflows and editor-based development, with LSP support extending compatibility to suitable language-server clients. Teams should choose OpenJML when Java and JML are an intentional part of their verification approach and when they can manage a self-hosted toolchain. Projects needing broader language coverage or a different formalism should consider alternatives designed beyond Java contracts.
Questions about OpenJML
What does OpenJML run on? Windows, macOS and Linux. It runs self-hosted.
What does OpenJML integrate with? 3 integrations: Eclipse, Visual Studio Code and Language Server Protocol.
Who is OpenJML built for? Solo users, small businesses and mid-market companies (our editorial estimate).
OpenJML pros and cons
- Where it wins
- Checks Java and JML types, contracts, invariants, and assertions
- Uses SMT solvers for static deductive verification
- Reports counterexamples and execution traces for failed proofs
- Where it doesn't
- Focused on Java and JML rather than multiple input languages
- Self-hosted deployment requires teams to manage the local environment
- IDE coverage centers on Eclipse and Visual Studio Code
OpenJML fact sheet, pricing and score →
Advertiser disclosure: iTechGuides is reader-supported. Vendors can pay for top positions in our rankings and for a place on other products' pages, and we may earn a commission when you click some links. Bought places stand at the number bought; this page and our disclosure say so. Paying vendors may get a fuller, more detailed review from our editors, and that review can change their score. How we rank.
Last updated · How we research and update
