A Prolog-oriented extension of Java programming based on generics and annotations

Although object-oriented languages are nowadays the mainstream of application development, several research contexts suggest that a multi-paradigm approach is worth pursuing. In particular, a declarative, logic-based paradigm could fruitfully add functionalities related to automatic reasoning, adaptivity, and conciseness in expressing algorithms. In this paper we present P@J, a framework for enhancing interoperability between Java and Prolog based on the tuProlog open-source Prolog engine for Java. P@J supports smooth language-interoperability by first introducing an API for modeling first-order logic terms by Java generics and wildcards, promoting expressiveness and safety. On top of it, an annotation layer is then introduced that extends Java with the ability of implementing parts of the application code using Prolog.