SimJava is a discrete event, process oriented simulation package. It is an API that augments Java with building blocks for defining and running simulations. The original SimJava was based on HASE++, a C++ simulation library. HASE++ was in turn based on Jade's SIM++. Simjava comes with some animation facilities.
The approach to simulating systems adopted by SimJava is similar to other process based simulation packages. Each system is considered to be a set of interacting processes or entities as they are referred to in SimJava. These entities are connected together by ports and communicate with each other by passing events. A central system class controls all the threads, advances the simulation time, and delivers the events. The progress of the simulation is recorded through trace messages produced by the entities and saved in a file.
As of version 2.0, SimJava has been augmented with considerable statistical and reporting support. The modeller has the ability to add detailed statistical measurements to the simulation's entities and perform output analysis to test the quality of the collected data. Furthermore much effort has gone into the automation of all possible tasks allowing the modeller to focus on the pure modelling aspects of the simulation. Automated tasks range from seeding the random number generators used in the simulation, to producing detailed and interactive graphs.
While developing Simjava2.0, we took a great care in implementing a well-defined pseudo random number generator and a set of classes to deal with commonly used discrete and continuous distributions. This package (eduni.distributions) is now available alone and can be used with any versions of Simjava or even without simjava. It only requires a JDK 1.1-compatible JVM.
A simulation layout
There are also two additional tutorials about simanim and simdiag and a design document:
The Simjava 1.2 API documentation is still available :
Below are listed related works regarding simulation languages, packages and tools:
Institute for Computing Systems Architecture, School of Informatics, University of Edinburgh