This page details the technologies and software used in designing, programming and testing the gnutVis system.
The project was written in the Java programming language, due to two
main reasons:
Portability - being written in Java allows the program to be run by any computer that can run the Java Virtual Machine. This is an important factor for putting the program online so it may be accessed worldwide.
JTella - the JTella API is written in Java and is used extensively by the program. Although there may be other Gnutella connection API's, JTella has been used previously by the Department so is understood quite well.
You can view Sun's introduction to Java by clicking here.
I have used a wide variety of Java's capabilities, most notably its graphical component, 'Swing', which was used to create the front end of the program and the visualisations.
Using Java Web Start technology, standalone Java software applications can be deployed with a single click over the internet. Java Web Start ensures the most current version of the application will be deployed, as well as the correct version of the Java Runtime Environment (JRE).
This is an important technology for the project, as the idea is to allow people anywhere in the world to view the state of the Gnutella network, provided they have an internet connection. It would be possible to do this using Java Applets, but JWS has a few advantages:
Offline support - With JWS you can still launch the program even if you are not currently connected to the internet - this is not the case with Applets.
Caching - A JWS program is stored locally and so runs with the same performance as an application installed on the local machine. It also does not need to be reloaded on each use as is the requirement with an Applet. It can also be loaded independantly of the browser, by using a desktop shortcut.
Portability - Works with all browsers and versions of the JRE.
"db4o is designed to be a simple, easy-to-use, and fast, native
object database.
system."
An open source, native to Java database that addresses the 'impedence
mismatch' problem. When developing Object-Oriented software, there is
the problem of transitioning between the OO structure and the persistence
of a relational database. There is usually a choice to be made between
speed and object-orientation: Native SQL is fast, but requires a lot of
additional code, while Object-oriented mappers suffer from degradation
of performance. One of the main reasons for using db4o instead of JDO
was the fact that you only need one line of code to store objects in the
database. Also, there are no enhancer or pre/post compiler processes.
We expect db4o to be faster at storing and retrieving data, which will
be important as there are likely to be many transactions taking place.
The database was used to store information on Gnutella peers in order to provide a historical context to the data. When a peer is received by the program, it is timestamped and stored in the database. This allows us to see what hosts were online and when.
JFreeChart is a free Java class library for generating charts including the bar and line charts which were used in the program. There are also many other chart types which were not used. JFreeChart makes the creation of dynamic charts relatively easy - simply update the data set which is used to create the chart, and the chart will update immediately on screen.
Features of JFreeChart include support for tool tips, zooming, printing, and export to other formats. Complete source code and comprehensive API documentation are included, and a developer guide is available.
"The fastest, most accurate IP geolocation system in the universe."
This is a simple but very useful library that allows you to discover the Country an IP address originates from. As Gnutella peers are only identifiable by their IP address, this library was invaluable in working out which country they came from. Examples of this functionality can be seen in the World Map of online peers, as well in the peers bar chart.
Poseidon is a program for creating UML diagrams such as class, sequence
and collaboration diagrams, which were used in the design of the
system.
The Community Edition is available for free download while the Standard
Edition is available in the lab. Unfortunately, Poseidon is not as stable
as we would like and often crashes on startup or in the middle of working.
There also seems to be a compatibility issue, as after upgrading to version
3.0 of the Community Edition, I'm no longer able to open my files on 2.5
in the lab. There are other UML programs available, but these are not
installed in the lab, so we decided to use Poseidon.