• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H14-Oct-2020-2519

cmake/H14-Oct-2020-8771

docs/H14-Oct-2020-4,1863,015

src/H14-Oct-2020-16,8119,599

web/jpl/H03-May-2022-42

.gitignoreH A D14-Oct-2020526 5554

LICENSEH A D14-Oct-20201.3 KiB2620

README.mdH A D14-Oct-20203 KiB4121

config.h.cmakeH A D14-Oct-2020281 87

jpl.docH A D14-Oct-2020941 4230

jpl.plH A D14-Oct-2020186.9 KiB5,4314,423

jpl_config.plH A D14-Oct-20205.1 KiB149125

pom.xmlH A D14-Oct-20207.3 KiB207147

test_jpl.plH A D14-Oct-202065.3 KiB2,2821,909

README.md

1# JPL - Java <-> SWI Prolog Interface
2
3![Java CI with Maven](https://github.com/SWI-Prolog/packages-jpl/workflows/Java%20CI%20with%20Maven/badge.svg)
4
5JPL 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.
6
7In 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.
8
9JPL 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](http://www.swi-prolog.org/).
10
11JPL has been integrated into the full [SWI-Prolog](http://www.swi-prolog.org/) distribution starting with version 5.4.x and is included in the binary packages provided by swi-prolog.org.  Binary packages provided by 3rd parties may differ, not providing JPL or providing it as a separate package.
12
13## Further documentation
14
15- Overview documentation is maintained at this [**JPL Web Page**](https://jpl7.org/), which subsumes the Wiki in this repo.
16- The Prolog API reference is provided from the [**SWI-Prolog manual**](http://www.swi-prolog.org/pldoc/doc_for?object=section%28%27packages/jpl.html%27%29).
17
18----------------------
19
20## OBJECTIVES
21
22The objectives of JPL are to:
23
241. enable Prolog applications to exploit any Java classes, instances, methods etc. (without requiring any wrappers, metadata etc. to be set up first);
252. enable Java applications to manipulate any Standard Prolog libraries, predicates, etc. (without requiring any wrappers, metadata etc. to be set up first); and
263. enable hybrid Prolog+Java applications to be designed and implemented so as to take best advantage of both language systems, and to be testable, debuggable, maintainable.
27
28.. while also aim for:
29
30* minimum impact deployability: runtime support for Prolog+Java apps must be a position-independent, self-sufficient filestore tree, requiring no changes to registries, system libraries, system configuration files etc.
31* minimum dependency deployability: as with JVMs, the Prolog+Java runtime support must depend upon nothing which cannot be taken for granted in healthy OS installations
32* minimum vulnerability deployability: the Prolog+Java runtime support must be immune to legitimate variations in its environment (PATH settings, other applications and libraries including other Prolog+Java apps, etc.)
33
34## LICENSE
35
36JPL is released under the terms of the Simplified BSD License. See [LICENSE](LICENSE) file.
37
38
39
40
41