システム開発がますます複雑化していく中、エンジニアには、テクノロジを理解して、さまざまな場面に適した選択が求められます。本連載では、Javaと.NETの基本的な仕組みから最新の傾向や技術などについて、数回に分けて紹介します
今日、アプリケーション開発・実行のプラットフォームは、大きく2つのテクノロジに収束しているといえるでしょう。
1つは、エンタープライズ・アプリケーション開発の定番ともいえる「Java」です。
実行環境、開発環境の無償提供、OSを自由に選べること、フレームワークや開発環境が充実していることが人気の理由です。大規模アプリケーションの採用実績も多く、ほかのプラットフォームをリードしてきました。
もう1つは、マイクロソフトが発表した「Microsoft.NET」構想に基づいた「.NET」です。
プラットフォームが主にWindowsに制限されますが、各技術や開発環境がオールインワン・パッケージとして提供されており、いくつもある競合技術を自ら評価して、最適なものを選ぶといった手間を省略できます。開発環境との親和性も高いので、高い生産性を期待できるものとしてシェアを広げています。
システム開発がますます複雑化していく中、エンジニア/プログラマには、テクノロジを理解して、さまざまな場面に適した選択をすることが求められます。
本連載では、「Javaから見た.NET」というテーマで、各の基本的な仕組みから最新の傾向や技術などについて数回に分けて紹介します。初回は、Javaと.NETの実行環境、開発言語、開発環境についてです。
JavaプラットフォームはJava言語や実行環境や開発環境、アプリケーションなどを総称して呼ばれています。
Javaのプログラムは、OSやハードウェアに依存しない「Javaバイトコードバイトコード」と呼ばれる中間形式に一度変換します。実行時に「Java仮想マシン(JVM)」と呼ばれるソフトウェアによって、各プラットフォームで実行可能な形式に変換する方法をとっています。そのため、Javaプログラムの実行に必要な仮想マシンや、開発に必要な標準ライブラリセットおよびコンパイラを個々の環境に合わせて作りさえすれば、Javaプログラムはすべての環境で同一に動きます。
仮想マシンが入ることによる実行速度の低下を軽減するため、≪≫Javaプログラムの実行直前(Just in Time)にJavaバイトコードを各プラットフォームが実行できる形式に変換して実行するJITコンパイラ方式が採用されています。
Java言語は、デスクトップはもちろん、サーバ、携帯端末など、さまざまな用途で使われているためAPIの数も膨大です。そのため、Java言語のAPIは次の3つのエディションを規定しています。
編集部注:都合により一部コンテンツを削除・改編させていただきました。内容に不備があったことをお詫び申し上げます(2010年6月11日)
最近では、Javaベースで作られた携帯端末向けのプラットフォームとして、グーグルによって開発された「Android」もあります。
ただし、使用されるJavaはグーグルが独自開発したJava仮想マシン上で動作するため、Java MEとの互換性は保証されていません。
またPCやモバイルの分野でリッチクライアント/RIAを実現するプラットフォームとしてJavaFXが登場しました。詳細は、次回で取り上げます。
Javaでは、スレッドを言語仕様で規定しており、マルチスレッドによる複数の処理を同時に実行できます。
Javaプログラムでは、メモリアドレスに対して直接アクセスできません。それは、メモリの確保・解放などの管理が、Java仮想マシンに統合されたGC(ガベージ・コレクション)の機能によって行われるからです。これにより、プログラマがメモリ(主記憶装置)を管理する負担を軽減しています。
近年のJavaでは、「世代別ガベージコレクション」という、より効率的な技術を導入しています。
Javaでは、分散オブジェクト環境を実現するための手法である「Java RMI」という技術を標準で使用できます。ほかにはOMGが定めた分散オブジェクト技術仕様であるCORBAを使用すると、Java以外のさまざまなプラットフォーム間で分散システムを構築できます。
さらに、「RMI-IIOP」という技術を使用すると、RMIコンポーネントをCORBA環境で動作できます。
言語仕様として、以下のセキュリティモデルが規定されています。
Javaでは、数多くのクラスやメソッドなどが含まれているクラスライブラリが定義されています。JavaでいうAPIはクラスライブラリのことです。Javaのクラスライブラリは「パッケージ」と呼ばれる単位で機能ごとに分類されています。パッケージは相互に関連するクラスをフォルダごとにまとめて管理する機能です。実際にはパッケージ名をフォルダの階層構造と合わせることで実現します。
以下がJavaで提供されている主なパッケージです。
表1 Javaで提供されている主なパッケージ | ||||||||||||||||||||||
|
最新のJava SE 6では、スクリプト言語が公式にサポートされました。これにより動的言語の導入が容易になりました。さらに、このバージョンで正式にWebサービスもサポートしています。
またサードパーティがJavaプラットフォームを対象にした多くのコンパイラやインタプリタを作っています。Groovy、JRuby、Jython、Scalaなどが、それに当たります。Java言語にアスペクト指向技術のための拡張を施したAspectJなどもあります。
Copyright © ITmedia, Inc. All Rights Reserved.