I am trying to get Java and Prolog to work together (on OS X 10.11.1). What I want, is just to input my Prolog Queries from Java. When I run Java code such like PrologProcess process = Connector. In this work we present the JPE (Java Prolog Environment), which is an IDE (Integrated Development Environment), that offers the most popular features that other software development environments.
When looking at multi-threaded Prolog systems, there are different additional considerations. One desiderata is to have a separation between threads and logic engines. This was expressed here: There are some Prolog systems that realize this separation.
Jekejeke Prolog is also among these systems. There is a report (.) that shows how this separation can be put to use. In the various scenarios we see that the 'thread' is provided by a system external to the logic engine:. Terminal Deployment: Thread is the Java main thread.
Standalone Deployment: Thread is the AWT/Swing thread. Applet Deployment: Thread is some browser thread.
Servlet Deployment: Thread comes from web server pool. Client Deployment: Thread is the AWT/Swing thread.
Best Regards. A quick google returns a (alas not updated in 5 years). As for pros/cons - as I see it Native engine with bindings would be the worse option when it comes to distribution and integration, but may be faster than the native Java engines (but I would want proof first). Java engine with API would lead to some awkwardness at integration points, but should be easy to distribute. Prolog to bytecode compiler should handle integration between the two languages nicely, and would mean that you are not shipping prolog scripts with the binary (may be a disadvantage). Big disadvantage with this - none still seem to be a live. Prolog-alike language to bytecode compiler, same as above, but some still seem to be floating about, also would require knowledge of a new language.
Java rules engine - I'd see this as the neatest solution. Rather than use two languages code the rules in a Java-y way, but it depends on how complicated the rules are to express in that way. A second thing to consider is - is the project still being updated. From my quick google, few are.
And are two exceptions from the latter options.