Java FF is a Java implementation of FF built to a clear object-oriented design to allow students to modify a working planner and study the results of doing so.

The Code

JavaFF is released under the GNU GPL. To download a .tar.gz file containing the source code and compiled Java bytecode, click the following link:

JavaFF 1.0.1 (N.B. This is the original code that has been superseded by a later version, see below)

Thanks to David Pattison for pointing out a bug in JavaFF affecting relaxed plan generation in non-temporal, non-numeric domains. A later version with this issue resolved is available from github.

To run JavaFF, expand the archive, set the CLASSPATH environment variable to point to the directory in which it was expanded, then type:

java javaff.JavaFF domain.pddl problem.pddl

To allocate more memory, beyond Java's default, you may wish to type:

java -Xmx1024m javaff.JavaFF domain.pddl problem.pddl

...where 1024 is the maximum number of megabytes JavaFF can use.

If you have any comments on JavaFF, or use it in your teaching or research, we'd love to hear from you - please email us.


JavaFF was first developed for the undergraduate AI course at the University of Strathclyde. To accompany it, four practicals were written, culminating in a student planning competition. Click here for the booklet. A paper on these practicals was presented at the AAAI 2008 Colloquium on AI Education, click here for a PDF of the paper.

The example domains used with the first three practicals were taken from IPC3. For the fourth (the competition), we also used the STRIPS formulation of the Pipesworld domain from IPC4.