Javaテクノロジーに関する話題として、IDGのITアーキテクトサミット 2007 Summerのセッションの中で出してしまったのですが、ArtixはVersion5をリリースして、Javaインタフェースの作り方が大幅に変わりました。
Artixは、C++をベースに製造されており、JavaのAPIからC++で作られたコアの機能を利用することになります。以前であればJava自体が重くて遅いので、このJavaとC++の間のオーバヘッドも気にならなかったのですが、Javaのコンパイラの技術やCPU自体が向上することでJavaの性能が上がってきて、オーバヘッドが目立つようになってきました。
以下の図にあるようにArtix5_jaxwsは、Artix5であらたにCXFをベースにして、JAX_WS(JSR224)でのアノテーションを利用したAPIに替わったのですが、その変化のひとつの要因が性能です。下図のArix5_JNIは従来のJava APIであるJAX_RPC(JSR101)をサポートし、HTTPやSOAPなどのエンジンはC++側の機能を呼び出すためにJNI(Java Native Interface)を経由して実現しているものです。
ご覧のように性能上の違いは明らかであり、PureなJavaで実現するようにJAX_WSへ移行したものです。もちろん、従来のJAX_RPCのAPIも互換性を提供するために残りますが、コアの製造が、JavaとC++に分かれていくことは明らかになったことになります。
これは”テクノロジーの格差”を意味しています。以前のエントリにあるようにJavaのテクノロジーは決してSOAインフラを構築するにも適した技術ではないにも関わらずアプリケーション開発のプラットフォームとして広まってきたというだけでマジョリティとなり、そこにメガベンダーの思惑が重なってJava技術へ偏重していると思います。
JVMの上と外とでは世界がまったく異なってしまいます。JVMの上ではネイティブなC++のWebサービスさえも提供できないのです。このテクノロジーの格差をなんとか平準化する必要があります。Artix5は従来のC++で構築したアーキテクチャを踏襲してJavaによるコンテナを同時に実現することで利用者に対しては正しいインフラの姿を提供することができる製品です。

