====== JPL ====== [[http://www.swi-prolog.org/packages/jpl/|JPL]] is a library using the SWI-Prolog foreign interface and the Java jni interface providing a bidirectional interface between Java and Prolog that can be used to embed Prolog in Java as well as for embedding Java in Prolog. In both setups it provides a reentrant bidirectional interface. ===== Installing SWI-Prolog with JPL in Linux ===== Notice: Based on first-hand experience, the use of standard ''swi-prolog'' packages in Debian-based distributions is **not** recommended, due to the following: * ''swi-prolog'' is absent in Debian Etch whatsoever (packages can be found in unstable and testing branches though), * JPL is not included in Debian/Ubuntu packages (probably due to licensing issues, see below), * the standard package name (''pl'') has been changed to ''swi-prolog''; that is known to break some things, including XPCE. With the above in mind, the following options are available: * use the stable RPM package available at the [[http://www.swi-prolog.org/dl-stable.html|SWI-Prolog download page]] (RPM-based distros only), * install from source (coming soon), FIXME * [[rpm2deb|convert the RPM package to DEB]] (in this case, rather harmless) or use the converted package, * use binary packages compiled from the source (coming soon). FIXME Alternatively, you can use the repository packages and install JPL as standalone. For now, posts #6 and #7 in [[http://ubuntuforums.org/showthread.php?t=447728|this discussion]] should provide some insight. ===== Installing SWI-Prolog with JPL in Mac OS X ===== Installation and testing instructions for Mac OS X can be found [[macosx|here]]. ===== Dependencies ===== DIYers should find [[dependencies|this]] handy. ===== Testing ===== The following can be used to test whether JPL is working properly: * go to the ''lib'' directory of your JPL-enabled SWI-Prolog installation: * if you're using Linux and installed the RPM package: ''/usr/lib/pl-'' * if you're a Mac user: ''/opt/local/lib/swipl-'' * cd to ''doc/packages/examples/jpl/java/Test'' * delete ''Test.class'' to force re-compilation of the test app * launch ''./run.sh'' * if all goes well, you should get something like this: bash-3.2# ./run.sh Compiling Test JPL demo: Test test 0...% test.pl compiled 0.00 sec, 4,064 bytes passed. test 1...passed. test 2...passed. test 3...passed. test 4...passed. test 5...passed. test 6...passed. test 7...passed. test 8...passed. test 9...passed. test 10...passed. test 11...passed. test 101...00004567182904567231901235678312041678321528904567312936890412738905683412794156842736189057340412506823420839420831756240819623751407856239104837562910482956804237195684739158764391584763596579576799passed. ===== Packages ===== The following SWI-Prolog with JPL packages are available: * Debian/Ubuntu, converted from original RPMs: {{:prolog:jpl:pl_5.6.54-320_i386.deb|5.6.54}} * OS X 10.4 and 10.5 users can get their installers [[http://www.swi-prolog.org/dl-stable.html|here]] For DIY: * //Patches vs. original debian/ubuntu packages// FIXME * [[dependencies|build dependencies]] ====== Specs ====== Some insight plus specs: * jpl is supposed to work with sun jdk only! (as stated by Jan W.) * the main reason [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=449437|why jpl is not enabled]] in standard debian/ubuntu is the fact, that sun jdk is not free * so compilation of jpl is disabled in debs by a debian patch, BUT removing the patch does not result in a working packages! why? * we assume, that the packages built will use the standard sun-jdk packages, as generated by the [[http://packages.debian.org/etch/java-package|java-package for etch]] (and hardy) * working with jdk 1.5 is a must! * working with jdk 1.6 should also be tested and reported! use [[http://packages.debian.org/lenny/java-package|java-package from lenny]] * it should be tested using current swi versions from both [[http://packages.debian.org/lenny/swi-prolog|testing]] and [[http://packages.debian.org/sid/swi-prolog|sid]]! * check what changed (java package and swi vers) in intrepid ibex * some main problems with jpl include a proper location and config. (paths, env vars) for //jpl.so// and //jpl.jar// * I assume we get OS X instructions completely free too :-) * in the future we might consider testing with openjdk, icedtea, classpath,gcj, whatever... but not now. --- //[[gjn@agh.edu.pl|Grzegorz J. Nalepa]] 2008/07/05 10:44// Some demo projects to test: * [[pl:miw:miw08_ruleruntimeg_2]] * [[pl:miw:miw08_prolog_javasockets]] * [[pl:miw:miw08_ruleruntimeg]] * [[pl:miw:miw08_mindstormsapi]] --- //[[gjn@agh.edu.pl|Grzegorz J. Nalepa]] 2008/07/05 11:04//