システム開発がますます複雑化していく中、エンジニアには、テクノロジを理解して、さまざまな場面に適した選択が求められます。本連載では、Javaと.NETの基本的な仕組みから最新の傾向や技術などについて、数回に分けて紹介します
編集部注:読者の貴重なご指摘により一部コンテンツを削除・改編させていただきました。内容に不備があったことをお詫び申し上げます(2010年7月8日)
第1回「プログラマが知っておきたいJavaと.NETの違い」では、Javaと.NETそれぞれのプラットフォームの特徴や構成、使用されているプログラミング言語や開発環境について解説し、PC上でアプリケーション・ソフトウェアなどのプログラムがどのような仕組みで実行されているかを紹介しました。
今回はクライアント技術、その中でもクライアントアプリケーションを作るうえで重要な、UI(ユーザーインターフェイスを作成するための開発方法や、Webアプリケーションを開発するための主要な技術を、フレームワークやデータアクセス技術なども交えながらご紹介します。
Javaの技術でGUIアプリケーションを実行するための実行環境、モジュールとしてJavaアプレットがあります。ネットワークを通して主にWebブラウザにダウンロードされ、実行されるJavaアプリケーションの1つです。
Javaアプレットは、それまでのテキストベースのWebではなく、Webブラウザ上にイメージや図形を描画できる技術として登場しました。Javaアプレットの利点としてJava仮想マシン(JVM)のサンドボックス内で実行されるため、インターネットで配布が可能です。しかしセキュリティが厳しい半面、ローカルファイルにアクセスができないなど制限が設けられていました。
さらに、Webが普及し出したころでもあり、当時のコンピュータは回線速度が遅く、リソースも十分ではありませんでした。そのため、Java仮想マシンの動作が遅く、Javaアプレットが組み込まれているWebサイトは普及しませんでした。
現在は、Java仮想マシンの性能改善や回線速度の向上により、Javaアプレットが登場した当初よりは問題が解消されています。利用シェアは大きくないですが、携帯機器などのGUI環境やCGのアニメーション、ゲームなどで現在も利用されています。
またJavaアプレットは、実行環境がWebブラウザに組み込まれているJavaのバージョンに左右されていました。そこで、この問題を解消するために「Java Plug-in」というJavaの実行環境をWebブラウザのプラグイン形式にしたものが生まれました。プラグイン形式で提供することで、適切でかつ最新のバージョンのJava仮想マシンを利用できます。
またJava SE 6u10では、「次世代Java Plug-in」という、いままでとまったく違う機構のプラグインが搭載されました。Internet Explorer 6以降、Firefox 3以降を使用している場合は、このプラグインを使用できます。このプラグインには下記のような特徴があります。
ほかにもいくつか新機能がありますが、このリリースによりJavaアプレットの機能性、信頼性が非常に向上しました。
JNLP(Java Network Launch Protocol)とは、アプリケーションの起動方法をXML形式で記述したファイルのことです。後述する「Java Web Start」は、このファイルを読み込んで、そこに記述されている順序に従いJavaアプリケーションを起動します。
以前のJava Plug-inは、Java Web StartだけがJavaアプリケーションを起動するためにJNLPファイルを使用していました。
新しいプラグインではJNLPがサポートされ、JNLPファイルから直接アプレットを起動できます。それにより、もともとはJava Web Startアプリケーション用の機能であった、後述する「JavaFX」の実行時ライブラリや、OpenGLを使用した3Dグラフィックスのサポートなどの拡張機能をアプレットで再利用できるようになりました。
Javaアプレットを利用してリッチクライアント/RIAを実現する「Apache Pivot」というフレームワークもあります。Apache Pivotは、Apache Software Foundationにより開発されているJavaのフレームワークです。同じRIAの技術でも、後述するJavaFXは独自のスクリプト言語で開発しますが、Apache PivotはすべてをJavaとXMLで作成します。
JavaでGUIをサポートする技術は、ほかに以下のようなものがあります。
GUIアプリケーションを作成するためのツールキットです。AWTはシンプルで軽いGUIアプリケーションを作成できますが、OSのグラフィックス機能を基に動作しているので、プラットフォームに依存しています。
Swingは、AWTの上部に作成されたクラスライブラリで、AWTを拡張した機能がたくさんあります。現在は「JFC(Java Foundation Classes)」と呼ばれるGUIアプリケーションをJavaで開発するためのフレームワークに含まれています。Swingは、どのようなOSでもルック・アンド・フィールを自動的に持つことができます。AWTはOSのウィンドウシステムをベースにしたデザインになるのに対し、SwingはJavaプログラム上でGUIを描画できるため、柔軟な開発が可能です。
そして、Swingを使用したGUIアプリケーションをより簡単に作成するためのフレームワークとして「Swing Application Framework」というものが開発されています。このフレームワークはアプリケーション開発のひな型を提供してくれます。JCP(Java Community Process)においてJSR-296として仕様が策定されています。
SWTは、Eclipse Foundationが提供しているGUIアプリケーションを作成するためのツールキットです。もともと米アイ・ビー・エムがEclipse用のGUIコンポーネントとして開発しました。SWTの大きな特徴として各OSのGUIのライブラリをJNI(Java Native Interface)経由で利用していることが挙げられます。
これにより、高速な動作を実現しています。JNIを利用しているのでプラットフォームごとにSWTのライブラリが必要になります。そのため、完全なマルチプラットフォームではありません。ただし、SWTを使用していてもJavaで記述されるコードはOSに依存しません。
Copyright © ITmedia, Inc. All Rights Reserved.