Search This Blog

Sunday, October 14, 2007

Open Source WS Stacks for Java - Design Goals and Philosophy

In addition to the options offered by commercial vendors, there are
a number of open source Java frameworks one can choose from to
implement Web services. Among the most popular open source stacks for
implementing a SOAP/WS-* based solution in the Java space are Apache
Axis2, Apache CXF, Spring Web Services, JBossWS and Sun's Metro.
Stefan Tilkov posed a number of questions to the lead developers of
these stacks about their design goals, their approach towards Java
and Web services standards, data binding, accessing XML,
interoperability, REST support, and framework maturity. As was to be
expected, the results revealed many similarities and some noteworthy
differences. The developers interviewed were Paul Fremantle (Axis2),
Dan Diephouse (CXF), Arjen Poutsma (Spring Web Services), Thomas Diesler
(JBossWS) and Kohsuke Kawaguchi (Metro). "There are some design goals
that are shared among of all of the stacks, such as extensibility,
modularity, and performance. Axis2 is designed around an XML object
model called AXIOM, a mixture of streaming and tree-based messaging,
and provides pluggable data binding support; CXF supports pluggable
transports, data bindings, and can even support alternative formats
such as JSON. Spring-WS supports lots of different ways to handle XML,
too -- from XPath-based access to a number of XML APIs such as DOM,
SAX and StAX to data binding approaches such as JAXB, Castor and
XStream. Metro also features pluggable transports and encodings.
Assuming all of these approaches have been put into practice and
actually work as expected, it's hard to see any major difference in
this regard. Paul Fremantle noted that Axis2's architecture was
designed to be implementable in both C and Java. He also highlighted
Axis2's module concept, which allows related collections of handlers
to be deployed, together with libraries and data files, as a single
unit. Dan Diephouse pointed to CXF's embeddability as one of its key
features; another aspect he noted was the focus on ease-of-use for
the developer. Arjen Poutsma put strong emphasis on Spring-WS's
support for the 'contract-first' style of WS development. Thomas
Diesler pointed out that JBossWS can support both its own native
stack as well as integrate with others, including CXF and Metro.
Interoperability is listed by Sun's Kohsuke Kawaguchi as a design
goal for Metro... More Information

No comments: