Prolog/Combining Languages

Prolog programs are rarely used standalone, they are usually embedded in imperative programming languages like in Java, C or C++. It's usually easier to embed it in languages, which support OOP than in C, because the Prolog types are very different from the ones used in imperative languages, and objects can encapsulate their specific behaviour quite well. (e.g. the "not instantiated" state of a variable)

SWI-Prolog
You can find the documentation about Java-Prolog interface here:

Interfacing with Perl: