SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
research:pdt:contribute:architecture [2014/05/13 10:13]
127.0.0.1 external edit
research:pdt:contribute:architecture [2018/05/09 01:59] (current)
Line 1: Line 1:
 +====== PDT Architecture ======
 +
 +{{:​research:​pdt:​contribute:​dependencies.png|}}
 +
 +===== 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.
 +
 +-> [[..:​start|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. ​
 +
 +-> [[..:​connector:​library|How to use the Prolog connector]]
 +
 +The PDT Connector is an alternative to [[http://​www.swi-prolog.org/​packages/​jpl/​|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 [[http://​www.declarativa.com/​interprolog/​|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:​start|JTransformer]]). ​
 +
 +/*This difference to tools such as InterProlog,​ which offer a sophisticated ​
 +interface to call Java from Prolog, is based on the rationales that:
 +  * we wanted a  .. to be continued ...
 +  *  ​
 +*/
 +
 +/* alternative explanation:​
 +===== Connector =====
 +
 +The **org.cs3.pdt.connector** plugin manages the interaction of the Java side 
 +with Prolog Processes. It creates and deletes Prolog processes and provides ​
 +methods to communicate with them via sockets. ​
 +It also supports notification of the Java side about events on the Prolog side, the 
 +most important ones being the loading and unloading of Prolog files into a running
 +process. ​
 +
 +This event mechanism enables decoupling of the different parts of the real
 +development environment. They use the Prolog connector as an active blackboard that
 +notifies them about relevant events. Thus they do not need to know about each other.
 +E.g. when an Editor saves a file and automatically triggers its loading into the
 +current Prolog process, the Navigator will update the files color (which indicates
 +the loading status) without the Editor and Navigator interacting directly. Their
 +communication is mediated by the Connector, which informs all listening clients
 +(including the Navigator) about the newly loaded file. 
 +
 +  * [[.:​cookbook:​start|Connector API]]
 +
 +You can use the connector without all the rest of the PDT if you are not interested
 +in the develeopment environment but just in the interaction with different Prolog processes.*/​
  
research/pdt/contribute/architecture.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2019