There currently a plethora of Java Graphing Libraries. Many of these are open source, and there are several commercial libraries. A mostly complete compendium of open source libraries that are hosted on SourceForge can be found in the NetworkViz Project. The leading commerical libraries are yFiles and Tom Sawyer Software. However, all of these libraries have drawbacks and limitations that GINY seeks to fill.
GINY implements a very innovative system for sub-graphing and allows for stunning visuals. GINY is open source, provides a number of layout algorithms, and is designed to be a very intuitive API. Other packages do not meet all of our needs. yFiles and Tom Sawyer have the drawback of being somewhat expensive, and that price forms a barrier for inviting a loose collection of programmers to work on an application. Also, by not being open source, it is impossible to modify their code for your own uses. JGraph is open-source, and seems to get a lot press by the open-source community. We have looked extensively at JGraph and have determined that is not suitable for our needs. JGraph is oriented more towards design layout, like Visio, and does not meet our needs in terms of graph operations. There are several other very good libraries listed on the NetworkViz Project that provide a more intuitive API for graph algorithms than JGraph. However, since GINY specifies only a set of Interfaces, any other package could concievably be adapted to implement the GINY interfaces.
In order to meet our needs, and get around the limitations imposed by other packages, GINY was produced! It is being incorporated into Cytoscape, and is replacing yFiles in that project. If you have a project that is looking for a fully-featured open-source (LGPL, but could be re-liscensed ) graphing library, consider GINY.
The public API of GINY defines only interfaces. This is
intentional so that a new implementation can be used seamlessly.
One of the main focuses of this project is to make a "headless" mode
available for graphing projects, and be able to move effortlessly to a
The back-end of the package is currently using libraries from the CERN Colt
project. Colt provides a high-quality, fast, set of data structures that
seem to be missing from the regular Java libraries.
The visual side of GINY is implemented making extensive use of Piccolo. Piccolo is made by the Univerisity of Maryland under the supervision of Ben Bederson and seems to programmed mainy by Jesses Grosjean. Piccolo provides a very efficient ZUI. Piccolo has enabled us to create some very cool and useful nodes, especially for visualization of multi-dimensional information.
A number of our layouts are derived from implementations from the JUNG project. These layouts are annotated as such in the source code, and the JUNG license must be retained if making further derivitave of this code. The JUNG library offers a number of interesting ideas, and we hope to colloborate with them further in the future.^ top