Ever had to deal with legacy, poorly unstructured, undocumented codebase ? So did I. At some point the frustration was so intense I started to look for tools for graphing dependencies between java artifacts (projects, jars, classes and packages). Various eclipse plugins offered that, but most were lacking in terms of interactivity, at the time at least (haven't checked much since). So I started to work on my own tool, djinn.
Djinn works by importing bits of code (that could be whole projects, or simple jars, or source directories) into a working set. Once you've done that, djinn will compute all the internal dependencies between every single entity, at a class-level. Dependencies that are outside the working set are ignored, so make sure you imported everything you need to study.
The user is then free to create interactive graphs on whatever he feels interesting. Let's see how it works in practice.
You begin by importing all the java bits you want to scrutinize.
Currently, 3 kinds of items are supported: