08-05-2011, 01:59 PM
岡田です。
今回は、Curl ORB for Java というオープンソースライブラリについての紹介やよく聞かれることをズラズラ書いていきます。
まず、Curl ORBは、Curlとサーバサイド間の通信をしてくれるRPCツールで、Curlからサーバサイドのメソッドをコールできます。イメージ的には、CORBAやSOAPに近いです。
類似製品としては、MicrosoftのRIA services やAdobeのBlazeDS などがあります。
特徴としては、独自のバイナリフォーマットを使っているため、一般的なXMLやJSONのようなテキストフォーマットと比べて、データ量が少なく、またフォーマットの解析も高速です。
じゃぁ、何倍速いの?とよく聞かれるのですが、データの中身によって左右されるので断定できませんが、こちらで測ってみた結果、XMLと比較して、速度が10倍程度・データ量は30分の1ぐらいでした。ちなみに、ORBは「データ圧縮技術?」と言われることがありますが、ORBはデータ圧縮はしてくれません。(データに同じものが多く含まれていたら、コンパクトにできる仕組みは持っていますが・・・・・。)
もしデータ圧縮したい場合には、HTTP圧縮を利用することで、さらに格段に圧縮されますので、回線が細い場合は利用する価値があるかもしれません。(ORBでは簡単に設定ができます。)但し、回線が十分の場合は、圧縮・解凍のオーバーヘッド分遅くなる可能性があるかもしれません。
このCurlとサーバ間でやり取りするデータですが、多くのCurlの型をサポートしております。例えば、プリミティブ型、String、配列、リスト、ハッシュマップ、バイナリ、RecordSet、日付など。(詳しくはこちら 。) また、サーバサイドで例外(Exception)が発生した場合、クライアント側に同様の例外もしくは指定した例外を発生させることができます。
開発時に、Javaのインターフェースを作れば、Curlのスタブを生成できますので、そのCurlのスタブクラスのメソッドを呼び出すことで、自動的にJavaのメソッドをコールすることができます。(通信するためのコードは一切不要です。) この際にSpring Framework やSeasar2 との親和性のよいスタブを生成することができます。
<将来の拡張機能>
現在ORBのバージョンは0.7で、近日中に0.8にアップデートします。これに含まれる機能は以下のものです。
-次期バージョンCurl 8.0対応
-value classのサポート
-Decimalクラスのサポート(Curl 8.0 以上)
-クライアント・キャッシュ機能 など
今後やっていきたいこと、もしくはやっている途中のことは以下の通りです。
-EclipseのJDTを使って、Generatorを使わずにCurlスタブ自動生成。(変更時は自動同期。))
-バッチ・スクリプトで一気にCurlスタブ生成。
-サーバとクライアントのログを、比較しながら時系列に見れるコンソール。
-Curlのパラメターライズド・タイプの対応。
などなど
まだご利用したことのない方は一度お試しを!また、要望はなんでもお待ちします。
・Curl Developer Centerの利用手順
・CodeZineの記事
今回は、Curl ORB for Java というオープンソースライブラリについての紹介やよく聞かれることをズラズラ書いていきます。
まず、Curl ORBは、Curlとサーバサイド間の通信をしてくれるRPCツールで、Curlからサーバサイドのメソッドをコールできます。イメージ的には、CORBAやSOAPに近いです。
類似製品としては、MicrosoftのRIA services やAdobeのBlazeDS などがあります。
特徴としては、独自のバイナリフォーマットを使っているため、一般的なXMLやJSONのようなテキストフォーマットと比べて、データ量が少なく、またフォーマットの解析も高速です。
じゃぁ、何倍速いの?とよく聞かれるのですが、データの中身によって左右されるので断定できませんが、こちらで測ってみた結果、XMLと比較して、速度が10倍程度・データ量は30分の1ぐらいでした。ちなみに、ORBは「データ圧縮技術?」と言われることがありますが、ORBはデータ圧縮はしてくれません。(データに同じものが多く含まれていたら、コンパクトにできる仕組みは持っていますが・・・・・。)
もしデータ圧縮したい場合には、HTTP圧縮を利用することで、さらに格段に圧縮されますので、回線が細い場合は利用する価値があるかもしれません。(ORBでは簡単に設定ができます。)但し、回線が十分の場合は、圧縮・解凍のオーバーヘッド分遅くなる可能性があるかもしれません。
このCurlとサーバ間でやり取りするデータですが、多くのCurlの型をサポートしております。例えば、プリミティブ型、String、配列、リスト、ハッシュマップ、バイナリ、RecordSet、日付など。(詳しくはこちら 。) また、サーバサイドで例外(Exception)が発生した場合、クライアント側に同様の例外もしくは指定した例外を発生させることができます。
開発時に、Javaのインターフェースを作れば、Curlのスタブを生成できますので、そのCurlのスタブクラスのメソッドを呼び出すことで、自動的にJavaのメソッドをコールすることができます。(通信するためのコードは一切不要です。) この際にSpring Framework やSeasar2 との親和性のよいスタブを生成することができます。
<将来の拡張機能>
現在ORBのバージョンは0.7で、近日中に0.8にアップデートします。これに含まれる機能は以下のものです。
-次期バージョンCurl 8.0対応
-value classのサポート
-Decimalクラスのサポート(Curl 8.0 以上)
-クライアント・キャッシュ機能 など
今後やっていきたいこと、もしくはやっている途中のことは以下の通りです。
-EclipseのJDTを使って、Generatorを使わずにCurlスタブ自動生成。(変更時は自動同期。))
-バッチ・スクリプトで一気にCurlスタブ生成。
-サーバとクライアントのログを、比較しながら時系列に見れるコンソール。
-Curlのパラメターライズド・タイプの対応。
などなど
まだご利用したことのない方は一度お試しを!また、要望はなんでもお待ちします。
・Curl Developer Centerの利用手順
・CodeZineの記事