Sebastian Sardina edited this page Oct 17, 2018 · 20 revisions

JPL - Java <-> SWI Prolog Interface

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.

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. The current version of JPL only works with SWI-Prolog.

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 and the overaching ojectives of JPL.


  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. Reference API doc:
  5. Specific Information:
  6. Applications: projects known where JPL has been used.


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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.