J-Sim: A Simulation Library

J-Sim is a scientific library for discrete-time process-oriented simulation in Java. J-Sim's primary domain is simulation of queuing networks but it can be easily used for any other simulation using discrete time.

J-Sim mimics the famous Simula language and brings you some of its main concepts, on a 21st-century programming platform.

J-Sim is a scientific library for process-oriented discrete-time simulation. It is written in Java 5 and allows you to create your own Java programs that use the concept of process interleaving in discrete model time that simulates real-world phenomena. The primary use of J-Sim is simulation of queuing networks but it can be used for any other discrete-time simulation.

J-Sim was originally developed at the University of West Bohemia; later, it was re-written to provide better performance and offer more features. All new versions and documentation will be published on this site.

Features

The basic building blocks of every J-Sim simulation are processes, optionally queues, semaphores, message boxes, random-number generators, and other user-defines objects. Processes are active while other elements of the simulation are passive. The simulation is executed in a step-by-step manner. During a step, just one process is given an chance to run.

J-Sim is built up upon some very well known principles inherited from the Simula language, such as:

  • life of processes, described as a sequence of actions;
  • model time, shared by all processes within a simulation world;
  • process state manipulation routines (hold(), passivate(), ...), controlling simulation progress;
  • queue facilities HEAD and LINK, used for easy manipulation with queues and elements contained within them.

In addition to the standard features that a Simula user might expect, some extra features are provided:

  • simulation of Dijkstra semaphores – processes may get blocked and unblocked on them;
  • simulation of message passing – blocking and non-blocking send and receive operations; symmetric, asymmetric, and indirect communication supported;
  • independent random-number generators (exponential, Gaussian, boolean, and uniform distribution) that can be initialized by user-defined seed and therefore guarantee repeatability of experiments;
  • console mode and two GUI modes (batch and interactive).

Learn it!

J-Sim comes with many examples that you can use. They cover all J-Sim features, starting with trivial ones (a couple of lines of code) and ending with complex ones. Using the examples, you can learn J-Sim even without reading the documentation.

Also, reading the J-Sim Tutorial is a great way to learn how to use the library and to see how it works internally. First, it explains the concepts of discrete-time process-oriented simulation in general; then, it explains the internals of the library. A Postscript version is available in the distribution.

Browse the J-Sim API documentation generated automatically from the source code by JavaDoc. It's also available off-line as a part of the distribution.

License

J-Sim is open source, licensed under the Academic Free License version 2.1. The license has been approved by the Open Source Initiative and complies with the Open Source Definition.

Download

File Size [B] Description Release Date
JSim-0.6.0.ZIP 1.453.249 J-Sim 0.6.0 packed with ZIP.
For DOS-like systems: Windows, DOS, OS/2, ...
2006-Aug-15
JSim-0.6.0.tar.gz 718.662 J-Sim 0.6.0 packed with tar and gzip.
For Unix-like systems: Linux, BSD, Solaris, ...
2006-Aug-15

Each archive contains: Java sources, compiled classes, JAR, tutorial in HTML and Postscript, generated JavaDoc, examples, Ant build file, read-me/license/install/credits text file.

See Install.TXT to set up your classpath.