Welcome to the Home of Java PathFinder

Java PathFinder (JPF) is a system to verify executable Java bytecode programs. In its basic form, it is a Java Virtual Machine (JVM) that is used as an explicit state software model checker, systematically exploring all potential execution paths of a program to find violations of properties like deadlocks or unhandled exceptions. Unlike traditional debuggers, JPF reports the entire execution path that leads to a defect. JPF is especially well-suited to finding hard-to-test concurrency defects in multithreaded programs.

While software model checking in theory sounds like a safe and robust verification method, reality shows that it does not scale well. To make it practical, a model checker has to employ flexible heuristics and state abstractions. JPF is unique in terms of its configurability and extensibility, and hence is a good platform to explore new ways to improve scalability.

JPF is a pure Java application that can be run either as a standalone command line tool, or embedded into systems like development environments. It was mostly developed - and is still used - at the NASA Ames Research Center. Started in 1999 as a feasibility study for software model checking, JPF has found its way into academia and industry, and has even helped detect defects in real spacecraft.

Headline News

  • 05/01/08: 2008 Workshop slides are up - in case you were able to attend, you already know it was an exciting event. If you weren't there, you can see what you've missed on the event schedule page
  • 04/15/08: JPF and Google's Summer of Code - we were able to get 10 exciting JPF projects approved for this years Google's summer of code. It's going to be a hot summer. Expect to see a lot more traffic on the javapathfinder-devel mailing list.
  • 04/04/08: Fujitsu Japan announces WEAVE framework - this is a great testimony for JPF's acceptance, esp. since WEAVE is about verification of web applications. Nobody wants their banking application to crash in mid-transaction, so everybody wants JPF.