I’ve been pretty frustrated with Sun’s JAXB and JBoss’s JBossXB implementations. Here’s why:
* JAXB is not very extendable. For example, I’d love to be able to define custom annotations that trigger callback APIs so that I can read/write custom properties from an XML document. For example, ever try to do Map support? I’ve also wanted to convert URLs to/from Link objects in resteasy with hooks into RESTEasy runtime for automatic URL writing. I just couldn’t find a way to do it within resteasy.
* JAXB (both Sun’s and JBoss’s) is very slow to initialize. Yeah, they parse very fast, but initialization speed is very slow because it has to do a lot of reflection on the classes that make up the JAXBContext and build a lot of data structures to do quick parsing. You might be saying, “Big Deal!”. But what I’ve found with JAXB and JBoss’s impl is that for the meta-models we’re trying to parse in JBoss AS, it can take as much as 1 second to initialize all the models. That’s 1 second more added to boot time. 1 second to make embedded/unit testing slower.
So, this is why I started the fast-jaxb project under the RESTEasy SVN. The way it works is that you provide it a set of classes and it generates Java code that uses SAX to parse XML. The problem is, I haven’t had the time finish it, which is why I’m blogging to ask if anybody is interested in taking it over (or suggesting a good alternative for solving the goals/problems mentioned above). Fast-JAXB has basically no initialization overhead compared to Sun’s JAXB implimentation. I haven’t worked on the extension points though, nor do I support all the JAXB annotations. I have also only worked on parsing XML, not generating XML. Anybody interested in taking it over and driving it? Give me a ping here on this blog…