XProlog was developped to be used the handle the knowledge and reasoning needs of Java based Agents. It should be reasonably fast and compact so that every agent could have its own KB and inference engine.
Drools is an augmented implementation of Forgy’s Rete algorithm tailored for the Java language. Adapting Rete to an object-oriented interface allows for more natural expression of business rules with regards to business objects. More importantly, Drools provides for declarative logic programming and is flexible enough to match the semantics of your problem domain. The various parts that compose a rule may be extended to lend domain-specific sense to the rule.
TermWare is a programming language, based on concept of term system: set of rewriting rules with actions. It allows to unite logic and imperative programming: TermWare actions can call Java objects via reflection mechanism. The TermWare interpreter provides a Java API, for embedding rule-rewriting into Java applications.
K.U.Leuven JCHR is an embedding of Constraint Handling Rules (CHR) in Java. The multi-paradigmatic integration of declarative, forward chaining CHR rules and constraint (logic) programming within the imperative, OO host language Java offers clear synergetic advantages to the software developer. High performance is achieved through an optimized compilation to Java code. The rule engine is suited for the high-level development of expert systems, constraint solvers, constraint-based algorithms, etc
GNU Prolog for Java is an almost conforming implementation of ISO Prolog standard in Java. It implements almost all required predicates, but there are some minor problems which do not allow me to call it conforming. This package were never indended to be used as standalone system, it is a library which is designed to embeddable into Java applications which need Prolog to solve some tasks. The interpreter intended for applications where Prolog performs combinatory search and Java do rest.
Prolog Cafe is a Prolog-to-Java source-to-source translator system. Prolog programs are first translated into Java programs via the WAM (Warren Abstract Machine), and then those programs are compiled by a usual Java compiler such as SUN’s JDK SE. From the Java side, the translated code can be easily embedded into Java applications. From the Prolog side, any Java object can be represented as a Prolog term, and its methods and fields can be exploited from Prolog.
bddbddb stands for BDD-Based Deductive DataBase. It is an implementation of Datalog, a declarative programming language similar to Prolog for talking about relations. What makes bddbddb unique is that it represents the relations using binary decision diagrams (BDDs). BDDs are a data structure that can efficiently represent large relations and provide efficient set operations. This allows bddbddb to efficient represent and operate on extremely large relations – relations that are too large to represent explicitly.
Jason is a fully-fledged interpreter for an extended version of AgentSpeak, a BDI agent-oriented logic programming language, and is implemented in Java. Using SACI or JADE, a multi-agent system can be distributed over a network effortlessly.