JPL is a set of Java classes and C functions providing a bidirectional interface between Java and Prolog. JPL uses the Java Native Interface (JNI) to connect to a Prolog engine through the Prolog Foreign Language Interface (FLI). JPL is not a pure Java implementation of Prolog; it makes extensive use of native implementations of Prolog on supported platforms. The current version of JPL only works with SWI-Prolog.

In its current version, JPL supports the embedding of a Prolog engine within the Java VM as well as the embedding of a Java VM within Prolog, so that, for example, one could take advantage of the rich class structure of the Java environment from within Prolog.

JPL is designed in two layers, a low-level interface to the Prolog FLI and a high-level Java interface for the Java programmer who is not concerned with the details of the Prolog FLI. The low-level interface is provided for C programmers who may wish to port their C implementations which use the FLI to Java with minimal fuss.

JPL has been integrated into the full SWI-Prolog distribution starting with version 5.4.x, including binaries for MS-Windows and a Linux RPM. Check an overview of its many versions here.


The objectives of JPL are to:

.. while also aim for:

Table of contents

  1. Setup and Install
  2. Guides and Tutorials:
  3. To provide a dynamic, bidirectional, interface between SWI-Prolog and Java runtimes, JPL offers two APIs:
    • The Java API: this interface comprises public Java classes which support:
      • constructing Java representations of Prolog terms and queries;
      • calling queries within SWI-Prolog engines;
      • retrieving (as Java representations of Prolog terms) any bindings created by a call;
    • The Prolog API: this interface comprises Prolog library predicates which support:
      • creating instances (objects) of Java classes (built-in and user-defined);
      • calling methods of Java objects (and static methods of classes), perhaps returning values or object references
      • getting and setting the values of fields of Java objects and classes.
  4. Specific Information:
  5. Applications: projects known where JPL has been used.

Other resources


JPL is released under the terms of the Simplified BSD License. See LICENSE file.