Technologies

This page details the technologies and software used in designing, programming and testing the gnutVis system.

Java from Sun Microsystems

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.

Java Web Start (JWS)

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

"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

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.

InetAddressLocator

"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 for UML

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.