Saturday, June 10, 2006

 

Comparing the outputs of JAXB version 1.0 and 2.0.

JAXB is the tool that one can use to generate classes that bind to your XML schema. Since version 2.0, you can also use it to generate a schema from your classes. For various reasons I'd been happening to compare what you got from running the xjc (schema to java) tool over our event XML schema between versions of 1.0 and 2.0 of JAXB. This is what you get with JAXB 1.0 ...

JAXB 1.0


- " - /s2j/DomainType.java
- " - /s2j/Event.java
- " - /s2j/EventList.java
- " - /s2j/EventListType.java
- " - /s2j/Message.java
- " - /s2j/ObjectFactory.java
- " - /s2j/OperationType.java
- " - /s2j/UserID.java
- " - /s2j/UserIdType.java
- " - /s2j/bgm.ser
- " - /s2j/jaxb.properties
- " - /s2j/impl/EventImpl.java
- " - /s2j/impl/EventListImpl.java
- " - /s2j/impl/EventListTypeImpl.java
- " - /s2j/impl/JAXBVersion.java
- " - /s2j/impl/MessageImpl.java
- " - /s2j/impl/UserIDImpl.java
- " - /s2j/impl/runtime/IdentityHashSet.java
- " - /s2j/impl/runtime/PrefixCallback.java
- " - /s2j/impl/runtime/NamespaceContext2.java
- " - /s2j/impl/runtime/Util.java
- " - /s2j/impl/runtime/XMLSerializable.java
- " - /s2j/impl/runtime/UnmarshallerImpl.java
- " - /s2j/impl/runtime/UnmarshallingEventHandlerAdaptor.java
- " - /s2j/impl/runtime/XMLSerializer.java
- " - /s2j/impl/runtime/UnmarshallableObject.java
- " - /s2j/impl/runtime/AbstractUnmarshallingEventHandlerImpl.java
- " - /s2j/impl/runtime/MSVValidator.java
- " - /s2j/impl/runtime/UnmarshallingContext.java
- " - /s2j/impl/runtime/ValidatorImpl.java
- " - /s2j/impl/runtime/MarshallerImpl.java
- " - /s2j/impl/runtime/GrammarInfoImpl.java
- " - /s2j/impl/runtime/SAXUnmarshallerHandlerImpl.java
- " - /s2j/impl/runtime/ValidatableObject.java
- " - /s2j/impl/runtime/SAXMarshaller.java
- " - /s2j/impl/runtime/NamespaceContextImpl.java
- " - /s2j/impl/runtime/ContentHandlerAdaptor.java
- " - /s2j/impl/runtime/UnmarshallingEventHandler.java
- " - /s2j/impl/runtime/ErrorHandlerAdaptor.java
- " - /s2j/impl/runtime/InterningUnmarshallerHandler.java
- " - /s2j/impl/runtime/GrammarInfoFacade.java
- " - /s2j/impl/runtime/ValidationContext.java
- " - /s2j/impl/runtime/ValidatingUnmarshaller.java
- " - /s2j/impl/runtime/DefaultJAXBContextImpl.java
- " - /s2j/impl/runtime/SAXUnmarshallerHandler.java
- " - /s2j/impl/runtime/Discarder.java
- " - /s2j/impl/runtime/GrammarInfo.java

... and this is what you get with JAXB 2.0 ...

JAXB 2.0


- " - /s2j/DomainType.java
- " - /s2j/Event.java
- " - /s2j/EventList.java
- " - /s2j/Message.java
- " - /s2j/ObjectFactory.java
- " - /s2j/OperationType.java
- " - /s2j/UserID.java
- " - /s2j/UserIdType.java

... can you spot the difference!!! Now, I'm assuming that all the stuff that was in version 1.0 hasn't disapeared, it's just been packaged up a bit more nicely! JAXB 2.0 makes good use of annotations and thus has a dependancy on JDK 1.5. I realize that one should just treat the generated outputs as a "black box", but if you do look at the outputs (like I did!) some of the JAXB 1.0 stuff is ghastly to look at (for example, outputting the serialized binary form of an object as a string!). The JAXB 2.0 stuff looks much closer to what you expect, with little added cruft. No prizes for guessing which I prefer!

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?