Burton GroupのResearch DirectorのAnne Thomas Manes氏のブログにApacheのSOAPスタックであるAxisとAxis2の簡単な比較がありました。Axis2はApacheの次世代のSOAPスタックと言われており、2007年の実用のリリースを目標として、SOAPとRESTの機能を提供します。Axis2のバージョン1.0は2006年4月にリリースされています。
Axis(2ではない)は、現在はメンテナンス状態のようですが、製品に取り込まれたりして、多く使われてきました。確かに性能の面では、多少、難点はあると感じましたが、J2EE系に対するオープンソースのSOAPスタックとしては健闘したのではないでしょうか。ブログの中では次のような簡単な歴史が示されています。
世代1:Apache SOAP
IBMのSOAP4Jをベースとして、2000年から2002年まで提供されていたDOM(Document Object Model)ベースのSOAPメッセージ処理をサポートしていました。
世代2:Apache Axis
完全に再設計されたSOAPスタックであり、WSDL、JAX-RPC、SAAJ(SOAP with Attachments API for Java)をサポートします。2002年に1.0がリリースされて、2006年4月に1.4がリリースされています。メッセージ処理はSAX(simple API for XML)ベースです。
世代3:Apache Axis2
SOAP1.2、WSDL2.0やWS-*の標準のいくつかをApacheの別のプロジェクトから取り込んでサポートします。独自のAxiom(Axis Object Model)によってXMLを管理し、SAXやDOMに変わるStAX(Streaming APIs for XML:JSR173)によるXMLの解析をサポートします。
Axis2は、まだ、実用の段階ではないので、Axisに対して、先のブログのコメントにあるように、codehausのXFireがSOAPスタックの対抗としてあり、性能の面で高い評価を受けています。しかし、今、現在、XFireはCeltixと合併して、CeltiXfireとなって、Apacheのインキュベートを開始しています。この合併の前のことではありますが、XFireのサイトの中で、Axis、Axis2、CeltixなどのSOAPスタックの比較表が示されています。Axis2はJAX-WSに対応するようなので、この比較表もメンテしなければならないでしょう。
単純なSOAPスタックということではなく、それぞれの方向性によって違いが出てくるのではないかと思います。単純なSOAPスタックでは、早晩、淘汰されてコモディティになるだけですので。
江川
