University of Hamburg
Department of Computer Science
DESMO-J Logo Version History
Version 2.5.1e/
Version 2.5.0
March 2017/
November 2015
  • More efficient process execution based on fibers.
    Call Experiment.setCoroutineModel(CoroutineModel.FIBERS) to activate. Requires quasar agent made available to the JVM, using command line switch "-javaagent:[path of Quasar-jar file]".
    Please download the jar from the Quasar project website or fetch the JDK8 version it from our repository.

    Note: Since 2.5.0, DESMO-J is not fully compatible to prior versions: Fiber-based process execution requires methods the consume simulation time (most importantly Simproces.lifeCycle()) declaring throws co.paralleluniverse.fibers.SuspendExecution.
    In addition, many deprecated classes (e.g. SimTime, Distributions Real..../Int...) have been discarded.

Version 2.4.2
November 2014
  • Histogram and TimeSeries plots now included in HTML report output, based on JavaScript.
Version 2.4.0
June 2013
  • Various minor improvements.
Version 2.3.5
February 2013
  • Various visualization improvements.
  • Minor bug fixes.
    Note: DESMO-J now requires Java 7 (aka JDK 1.7.X) or newer.
Version 2.3.4
May 2012
  • Chaining components, e.g. for generic production systems.
  • Event and process prioritzation.
  • Minor bug fixes and documentation improvements.
Version 2.3.3/
Version 2.3.3b
November 2011
  • Extensions to 2D animation, e.g. background images, more flexibility how to draw entities and their transport routes.
  • Minor bug and documentation fixes, including event list output in class Scheduler.
Version 2.3.2
September 2011
  • Extensions to 2D animation, e.g. prioritized queues, background lines.
  • New download package "core_gui" inclduds core package plus experimentation GUI, thus providing expieriment parameterization without requiring the "complete" package.
  • Minor bug and documentation fixes.
Version 2.3.1
May 2011
  • Minor bug and documentation fixes, including class Accumulate.
Version 2.3.0
April 2011
  • New event classes EventOf2Entities and EventOf3Entities referring to more than one entity. Entities may be scheduled more than once at the same time.
  • 2D animation component, thanks to Prof. Dr. Christian Müller (TH Wildau, Germany) and his research group (in german)
  • 3D visualisation based on Java 3D.
  • Distribution package desmoj.core.dist refactored. New distributions include Binomial, Gamma, Triangular and custom distributions based on any cumulative distribution function.
  • Various minor bug fixes and improvents, e.g. separation of desmoj.core.Condition (refers to an entity) and desmoj.core.ModelCondition (refers to the model as whole, previously desmoj.core.Condition, too) and a model's initial schedules now producing trace and debug output if desired.
Version 2.2.0
June 2010
  • Classes TimeSpan and TimeInstant distinguish between duration and point in time; SimTime can still be used, but is deprecated.
  • Experiments now can be executed real-time-synchronously, see Experiment.setExecutionSpeedRate(double).

  • Note: DESMO-J now requires Java 6 (aka JDK 1.6.X) or newer.
Version 2.1.4b
November 2008
  • Bug fixes in classes Accumulate and Aggregate.
Version 2.1.4
October 2008
  • Small additions (e.g. classes TallyRunning and Aggregate, the latter providing a non-integer (double) equivalent to Count), minor bug fixes.
Version 2.1.3
July 2008
  • Classes Event, Queue and ProcessQueue are now generic; assiging types of entities enqueued or referred to increases type safety and reduces the number of casts required. Various bug fixes.

  • Note: DESMO-J now requires Java 5 (aka JDK 1.5.X) or newer.
Version 2.1.2
April 2008
  • Several small additions and improvements, e.g. higher run-time efficiency, Mersenne-Twister pseudo random number generation, and various bug fixes.
Version 2.1.1
April 2006
  • The graphical experiment starter with integrated XML reporting has been re-introduced with some modifications.
  • Most important, charting facilities are now built right into DESMO-J. The external JFreeCharts library is no longer necessary. Charts can be registered with two of the most important statistical observers (TimeSeries and Histogram).
Version 2.1
Feb. 2006
  • DESMO-J is now licenced under the Apache License, Version 2.0. Comments and reports have been adapted accordingly (No functional change). Bugfix in IntDistUniform.
Version 2.0.1
Feb. 2005
  • DESMO-J is now licenced under the GNU Lesser GPL. Comments and reports have been adapted accordingly. (No functional change)
  • The method deliver(long n) of class Bin (unlimited buffer) has been renamed to retrieve(long n) to match the signature of class Stock (limited buffer).
Version 2.0
Nov. 2004
  • DESMO-J has been completely re-factored so that its package structure doesn't comply with that of older versions anymore.
    Note: Older versions are no longer supported!
  • The standard HTML output has been supplemented by an output in XML.
  • We proudly present a basic graphical user interface to facilitate experimentation with DESMO-J models.
Version 1.6
Aug. 2003
  • The package desmoj.harbour has been added to the DESMO-J distribution. This package contains specialized classes for modelling harbour logistics that were developed by Eugenia Neufeld in her diploma thesis.
  • Due to the integration of these new classes some minor modifications (mainly changes of access modifiers) were made to the core DESMO-J classes.
Version 1.5
May 2001
  • in many QueueBased-Classes (i.e. Bin, Entrepot, Res, etc.) there can be chosen to let the SimProcesses enqueued overtake each other. The reporters have been adjusted to display this option
  • when changing the priority of an Entity which is enqueued in a queue according to its' old priority a warning will be generated
  • when setting up a new Experiment the directory for the output files (i.e. report, trace, debug, error) and a reference time (when the experiement starts) together with a reference time unit can be determined. So the start and stop time of an experiment can be given in 'real time'. In case a stop time is given a progress bar showing the progress of the experiment will be displayed
  • Class TimeConverter added to convert simulation time to 'true time' and vice versa
  • There have been some classes added (Transporter, SimpleTransporter, TransportJunction, TransportTerminal, Transportation) to make it easier to model the transportation of parts (represented as SimProcesses) from one point to another
  • There have been some classes added (MachineProcess, Worker, WorkStation, PartsList, Processing) to make it easier to model a work station where parts (represented as SimProcesses) are manufactured
  • Some minor bug fixes.
Version 1.4
Dec. 2000
  • Class Resource added. Every resource is now represented as an individual object.
  • Class ResourceDB added. Monitors the resource usage and reports deadlock situations.
  • All queues now can have a limited capacity and the sort order (FIFO or LIFO) can be chosen, too.
  • Class ArrivalProcess added to model the arrival of SimProcesses in a system more easily.
  • Class ComplexSimProcess added to compose several SimProcesses to one 'entity'.
  • Class Stock added to model an inventory with a limited capacity and four different restock processes.
  • Class Entrepot added to model an inventory for SimProcesses with a process representing the demand and removing the SimProcesses from the Entrepot.
  • The field epsilon (minimum distinguishable time span of simulation time) is deleted from class Experiment and is now in class SimClock only.
  • Class now has a field to record the SimTime the message was created at; is returned by method getSendTime().
  • Some minor bug fixes.
Version 1.3
May 2000
  • DESMO-J now licensed under GNU GPL. Comments and html-report have been adapted accordingly. (No functional change)
  • New features as described in [Claa00]
  • Added Classes for deadlock detection
  • Res - for non-consumable resources now has individual ressources.
  • These features are as yet under development! Anything else should work as expected.
Version 1.2.1
Jan. 2000
  • New methods: getEpsilon() and setEpsilon() in Class Experiment
  • The order of parameters in the constructors for the random distributions (in package desmoj.dist) are changed, so showInReport and showInTrace are allways last.
  • Method description() in Class Model is declared abstract to force the user to implement it.
  • In method run() in Class SimThread the order of sendTraceNote() and freeThread() is changed to produce a better trace output.
  • Some random distributions (e.g. RealDistNormal) can be set to nonNegative now to avoid getting negative values as samples.
  • Bugfix in RealDistUniform, so this random distribution now returns "real" numbers.
  • Class ValueSupplier contains no notifyStatistics() method without any parameter anymore. Use notifyStatistics(Object arg) with the parameter arg instead.
Version 1.2
Jan. 2000
  • Found bug in thread synchronization causing a "nullpointerException" when surviving threads had to be killed after the end of a simulation. Bug has been removed
Version 1.0.9
Nov. 1999
  • New features as described in [Claa99] and [PLCl00]
  • Added Classes for process synchronization Bin - for consumable resources Res - for non-consumable resources WaitQ - for direct master/slave process-cooperation CondQ - for conditional waiting in a queue
  • new classes for statistical functions Tally Count Accumulate
  • Bugs that were discovered and squashed : Improved Report layout Fixed bug in distribution IntDistUniform that would decrement its actual range by 1
Version 1.0
Aug. 1999
  • Basic framework as described in [Lech99]