Javaから見た.NET
連載インデックスへ
第2回

設計者/SEが覚えておきたいJavaと.NETの違い


株式会社クロノス
高山 智史
2010/7/6
システム開発がますます複雑化していく中、エンジニアには、テクノロジを理解して、さまざまな場面に適した選択が求められます。本連載では、Java.NETの基本的な仕組みから最新の傾向や技術などについて、数回に分けて紹介します
編集部注:読者の貴重なご指摘により一部コンテンツを削除・改編させていただきました。内容に不備があったことをお詫び申し上げます(2010年7月8日)

プログラマが知っておきたい両者の違いは前回で

今回の主な内容

プログラマが知っておきたい両者の違いは前回で
Javaのクライアントサイド技術(GUI開発)
.NETのクライアントサイド技術(GUI開発)
クライアントアプリをユーザーに配布する技術
さらに、リッチクライアント/RIAを比較
Javaのサーバサイド技術(Webアプリ開発)
.NETのWebアプリ開発
Javaのデータアクセス技術
.NETのデータアクセス技術
今後もユーザーエクスペリエンスを高める技術が充実

 第1回「プログラマが知っておきたいJavaと.NETの違い」では、Javaと.NETそれぞれのプラットフォームの特徴や構成、使用されているプログラミング言語開発環境について解説し、PC上でアプリケーション・ソフトウェアなどのプログラムがどのような仕組みで実行されているかを紹介しました。

 今回はクライアント技術、その中でもクライアントアプリケーションを作るうえで重要な、UIユーザーインターフェイスを作成するための開発方法や、Webアプリケーションを開発するための主要な技術を、フレームワークデータアクセス技術なども交えながらご紹介します。

Javaのクライアントサイド技術(GUI開発)

 Javaの技術でGUIアプリケーションを実行するための実行環境、モジュールとしてJavaアプレットがあります。ネットワークを通して主にWebブラウザにダウンロードされ、実行されるJavaアプリケーションの1つです。

Javaアプレット

 Javaアプレットは、それまでのテキストベースのWebではなく、Webブラウザ上にイメージや図形を描画できる技術として登場しました。Javaアプレットの利点としてJava仮想マシンJVMのサンドボックス内で実行されるため、インターネットで配布が可能です。しかしセキュリティが厳しい半面、ローカルファイルにアクセスができないなど制限が設けられていました。

 さらに、Webが普及し出したころでもあり、当時のコンピュータは回線速度が遅く、リソースも十分ではありませんでした。そのため、Java仮想マシンの動作が遅く、Javaアプレットが組み込まれているWebサイトは普及しませんでした。

 現在は、Java仮想マシンの性能改善や回線速度の向上により、Javaアプレットが登場した当初よりは問題が解消されています。利用シェアは大きくないですが、携帯機器などのGUI環境やCGのアニメーション、ゲームなどで現在も利用されています。

図3 WebアプリケーションにおけるMVCパターン
図1 Javaアプレットの例Trimisアプレット版(※クリックすると、実際にJavaアプレットが動き出します)(記事「あなたの携帯電話でJavaアプリは動きますか?」より)

Java Plug-in

 またJavaアプレットは、実行環境がWebブラウザに組み込まれているJavaのバージョンに左右されていました。そこで、この問題を解消するために「Java Plug-in」というJavaの実行環境をWebブラウザのプラグイン形式にしたものが生まれました。プラグイン形式で提供することで、適切でかつ最新のバージョンのJava仮想マシンを利用できます。

次世代Java Plug-in

 またJava SE 6u10では、「次世代Java Plug-in」という、いままでとまったく違う機構のプラグインが搭載されました。Internet Explorer 6以降、Firefox 3以降を使用している場合は、このプラグインを使用できます。このプラグインには下記のような特徴があります。

  • 信頼性の向上
    Webブラウザとは別プロセスで起動されるJava仮想マシンのインスタンス内で1つまたは複数のプロセス内でアプレットが実行される。Webブラウザとは隔離されているため、アプレット側でエラーが発生してもプラグインが適切に処理する。Webブラウザは影響を受けない
  • JavaアプレットごとにJREの指定が可能
    JavaアプレットのインスタンスごとにJREのバージョンを指定できる。さらにJREの特定バージョン、特定ファミリのどちらもサポートされている
  • Javaアプレットごとにコマンド行引数の指定が可能
    Java仮想マシンのコマンド行引数をアプレットごとに指定できる。これにより、ヒープサイズを細かくコントロールできる

 ほかにもいくつか新機能がありますが、このリリースによりJavaアプレットの機能性、信頼性が非常に向上しました。

組み込みJNLPファイルのサポート

 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」

 Javaアプレットを利用してリッチクライアントRIAを実現する「Apache Pivot」というフレームワークもあります。Apache Pivotは、Apache Software Foundationにより開発されているJavaのフレームワークです。同じRIAの技術でも、後述するJavaFXは独自のスクリプト言語で開発しますが、Apache PivotはすべてをJavaとXMLで作成します。

 JavaでGUIをサポートする技術は、ほかに以下のようなものがあります。

AWT(Abstract Window Toolkit)

 GUIアプリケーションを作成するためのツールキットです。AWTはシンプルで軽いGUIアプリケーションを作成できますが、OSのグラフィックス機能を基に動作しているので、プラットフォームに依存しています。

Swing

 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(Standard Widget Toolkit)

 SWTは、Eclipse Foundationが提供しているGUIアプリケーションを作成するためのツールキットです。もともと米アイ・ビー・エムがEclipse用のGUIコンポーネントとして開発しました。SWTの大きな特徴として各OSのGUIのライブラリをJNI(Java Native Interface)経由で利用していることが挙げられます。

 これにより、高速な動作を実現しています。JNIを利用しているのでプラットフォームごとにSWTのライブラリが必要になります。そのため、完全なマルチプラットフォームではありません。ただし、SWTを使用していてもJavaで記述されるコードはOSに依存しません。

 
1-2-3-4

 Index
第2回 設計者/SEが覚えておきたいJavaと.NETの違い
Page1
プログラマが知っておきたい両者の違いは前回で
Javaのクライアントサイド技術(GUI開発)
  Page2
.NETのクライアントサイド技術(GUI開発)
クライアントアプリをユーザーに配布する技術
さらに、リッチクライアント/RIAを比較
  Page3
Javaのサーバサイド技術(Webアプリ開発)
.NETのWebアプリ開発
  Page4
Javaのデータアクセス技術
.NETのデータアクセス技術
今後もユーザーエクスペリエンスを高める技術が充実



Java Solution全記事一覧

TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH