A Java Interface to Prolog


March 18, 2003 May 5, 1999 See the Copyright and License Information section for more information.

Feb 25, 1999

General Description

JPL is a set of Java classes and C functions providing an 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), which is more or less in the process of being standardized in various implementations of Prolog.  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.

Currently, JPL only supports the embedding of a Prolog engine within the Java VM.  Future versions may support 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 now requires SWI-Prolog version 3.1.0 or later, which is available at the following URL:
SWI-Prolog license information is available here:
You will also need a Java development environment.  Sun's Java website is a good place to start:
JPL 2.0.2 was developed and tested on Windows NT4, and has not yet been compiled on any non-Windows platform
JPL1.0.1 was written and tested on Linux kernel 2.1.24.  It should compile on any other UNIX system with a full suite of gnu tools.

Copyright and License Information

JPL is released under the terms of the Gnu Library Public License:
Copyright (c) 2003 Paul Singleton.  All rights reserved.
Copyright (c) 1998 Fred Dushin.  All rights reserved.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library Public License for more details.

This means, among other things, that you may use this software in commercial products without being required to distribute your software under the same licensing terms.  See the License for more details.


The Documentation for JPL is organized into the following sections:
  1. Getting Started
  2. The Low-Level Interface
  3. The High-Level Interface
  4. Gnu Public License
  5. The JPL API

Download (this section is obsolete)

Gnu-zipped, UNIX compressed, and Zipped versions of the source distribution are available at:
You may be interested in viewing the ChangeLog.

The latest version of JPL is available by the World Wide Web at the following URL:

Writing free software is only gratifying if you hear from users.  Please feel free to contact the author, Fred Dushin, at the following address:
Happy Prologging.

These pages were created using Netscape Communicator, 4.5 for Linux on the PowerPC.  The JPL logo was made by the Gimp.