Metro 1.0 release
Metro, the web service toolkit, is finally hitting the FCS status today. "FCS" is a Sun jargon for "first customer ship", which I guess is orinally defined for our hardwares. In software, it just means that it's a very thoroughly tested, fully supported, and good build, suitable even for the most conservative developers.
My blogs tend to become a diff, and therefore I think this is a good opportunity to recap what's in Metro 1.0, for those folks who aren't following the development closely:
- Architectured ground up for great performance and pluggability. The part that takes most of the processing time in a web service stack is the data format conversion — between a stream of bytes in network to XML infoset to some kind of XML infoset representation (SAAJ, StAX, JAXB, to name a few.) Metro builds internal abstractions in such a way that such conversion is kept to bare minimal. In most cases you go from network to SAX parser to JAXB, and on the way back JAXB directly to socket.
(This was first introduced in JAX-WS RI 2.1.1)
- Various transport implementations (JMS, SMTP, in-VM, and SOAP/TCP.) While we are not trying to replace an ESB stack, some of those protocols are quite handy in writing unit tests that involve web services (in-VM), and for high-performance inside-firewall communication scenario (SOAP/TCP)
- Various encoding implementations (FastInfoset and JSON) FastInfoset works really nicely with SOAP/TCP stack. Where the server and client supports them, Metro can transparently switch to the FI mode and uses binary infoset (and even multiplexed on pooled TCP connections to avoid HTTP overhead), thereby achieving the performance that rivals IIOP without you doing anything.
- Spring support for better configuration, bean-wiring, AOP, and etc. This is convenient when you already use Spring as it reduces the compleixty curve for you.
- Supports a long list of WS-* spec, when you need them. This includes advanced security features (from simple ones like message-level security to more complicated federated authentication involving STS), reliability features (for guaranteeing in-order delivery where intermediaries are involved), and distributed transaction features (so that multiple Java and WCF servers can participate in a distributed transaction.)
- Windows Communication Foundation interoperability, rigorously tested to improve your developer experience.
The pieces in Metro 1.0 includes WSIT 1.0, JAX-WS RI 2.1.2, and JAXB RI 2.1.5. Respective bits are available in the maven repository, as usual. See Harold's blog for more about some of our big users, and Vivek's blog for more technical details about what's new.