next up previous
Next: Getting started Up: JiST- Java in Simulation Previous: Memory utilization

Advantages of the JiST approach

Aside from performance and scalability, we have mentioned various benefits of the JiST design throughout the explanations. For reference, we summarize these advantages below.

application-oriented benefits
type safety - source and target of simulation events are statically type-checked by the compiler, eliminating a large class of errors
event types - numerous constants and the associated type-casting code are not required; events are implicitly typed
event structures - numerous data structures used to carry event payloads and the associated event marshalling code can be eliminated; event payloads are implicitly marshalled
debugging - event dispatch location and source entity state are available during event processing; can generate event causality trace to determine the origin of a faulty event
language-oriented benefits
reflection - allows script-based simulation configuration, debugging and tracing in a manner that is transparent to the simulation implementation
safety - allows for an object-level isolation of state between entities; ensures that all simulation time calls pass through the kernel; allows sharing of immutable objects; provides flexibility in entity state aggregation
- memory for objects with long and variable lifetimes, such as network packets, is automatically managed; facilitates memory savings through sharing of immutable objects; avoids memory leaks and the need for complex memory protocols
Java - JiST reuses the standard language, libraries, compiler and runtime
system-oriented benefits
- since entities share the same process space, we pass a pointer and there is no serialization; there is also no context switch required
- allows cross-layer optimization between kernel and running simulation for faster event dispatch and system calls
robustness - strict Java verification ensures that simulations will not crash; garbage collection protects against memory leaks over time
rewriting - operates at the bytecode level; does not require source-code access
concurrency - simulation object model and execution semantics support parallel and optimistic execution transparently with respect to the application
distribution - provides a single system image abstraction that allows for dynamic entity migration to balance load, memory or network load
hardware-oriented benefits
portability - pure Java: ``runs everywhere''
cost - runs on COTS clusters (NOW, grid, etc.), as well as more specialized architectures

next up previous
Next: Getting started Up: JiST- Java in Simulation Previous: Memory utilization