はじめに
本連載では、Curlを利用したことのないJavaプログラマを対象にCurlを説明します。Javaで作られたサーバーサイドと、クライアントサイドであるCurlとの間で通信を行い、簡単なデータの受け渡しを行うまでの入門的な内容を連載の中で説明します。
また、筆者はCurlの使用歴が短いこともあり、この記事はあらかじめ株式会社カールの方々にレビューして頂きました。この場を借りて改めてお礼申し上げます。ありがとうございます。
Curlについて
まずは、Curlの概要について説明をします。
Curl言語について
ひとことにCurlと言った場合に、アプリケーションを作成するCurl言語と、アプリケーションを実行する実行環境(Curl RTE)があります。Curl言語はリッチクライアントなシステムを構築するためのプログラミング言語です。HTMLのようなテキストフォーマットから3Dグラフィック処理まで、多岐にわたる機能が搭載されています。
また、サーバとの通信には、HTTPプロトコルやTCP/IPプロトコルを使用したソケット通信をサポートし、データ形式としては、XML、CSV、JSONといった多様な通信に対応しています。サーバにつなげる・つながるところをサポートするという印象があります。
波括弧(curly bracket)を多用する記述方法が1つの特徴であり、言語名の由来ともなっています。記事の最後にCurlでの「HelloWorld」を載せていますので、コードについてはそちらを参照してください。
デモ
9月10日、プログラマ向けに、自作のアプリケーションを投稿できるWebサイト、「Curl Apps Gallery」がオープンされました。その中からいくつかのデモアプリを紹介します。
まず、最初に目に付いた、非常にシンプルなUIの「Curlブラウザ」から紹介します。HTMLのレンダリング自体は割と軽快で、JavaScriptだけではなくFlashやJavaアプレットさらにSilverlightも動作していました。Internet Explorerのコンポーネントを使用しているそうです。また、アドレスバー右の「+」「-」ボタンをクリックするとブラウザの透明度を変更することが可能です。
さらに、ルービックキューブを仮想的にシミュレートできる「ルービックキューブ」や、DNAの螺旋構造を3次元で見ることができる「分子構造」などCurlの特徴である3D機能を生かしたアプリケーションもあります。筆者のPCは1400MHzのシングルCPU(メモリは2G)という実行環境としては決して高スペックではありませんが、Curlアプリは軽快な動きをするなと感じました。「ルービックキューブ」アプリの動画を載せましたが、録画ソフトの方が性能負けし、コマ落ちしてしまいました。
Curlの歴史
Curlはリッチクライント技術の中でも古い歴史を持っています。1995年にMIT(マサチューセッツ工科大学)とDARPA(米国防総省高等研究計画局)が開始した共同プロジェクトから生まれました。1998年にMITの12人によってCurl Corporationが設立され、初期のバーションである「Surge1.0」が2001年にリリースされました。執筆時点での最新バージョンは「Curl 6.0.4」(日本語版は6.0.2)です。
2008年4月にはEclipseファウンデーションへの参加とIDEの次期製品をEclipseベースで提供する戦略を発表するなどオープンソースとの結び付きも強めています。
また、日本でのライセンス販売および技術サポート等は株式会社カールが行っています。
Eclipseプラグイン
2008年8月リリースのCurl 6.0.4からEclipseプラグインが同梱されるようになりました。日本語版は「Curl Eclipseプラグイン」の名称で今秋リリース予定ですが、執筆時点では未リリースとなっているので、本連載の次回以降に日本語版の「Curl Eclipseプラグイン」を紹介します。
早速、英語版を使用してみました。Javaエディターほど優秀な補完機能は未だ持っていませんが、Javadocが表示されるのと同じように、関数の使用方法などが表示されます。この辺りはJavaエディターを意識した作りのようで、今後の機能拡張に期待したいところです。
Curlアプリケーションの実行環境
Curl言語で書かれたアプリケーションを実行するためには、Curl RTE(Curl Run Time Environment)をインストールする必要があります。Curl RTEは無償で提供されており、株式会社カールのサイトからダウンロードできます。
Curlアプリケーションが実行される仕組み
Curlは、主にWebブラウザから実行されます(デスクトップアプリケーションとして実行することも可能ですが、ここでは、ブラウザからの利用を想定して説明を行います)。
まず、クライアントのブラウザにURLを入力してサーバに配置されているCurlプログラムを取得します。このファイルはclassファイルのような実行ファイルではなく、ソースコードの状態でダウンロードされます。
ダウンロードされたプログラムはクライアントサイドのCurl RTEによってコンパイルされたあとに、実行されます。