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 a high-level overview of its many versions here.


The objectives of JPL are to:

… while also aiming for:

About this page

This page includes documentation on how to install and setup JPL, the APIs offered, guides and tutorials, and version release notes.

If you are only wanting to use JPL in your application (mostly in your Java application), you may then need to read how to deploy JPL in your system in oder to be able to use it. Check the guides for deployment on the various platforms: Linux, Windows or MacOS.

To provide a dynamic, bidirectional, interface between SWI-Prolog and Java runtimes, JPL offers two APIs: a Java API to access Prolog from Java and a Prolog API. Corresponding JavaDoc and Reference manual are also provided for both APIs.

There are also some useful tutorials for those wanting to use JPL, including a getting started guide, a discussion on the two types of Prolog queries offered from Java and the subletites to consider when your application can potentially issue multi-threaded queries (i.e., multiple queries at the same time in different threads).

If you want to develop JPL further or want to implement some modification, you will need to carry an full installation from scratch, including an install/compile of SWI source. Please refer to the Developing JPL guide.

This page also contains a short overview of the various release versions of JPL as well as release notes for the main releases.


To see JPL in action, you can check some of these projects:

Other resources


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

an API between SWI-Prolog and the Java Virtual Machine - hosted on GitHub