James II

Java Framework for Modeling & Simulation


Plug-in based architecture
built for maximal flexibility.



Pure Java; the core has
no external dependencies.



From small notebook-based to large cluster-based experiments.



Hundreds of plug-ins.
Focused on efficiency.


JAMES II helps you to develop modeling and simulation applications.
It provides a solid foundation of abstractions, algorithms, workflows, and tools.

Here are some highlights:

Modeling & Simulation

  • Formalism-agnostic: you define what your models look like.
  • Model reading and writing is fully customizable (you can also code your model).
  • Simulator components: reuse event queues, RNGs, and much more.
  • Separation of model and simulator: switch easily between different implementations.
  • Observe state changes, process them with custom code.
  • Code samples to get you going: support for various formalisms is available (e.g., CA, attributed Pi Calculus, ML-DEVS, or ML-Rules).

Experiments & Analysis

  • Simulate multiple replications in parallel, distribute runs across workers.
  • Customizable replication and stopping conditions.
  • Parameter scans, simulation-based optimization, and custom experiment controllers.
  • Workflow-based simulation experiments.
  • Stream-based observation data management.
  • Automatic algorithm selection and adaptive re-configuration at runtime.
  • Generate result reports (including plots).

... and more:

  • Easy to use yet powerful plug-in system.
  • Many plugins for additional tasks (e.g. for statistical tests, visualization).
  • Consistent code base, javadocs, automated builds with Maven.
  • Flexibility: if a component gets in your way, switch to your own implementation.
  • Extensible GUI with many auxiliary components.
  • Sandbox GUI for prototyping your new (textual) modeling language (see it in action here).
JAMES II is a framework and a research prototype: the default GUI is rather basic and many features are instead used via its APIs.


JAMES II requires Java 1.7. Some models are translated to Java code (and then compiled), so install the JDK (not just the JRE).

Make sure Java's binary directory is in your PATH environment variable.

You can test this by executing javac -version in the command line, which should return a version number ≥ 1.7.0.

Use for Modeling & Simulation

Simply download the current release, unzip it, and start JAMES II by double-clicking on the org.jamesii-core-0.9.7.jar file.

Once the GUI is running, go to Workflow > Start simple M&S and play with a formalism that is supported out-of-the-box.


Select Cellular Automata (Rule-Based).

Select Cellular Automata (Rule-Based)

Select the Model Text Editor.

Select Model Text Editor

Choose [JAMES II]/samples/gameOfLife.car.

Open Sample Model File

The Game Of Life model needs a start state to run. For example, click the Fill randomly button, and then Finish.

Model Parameterization

There is only a default instrumenter (to initialize the observation components) and it has no parameters: just click OK to continue.

Instrumenter Configuration

Press the Play icon in the simulation run control window.

Run Simulation

Use for Research & Development

JAMES II is built with Maven (version ≥ 3.0).

To access our source repository (instead of downloading a release), you will also need Mercurial.

There are several ways to build your own application with JAMES II:

Execute this on the command line to create a custom project based on our Maven archetype:

mvn archetype:generate -DarchetypeRepository=http://jamesii.informatik.uni-rostock.de/jamesIIreleases/maven -DarchetypeGroupId=org.jamesii.archetypes -DarchetypeArtifactId=custom-extension-archetype -DarchetypeVersion=0.9.7

If you already have a Maven-based simulation project, just add the JAMES II repository and dependencies to your project's pom.xml file:

 <!-- ... -->

If you are an Eclipse user, here is the most convenient way to set up a JAMES II-based software project:

In Eclipse, go to New > Other and select Maven > Maven Project (if this is not available, install the Maven support for Eclipse first):

Start Maven Project Wizard

Choose Configure..., and Add Remote Catalog... in the appearing dialog:

Configure Archetype Catalog

Enter http://jamesii.informatik.uni-rostock.de/jamesIIreleases/maven (this is the current URL to our public Maven repository) as a 'Catalog File', and close the dialog:

Add Remote Archetype Catalog

Back in the wizard, select the new catalog and choose the newest version of custom-extension-archetype from the list of archetypes appearing below (currently, this should be version 0.9.7):

Select JAMES II Project Archetype

Enter some groupId and artifactId for your project, then finish the wizard:

Enter Project Details

After downloading all dependencies (this may take a while, you can see the progress in the Maven view of the Eclipse console), your new project based on JAMES II is ready.

Now you can run the sample experiments in MyExtensionTest to see how simple simulation experiments are executed with JAMES II.

Use the general JAMES II GUI by starting MyGraphicalUserInterface. To start an experiment with the sample model, go to File > New > Experiment (or press CTRL+E), then enter java://[YOUR_PACKAGE_NAME].model.MyModel as URI. Press OK and in the following dialog, go to Instrumentation and select My Processor Instrumenter. If you now hit the 'Play' button to start the experiment, select the Visualization Data Plotter, and start the simulation by pressing play in the experiment control window. You should now see the output of the sample model:

Sample Model Output

More details can be found in the documentation.


In 2003, Jan Himmelspach started working on JAMES II as part of the DFG-funded research project CoSA.

Since then, dozens have contributed to JAMES II, mostly by doing research at the University of Rostock's Modeling and Simulation Research Group.

Jan left the research group in April 2013. Since then, JAMES II development is coordinated by a group of long-term contributors.

You can get in touch with us here.


The JAMES II license is, for legal reasons, in German only.

Basically, it is a BSD-style license adapted for German law (regarding our liability and warranty), but which is also compatible with GPL (dual license).


All kinds of contributions (feedback, documentation, bug reports, code) are welcome.

See our development guidelines for details.

How to cite

There are many research papers on JAMES II, so this depends on the components you use and what you are doing with them.

If you want to cite JAMES II in general, this paper describes its foundation:

J. Himmelspach and A. M. Uhrmacher, "Plug'n simulate," Proceedings of the 40th Annual Simulation Symposium. 
IEEE Computer Society, 2007, pp. 137-143.

Where does the name come from?

Not from this guy.

JAMES II is the successor of the simulation system JAMES (surprise!), but rebuilt from scratch.

The name once stood for Java-based Agent Modeling Environment for Simulation.

Since then, JAMES II has evolved to a general-purpose framework. We now call it JAva-based Multipurpose Environment for Simulation.