For my studies on trust metrics, I need to code trust metrics. I was looking for a Java package for modeling, analysis, and visualization of graphs (possibly weighted and directed). I tried many of them (see below) but I found a wonderful one!
Java Universal Network/Graph Framework hosted on SourceForge so open source under a BSD licence (javadoc).
JUNG — the Java Universal Network/Graph Framework–is a software library that provides a common and extendible language for the modeling, analysis, and visualization of data that can be represented as a graph or network. It is written in Java, which allows JUNG-based applications to make use of the extensive built-in capabilities of the Java API, as well as those of other existing third-party Java libraries.
The current distribution of JUNG includes implementations of a number of algorithms from graph theory, data mining, and social network analysis, such as routines for clustering, decomposition, optimization, random graph generation, statistical analysis, and calculation of network distances (Dijkstra Shortest Path), flows, and importance measures (centrality, PageRank, HITS, Random Walk, etc.).
JUNG also provides a visualization framework that makes it easy to construct tools for the interactive exploration of network data. Users can use one of the layout algorithms provided, or use the framework to create their own custom layouts. In addition, filtering mechanisms are provided which allow users to focus their attention, or their algorithms, on specific portions of the graph.
If you don’t trust me, you can try the Ranking Demo or the other demos.
It is of course an evolving project, I already wrote some code to draw arrows and to label edges with weights and I’m trying to integrate it. I plan to code some of these trust metrics. JUNG is maintained by some great PhD students.
Other packages I tried and didn’t fit my needs: JGraphT (visualizable with Jgraph), JGraph, jdigraph, The Data Structures Library in Java.
Other packages I quickly analyzed without downloading them and trying them and not meeting my needs either (especially because focusing only on graph visualization): Graph Foundation Classes for Java (It is by IBM but it is retired and no longer available), OpenJGraph – Java Graph and Graph Drawing Project, Touchgraph (wonderful for visual interaction with drawn graphs), Grappa (A Java GRAPh PAckage), JGraphEd, Graph Editing Framework, GVF – The Graph Visualization Framework, Graph Mapper, VGJ, Visualizing Graphs with Java
Many of these packages (and some more) can be found searching graph on java-channel.org