Compiling Prolog to Idiomatic Java
Today, Prolog is often used to solve well-defined, domain-specific problems that are part of larger applications. In such cases, a tight integration of the Prolog program and the rest of the application, which is commonly written in a different language, is necessary. One common approach is to compile the Prolog code to (native) code in the target language. In this case, the effort necessary to build, test and deploy the final application is reduced. However, most of the approaches that achieve reasonable performance compile Prolog to object-oriented code that relies on some kind of Virtual Machine (VM). These VMs are libraries implemented in the target language and implement Prolog's execution semantics.