Posted by enicholas
on May 12, 2006 at 6:09 AM PDT
The 1.0 release of the JAXX user interface language is right around the corner. If you're interested in an XML language for creating Swing user interfaces, this is your last opportunity to weigh in on JAXX before the 1.0 freeze.
If you're not familiar with JAXX, it is an open-source XML language for creating Swing GUIs that I'm working on. For a more detailed introduction, Introducing JAXX: A New Way to Swing and Style Swing components using CSS are good places to start.
Today's news is the release of JAXX 0.96 , and in particular the fix to circular dependency compilation. Previous versions of JAXX couldn't deal with circular dependencies -- A.jaxx depends on B.java and B.java depends on A.jaxx (perhaps indirectly) -- and fixing this problem was an enormous chunk of work.
The biggest challenge with circular dependencies is that you can't generate
Class objects until the classes are fully compiled, and JAXX couldn't fully compile classes until their dependencies were fully compiled (as it depended on the presence of
Classes). If you have circular references, you also can't compile the dependencies first, because the dependencies themselves depend on the class you're currently trying to compile. That is, of course, what makes it "circular".
Without being able to depend upon the availability of
Class objects, you also can't use
Class-dependent APIs like
java.beans.Introspector or reflection. Because JAXX was (quite naturally) using
Introspector to identify objects' properties and events, the fact that I had to go cold turkey and stop using
Class objects altogether was tough to swallow.
To solve this problem, JAXX 0.96 contains a (mostly complete) mirror of the reflection APIs and
Introspector. These clones can operate on
Class, just like their built-in cousins, but can also operate on uncompiled Java source files and uncompiled JAXX source files. With this newfound flexibility, JAXX can compile against dependencies which have themselves not yet been compiled -- and therefore handle circular reference chains with aplomb.
JAXX is, as far as I'm concerned, ready for prime time. 0.96 is scheduled to be the final beta, and barring unforeseen problems, the golden 1.0 version will be almost identical. So please do me a favor and take a look -- this is your last chance to request changes or report bugs before 1.0 is released.
JAXX 0.96 can be downloaded from http://www.jaxxframework.org/