Jess is a rule engine and scripting environment written entirely in Sun's JavaTM language by Ernest Friedman-Hill at Sandia National Laboratories in Livermore, CA. Using Jess, you can build Java software that has the capacity to "reason" using knowledge you supply in the form of declarative rules. Jess is small, light, and one of the fastest rule engines available. Its powerful scripting language gives you access to all of Java's APIs.
Jess uses an enhanced version of the Rete algorithm to
process rules. Rete is a very efficient mechanism for solving the
difficult many-to-many matching problem (see for example "Rete: A
Fast Algorithm for the Many Pattern/ Many Object Pattern Match
Problem", Charles L. Forgy, Artificial Intelligence 19 (1982),
17-37.) Jess has many unique features including
backwards chaining and working memory queries, and of course Jess can
directly manipulate and reason about Java objects. Jess
is also a powerful Java scripting environment, from which you can
create Java objects, call Java methods, and implement Java interfaces
without compiling any Java code.
Jess is a programmer's library written in Java. Therefore, to use
Jess, you'll need a Java Virtual Machine (JVM). You can get an
excellent JVM for Windows, Linux, and Solaris free from Sun Microsystems. Jess 7 is
compatible with all released versions of Java starting with JDK 1.4,
including JDK 1.5, the latest release. Older Jess versions numbered
4.x were compatible with JDK 1.0, 5.x versions worked with JDK 1.1,
and Jess 6 worked with JDK 1.2 and up.
Be sure your JVM is installed and working correctly before trying
to use Jess.
To use the JessDE integrated development environment, you'll need
version 3.1 or later of the Eclipse SDK from http://www.eclipse.org. Be sure
that Eclipse is installed and working properly before installing the
JessDE.
The Jess library serves as an interpreter for another language,
which I will refer to in this document as the Jess language. The Jess
language is a highly specialized form of Lisp.
I am going to assume that you, the reader, are a programmer who
will be using either one or both of these languages. I will assume
that all readers have at least a minimal facility with Java. You must
have a Java runtime system, and you must know how to use it at least
in a simple way. You should know how to use it to
- run a Java application
- deal with configuration issues like the CLASSPATH variable
- (optional) compile a collection of Java source files
If you do not have at least this passing familiarity with a Java
environment, then may I suggest you purchase an introductory book on
the topic. Java software for many platforms -- as well as a wealth of
tutorials and documentation -- is available at no cost from http://java.sun.com.
For those readers who are going to program in the Jess language, I
assume general familiarity with the principles of programming. I will
describe the entire Jess language, so no familiarity with Lisp is
required (although some is helpful.) Furthermore, I will attempt to
describe, to the extent possible, the important concepts of rule-based
systems as they apply to Jess. Again, though, I will assume that the
reader has some familiarity with these concepts and more. If you are
unfamiliar with rule-based systems, you may want to purchase a text on
this topic as well.
Many readers will want to extend Jess' capabilities by either adding
commands (written in Java) to the Jess language, or embedding the
Jess library in a Java application. Others will want to use the Jess
language's Java integration capabilities to call Java functions from
Jess language programs. In sections of this document targeted towards
these readers, I will assume moderate knowledge of Java programming. I
will not teach any aspects of the Java language. The interested reader
is once again referred to your local bookstore.