Java in Simulation Time / Scalable Wireless Ad hoc Network Simulator
people docs license download related thanks

Introduction to JiST

JiST is a high-performance discrete event simulation engine that runs over a standard Java virtual machine. It is a prototype of a new general-purpose approach to building discrete event simulators, called virtual machine-based simulation, that unifies the traditional systems and language-based simulator designs. The resulting simulation platform is surprisingly efficient. It out-performs existing highly optimized simulation runtimes both in time and memory consumption. For example, JiST has twice the raw event throughput of the highly optimized, C-based Parsec engine, and supports process-oriented simulation using a fraction of the memory.

The JiST approach is also inherently flexible, capable of transparently performing important cross-cutting program transformations and optimizations. This transparency is a key benefit: simulation code that runs on JiST need not be written in a domain-specific language invented specifically for writing simulations, nor need it be littered with special-purpose system calls and call-backs to support runtime simulation functionality. Instead, JiST converts an existing virtual machine into a simulation platform, by embedding simulation time semantics at the byte-code level. Thus, JiST simulations are written in Java, compiled using a regular Java compiler, and run over a standard, unmodified virtual machine.

The following tables list some JiST time and space micro-benchmark results. For a detailed explanation and for further information, please refer to the JiST user guide and other online documentation.

Event throughput Memory footprint
5 million events time (sec) vs. baseline vs. JiST
baseline 0.738 1.00x 0.76x
JiST 0.970 1.31x 1.00x
Parsec 1.907 2.59x 1.97x
ns2-C 3.260 4.42x 3.36x
GloMoSim 9.539 12.93x 9.84x
ns2-Tcl 76.558 103.81x 78.97x
memory per entity per event 10K node sim.
JiST 36B 36B 21MB
GloMoSim 36B 64B 35MB
ns2 544B 40B * 74MB
Parsec 28536B 64B 2885MB

Introduction to SWANS

SWANS is a scalable wireless network simulator built atop the JiST platorm. It was created primarily because existing network simulation tools are not sufficient for current research needs, and its performance serves as a validation of the virtual machine-based approach to simulator construction. SWANS is organized as independent software components that can be composed to form complete wireless network or sensor network configurations. Its capabilities are similar to ns2 and GloMoSim, but is able to simulate much larger networks. SWANS leverages the JiST design to acheive high simulation throughput, save memory, and run standard Java network applications over simulated networks. In addition, SWANS implements a data structure, called hierarchical binning, for efficient computation of signal propagation.

The following table lists some SWANS time and space macro-benchmark results running simulations of a beaconing node discovery protocol. SWANS can simulate networks that are one or two order of magnitude larger than what is possible with GloMoSim and ns2, respectively, using the same amount of time and memory, and at the same level of detail. SWANS simulates a million node network on a 2.0 GHz uni-processor with 2 GB of RAM. For further information and explanations, please refer to the SWANS user guide and other online documentation.

SWANS performance
nodes simulator time memory
500 SWANS (hier) 43 s 1,101 KB
GloMoSim 82 s 5,759 KB
ns2 7136 s 5,8761 KB
5,000 SWANS (hier) 430 s 5,284 KB
GloMoSim 6191 s 27,570 KB
50,000 SWANS (hier) 4377 s 49,262 KB
1,000,000 SWANS (hier) -- 933 MB


  • April 2004 - JiST v1.0 released.

Site map

  • people - people involved with JiST and SWANS.
  • docs - manual, papers, presentations, and notes.
  • license - software release license.
  • download - software distribution.
  • related - links to related projects.
  • thanks - acknowledgements.

Please email comments and suggestions to Rimon Barr <barr@cs.cornell.edu>.

spyce email Rimon Barr <barr@cs.cornell.edu>,
Zygmunt J. Haas <haas(at)ece(dot)cornell(dot)edu>.