This post originated from an RSS feed registered with Agile Buzz
by Joe Walnes.
Original Post: QDox is back - 1.6 released
Feed Title: Joe's New Jelly
Feed URL: http://joe.truemesh.com/blog/index.rdf
Feed Description: The musings of a ThoughtWorker obsessed with Agile, XP, maintainability, Java, .NET, Ruby and OpenSource. Mmm'kay?
QDox is a fast JavaDoc/Java parser built in 2002. It was originally intended as a stop gap until Java supported annotations by allowing tools to easily get access to JavaDoc attributes. Essentially it provided nothing more than a stripped down version of the JavaDoc Doclet tool, with performance suitable for using in continual build cycles (what would take JavaDoc over ten minutes to process would typically take QDox less than ten seconds). It served its purpose well.
The death of QDox
Then came along Java 5 and I stopped actively working on QDox. The first reason was that with the new annotations support, QDox wasn't necessary. The other reason was that it would take a lot of effort to update the parser to support Java 5 syntax (not just for annotations, but generics, enums, etc).
And so QDox went quiet. The dev team lost interest and the releases stopped.
QDox is reborn
It turned out, I was wrong. Even with Java supporting annotations, QDox in a Java 5 world has some benefits:
Some Java 5 projects still want to use JavaDoc attributes (as well as annotations). Maybe for legacy reasons.
QDox acts on source code, rather than byte code. This can be useful in chicken and egg situations where you need to generate source from existing source, but you can't compile until you've generated the code.
QDox exposes information that isn't exposed by reflection, such as names of parameters or JavaDoc comments, which are useful for building tools to help visualize code.
So, by popular demand, I'm resurrecting the project. Yay.
1.6 released
This new release is a stop-gap release. Highlights include:
Switched to Apache 2.0 license.
Parser can now deal with Java 5 source code (annotations, generics, enums, var args, etc).
Numerous bugfixes.
This should be enough for existing projects to carry on using it with Java 5 code.
The next release will focus on making Java 5 specific features available in the API. Stay tuned.