JinnIde - Advanced Features
JinnIde is the Jinni Prolog IDE Plugin for JEdit. From the Cassandra release onwards,
a lot of new features have been added that make JinnIde the most powerful of
the development environments with Prolog support. Should you find an
IDE with Prolog support that achieves such a level, please tell me about it
- but I do not think there exists such a thing! See for yourself what JinnIde has to offer:
GUI IDE based development
Now JinnIde comes with a variety of GUI-based helper tools, that make development
for Jinni Prolog / Prolog as comfortable as developing Java in a modern Java IDE!
JinnIde offers the following:
Simple installation and extensibility
- complete open beanshell-based code allows adapting the GUI and everything
else simply and straight-forwardly by the user/developer her/himself
- all-in-one platform-independent Java installer with fully
choosable component-wise installation for Jinni Prolog version 12+
All these features are directly accessible either by shortcut (user configured),
from the templates viewer or by selecting a respective menu item from the JinnIde
or Templates menu which you
find underneath JEdit's Plugins menu.
Server and JinnIde API support
- Stability controlled server ensures reliable client/server interaction with optional special support for Windows platforms
- JinnIde comes with its own uniform JinnIde Java API to use JinnIde independently from its JEdit environment
JinniEngineAnswer Framework System (JEAFS) - JinnIde's rule-based validation framework
The JinnIde CLIDE release comes with support for the application of Jinni Prolog as a validation engine.
This is accomplished by the following tools available in JinnIde's templates tree:
Thus the user is capable of generating the code in the following tool-based way:
- Create Exception: allows creating a Java exception that is used when an exception is thrown during
the validation process on the Jinni Prolog side. This includes the automated generation of Java class
source code together with its compilation into binary Java object code.
- Create Validator: this tool's function is to support the developer with the automated generation of
a Jinni Prolog module that validates the Java input to be validated. The validator is based on specific
input provided by the user and delivers validators that serve as a basis for validators in
- A test is available in the templates viewer - see the JinniEngineAnswer Test in the following section -
to try out the validator and its validation exception that the user has automatically generated
through above tools.
The Java API for the JinniEngineAnswerFramework consists of the package tools.jinniengineanswer.*; its application is shown through
a couple of examples
- Create a JinnIde project(if not already there) using 'Create Project' from the JinnIde templates viewer
- Create the exception that is raised in case of a failing validation by using 'Create Exception' from the JinnIde templates viewer
- Create a validator i.e. either a Jinni Prolog module or program that validates the user input by using 'Create Validator' from the JinnIde templates viewer. Note that this validator just throws the exception generated in the foregoing step, which also suffices to test that the connection between Java and the JinnIde validation works; the real validation code then needs to be inserted there by the developer
- Run a test to check that the generated code works as expected by using JinnIde's Test utility which is also available in the JinnIde templates viewer (select JinniEngineAnswerTest once you have clicked on the rsp. template viewer entry)
located in the root directory of JinnIde/jEdit.
Start them by executing
- TestJinniEngineAnswerFramework: shows the application of the getSimpleQuery method which is based on a Jinni Prolog program
- TestJinniEngineAnswerFramework2: shows the application of the getQuery method which is based on a Jinni Prolog object
- TestJinniEngineAnswerFramework3: JinnIde server based variation of TestJinniEngineAnswerFramework2
- TestJinniEngineAnswerFramework4: JinnIde server based variation of TestJinniEngineAnswerFramework
java -classpath .:jars/JinnIde.jar:jars/JinnIdeExceptions.jar:jars/jinni.jar TestJinniEngineAnswerFramework2
in jEdit's/JinnIde's console command line.
You might want to modify the source. In this case, when recompiling the following line may be handy:
javac -classpath jars/jinni.jar:.:jars/JinnIdeExceptions.jar:jars/JinnIde.jar TestJinniEngineAnswerFramework2.java
In case of the JinnIde server-based variations start them by executing
java -classpath .:jars/JinnIde.jar:jars/JinnIdeTestExceptions.jar:jars/jinni.jar TestJinniEngineAnswerFramework3
in jEdit's/JinnIde's console command line.
To modify their source recompiling by means of the following line may be handy:
javac -classpath jars/jinni.jar:.:jars/JinnIdeTestExceptions.jar:jars/JinnIde.jar TestJinniEngineAnswerFramework3.java
Note that the server-based variations require the use of Java's security manager and a Java policy file that is properly
setup for the socket-based access of the JinnIde server.
Automated self testability (experimental)
Finally, the latest hot edge of JinnIde's technology is its Test Tool, a pool of automated tests that allow running
tests to verify the correctness of particular JinnIde features. It is available through the template viewer and
currently includes the following tests:
- Simple Test: Switches Loq4Jinni on and tries Jinni Prolog's built-in member predicate, switches it off again
and calls the member predicate the same way as before. This serves to see if Loq4Jinni works properly.
By default the test is done a number of times to try it out for each possible JinnIde configuration.
The JinnIde server is used by default as well and is restarted accordingly.
- Memory Leak Test: Calls JinniDoc to automatically generate the documentation of Loq4Jinni.
By default this test is also done a number of times to try it out for each possible JinnIde configuration.
Again, the JinnIde server is used by default as well and is restarted accordingly.
- Restart Test: Just concentrates on restarting the Jinni Prolog server to check if this works properly
- JinniEngineAnswer Test: Finally, this allows generating a Java class that calls the validator module
generated by the automated templates tool "Create Validator" (see above) to test that it works as
© 2001-2014 Chico Töpfer