It is a simple tool that succinctly captures how one Java package depends on another. This might be useful when building large projects or APIs to maintain āappropriateā (runtime) boundaries between different sections of your code base.
Why the double quotes around āappropriateā?
āAppropriateā is what you define for your project.
E.g. in a project following a client server architecture, you might want the client and the server to communicate via a middle-ware or an interface. Keeping the client code from calling the server code. OR, you very well could want the client code to call the server code directly.
You might want to avoid both the client and the server calling each others modules or methods. OR, perhaps you want them to communicate like that.
Installation and Learning curve
INSTALLATION: I have tried the installation with Eclipse and it is simple.
LEARNING CURVE: As long as you know what packages are and how one package uses another, the learning curve is non-existent. I have not yet tried using it in an advanced manner, like with JUnit or with Ant. There might be some learning curve there but it should be trivial.