PDT Architecture

Prolog IDE

The part of the Prolog Development Tool visible to Prolog programmers consists of a set of Eclipse views (navigator, console, editor, context view, global view, load graph). These are implemented in different Eclipse plugins (the five top-most blue plugins in the image above).

The views are built on top of a few plugins that implement shared functionality (e.g. the shared search functionality can be triggered from the editor, the console, a top-level dialog or <Ctrl> <H>). In the image above, these are the four bottom-most blue plugins).

Together, the blue plugins make up the IDE part of the PDT.

How to contribute to the IDE development

Prolog Connector

Below the IDE is the Prolog Connector (green in the image). It establishes the connection of a Java / Eclipse process and a Prolog process and can be used independently from the IDE part.

The Prolog Connector is based on sockets and implements a pure client-server relation: The Java processes send requests, the Prolog processes answer. Communication from Prolog to Java is possible via a notification / observer mechanism: The Java side can declare to be listening for certain events and can explicitly call the Prolog side when notified that the respective events occurred.

How to use the Prolog connector

The PDT Connector is an alternative to JPL that is convenient in cases when you want to separate the Prolog side from the Java side. The obvious reasons are

  • stability (if the Prolog process crashes, the separate Java process is still responsive)
  • multiplicity (if you need to interact with several, independent Prolog processes).

The PDT Connector is an alternative to InterProlog if you do not need full bidirectional communication (including calls from Prolog to Java). The mix of the Java to Prolog calls and the event mechanism for notification about events on the Prolog side is a simple, efficient interface that lets us transfer high amounts of unstructured data very fast (which is very useful for systems such as JTransformer).

Last modified: 2016/04/18 02:36