Key Attributes of JACK

  • Lightweight, efficient cross-platform foundation
  • Low resource requirements, designed to handle hundreds of agents running on low-end hardware
  • Transparent inter-agent communications
  • Graphical agent development tools

More about JACK

JACK® applications consist of a collection of autonomous agents that take input from the environment and communicate with other agents. This provides system builders with a very powerful form of encapsulation. Each agent is defined in terms of its goals, knowledge and social capability, and is then left to perform its function autonomously within the environment it is embedded in.

This is a very effective way of building applications for dynamic and complex environments – each agent is responsible for pursuing its own goals, reacting to events and communicating with other agents in the system. There is no need to explicitly program the interactions of the whole application, rather, the interactions emerge as a by-product of the individual goals and capabilities of the constituent agents.

JACK is a mature, cross-platform environment for building, running and integrating commercial-grade multi-agent systems. It is built on a sound logical foundation: BDI (Beliefs/Desires/Intentions). BDI is an intuitive and powerful abstraction that allows developers to manage the complexity of the problem. In JACK, agents are defined in terms of their beliefs (what they know and what they know how to do), their desires (what goals they would like to achieve), and their intentions (the goals they are currently committed to achieving).

Entirely written in Java™, JACK is highly portable and runs on anything from PDAs to high-end, multi-CPU servers. Its Java foundation means that JACK can run with multiple threads across multiple CPUs, has platform-independent GUIs, and is easily integrated with third-party libraries.


What is the current version of JACK?

The latest release of JACK is version 5.6 (jack56d).

Do I need Java on my computer?

Yes, you need a Java Development kit or equivalent installed on your computer. A Java runtime by itself is not enough.

Do you provide any documentation?

JACK® documentation is provided as part of the JACK Documentation package. This package is separate from JACK itself. Once installed, the documents (in PDF and HTML format) are in the doc subdirectory. You can access the JACK documentation from the Help menu of the JDE.

There should also be a link in the automatically installed menu or shortcuts. If not, point your browser at the file doc/jackdocs.html in the place where you installed JACK and it will guide you to all the available documentation.

Do you provide any examples?

The JACK® installation comes complete with a set of examples in the sub-directory examples.

You can also look under the Help menu in the JACK Development Environment (JDE).

Do you provide any examples using the JACK Development Environment?

Yes. Look under the Help menu.

How are plans scheduled and how many threads does JACK® use itself?

Within a single JVM, all JACK® agents are (normally) executed by just one thread. JACK includes a time-based scheduler, which ensures that all agents get a slice of execution. On top of that, each JACK agent can have many tasks pending at the same time so each agent can specify its own task manager. This provides the task execution policy for that agent. The default is for the agent to stay committed to a task as long as possible.

Each JACK plan is transformed by the compiler into steps in a finite state machine which can be executed by an agent's task manager. The executing thread may leave the plan (task) and come back to it later, and then continue progressing the plan (task) later.

Thus, JACK has only one thread. Plus an additional one for receiving messages.

In many applications, the code within an agent is "java interface code", which may be invoked by threads other than the JACK scheduling thread. (The message receiving thread is an example of such a thread).

I didn't get my password sent to me? Why is this?

There are three possible reasons for this.

  • You may have accidently mistyped your email address.
  • Your SPAM filter may have thought the email was SPAM and has withheld/deleted it.
  • Mail to/from Hotmail or Yahoo accounts sometimes gets blocked along the way for reasons beyond our control. Avoid registering with free accounts if you are affected by this.

  • Before contacting us, please check to ensure one of these reasons is not the cause.

    I get strange compilation errors but if I clean up first everything is OK. Why is that?

    Some versions of the JACK® compiler had trouble telling apart Java files that were automatically generated by JACK from user-provided Java files. This lead to many name clashes due to duplicate declarations. Newer versions of the compiler should be ok but if in doubt, clean it out!

    I get the message "New Executor spawned due to misbehaving agent". What's going on?

    This happens when any plan step of a reasoning method (e.g. body()) takes an unreasonably long time to complete (about half a second). It usually means that something is calling out to Java code and not coming back, normally a bug with your code. Individual plan steps must execute quickly. In any case, the JACK® kernel leaves that thread alone since it is taking too long and starts a new one to handle other plans. If the original one ever comes back then all is ok. If not, then the agent mentioned is hung. Often this is harmless but it might indicate a bug in your code. There are several ways you can include a lengthy computation within a plan step should the need arise. One quite flexible way is to use an Action cursor (aos.jack.util.cursor.Action). See the JACK Agent Manual for details.

    My JACK® program just hangs and does nothing.

    If the process is using a lot of CPU, then you may simply be stuck in an infinite loop. Otherwise, there may be nothing to do because JACK® is just waiting around for an event to process. There are tracing options described in the JACK Agent Manual which may be of use.

    My Windows computer tells me that "Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value xxx, but yyy is required". What should I do?

    This is a Java installation problem rather than a JACK® one. It sounds like your old Java xxx runtime or JDK has become stuck in the registry. Possibly the previous Java that was installed did not get uninstalled properly and now there are incompatible Java components mentioned in the registry.

    Although tedious, we suggest the following:

  • Uninstall all Java or JDK software (via Control Panel).
  • Make sure all Java or JDK software are actually removed. (E.g. delete the C:\Software\JavaSoft folder if it exists and the JDK folder, wherever you installed it).
  • Search the registry for any key or value containing "java" and remove it! (Use the "Run..." command and type 'regedit', then use the find command within regedit).
  • Install the new JDK again.
  • Make sure you have PATH & CLASSPATH set properly. Check that the "BIN" directory of the JDK is in your PATH since the Java installer does not seem to do this for you.

  • The JACK® Compiler tells me "** couldn't execute **". What does this mean?

    The JACK® compiler needs to be able to locate your java compiler, javac. The message indicates that the java compiler can't be found. You need to have installed a JDK (Java Development Kit) and you need to add the bin directory of wherever your JDK is installed to the PATH environment variable. Unfortunately, the Java installer may not do this for you. Under Windows 2000/XP, you can do this from the Control Panel, under System, in the Environment tab. Under Windows 95/98 etc. you would need to edit C:\AUTOEXEC.BAT.

    To test this, open a Command Prompt window and type javac and see if the command is found. If found, it should complain about being called without any java file arguments. If it is not found, then there is still a problem. You may need to log out or reboot after setting the PATH variable.

    One other potential problem is if your PATH environment variable has quotes in it. If so, the JDE may not be able to compile your programs. Edit the PATH as described above, and remove any quotes.

    Why do I need to give you my email address?

    If you requested an evaluation copy of JACK® then your email address is required for us to send you a password to enable you to install JACK and use it for the duration of your evaluation period. We do not use any information provided by you for any other external purpose and any information provided by you is treated with the utmost confidence.

    Read about our Privacy Policy here.

    Why doesn't my JACK® program exit?

    JACK® applications never exit on their own. The JACK kernel is always waiting for an event to process. If you want the application to exit, you should call System.exit(0) explicitly when required. However, calling System.exit in this way stops everything immediately. If JACK was still processing, you may get unexpected results.