a well rounded package in Juliet
It was at the end of day#3 at JavaOne and I was tired. I was tired of product pitches, tired of talking, and tired of listening to all the hype. I was collapsed in a chair looking forward to heading over to the JBoss Matrix showing so I could sit in a dark room and not have to speak to anyone without feeling guilty. So it probably wasn't the best time to be coming up to me and trying to pitch me an idea! But someone did! Carlo Walentiny of Infotectonica stepped forward and in a quiet voice give me his standard elevator pitch. I still wasn't impressed or even paying attention I think, but he pushed forward and opened up his laptop to show me a demo of something he called Juliet.
When he opened it up, I woke up out of my trance. I was instantly impressed. I had no idea what the hell it did at that moment because I wasn't really listening before. The GUI wasn't Swing, and it wasn't SWT, it was his own! And man did it look stunning. It was doing some sort of analysis of java code files, which was taken some time. But the way he fed back this wait to the user was not only innovative but useful. It was at this point I was hooked. Anyone that could put as much care to detail as that, deserved my full attention.
Juliet is a Java client tool that is used to analyze and navigate through source code and tell you things you never knew! It excels on large code bases and when I tried it on the full source code tree for our BlueDragon I was even more impressed! It gave me back a whole load of useful information such as the number of times a particular method was used, where it was referenced and by whom. I could easily drill down into this information and at each level I was presented with more stats. One of the useful features, was the ability to spot unused methods and constructors. Although some of this information is available through various plugins with many of the IDEs, I found the fact Juliet was standalone a refreshing way to look at my code. I could get myself into the mindset that I was Q&A'ing code and resist the urge to fix small code problems along the way.
One of the really nice things with Juliet is the interface. A lot of thought has gone into this and it is this that won me over to begin with. The way you organize queries and group results together is very slick and its not long before you are presented with a Venn diagram window to ask you how you wish your results to be merged. Very nice touch.
So who or what is Juliet aimed at? It is an ideal tool for anyone that has to review code changes before they are committed to a CVS branch for example. Also very useful for open-source projects where you want to get a feel for the whole source branch as a whole without necessarily loading into an IDE.
If you need to get up to speed quickly on a sizeable chunk of code, then Juliet is the tool for you.