Java Network Simulator - JNS
The Java Network Simulator is a Java implementation of the ns-2 simulator originally from Berkeley. It is by no means as complete as ns-2, but it is a lot more accessible to programmers not familiar with Object Tcl..
JNS allows developers of networking protocols to simulate their protocols in a controlled environment. The simulator then produces a trace file (same format as NAM trace files) which can be viewed in a network animator such as Javis. Below is a screen shot of a simulation run from JNS being animated in Javis.
A simulation run from JNS displayed with Javis 2.0
JNS is a project originating from UCL. The original authors are Lee Eriera, Mark Jatana, Christian Nentwich and Aleksandar Nikolic. (Someone correct me if I'm wrong). The last UCL version is available here.
The latest version available from sourceforge is version 1.7. This version adds multicasting, multithreading and dynamic scheduling. In addition JNS now supports simulation of "real" Java network applications, as there is a fake.net.MulticastSocket and a DynamicScheduler which will transform any network calls made from a Java program into scehdulable events on JNS. This allows programmers to test real-world implementations of protocols rather than just scripts.
The source is available by CVS and as a zip file available from the JNS SourceForge site I am currently looking to add enough features to JNS for it to be a viable tool for network research. If this happens depends alot on how busy my PhD keeps me, but if you're interested in participating, feel free to contact me/sign up as a developer (use the Sourceforge page).