});J2EEがミッションクリティカルな分野に適用されるようになり、Javaのパフォーマンスチューニングの重要性はさらに高まっています。VMに関連するチューニングの効果は大きいといわれています。VMに関連するチューニング手法を学ぶための前提知識を提供することを目的にしています(編集部)。本記事は2004年に執筆されたものです。キーワードINDEXの「Javaパフォーマンス管理」をご参照ください。VMについて詳しく知る必要があります。VMの基本用語を知っている必要があります。Solution)を参考にしてください。Insiderフォーラム内の関連記事を参考にしてください。VMパフォーマンステクニック」(仮題)の連載が予定されています。VMが存在する環境であればその下のOSやハードウェアが何であろうと、同じ動作をします。VMがその下位にあるOSやハードウェアの違いを吸収し、その上位にあるJavaプログラムと共通のインターフェイスを提供していることで実現されています。VMという仮想ハードウェア上で動作するように見えるわけです。VMJavaコンパイラがバイトコードを生成Java言語で書かれたソースコードファイルをJavaコンパイラ(javac)でコンパイルすると、Javaバイトコードを含むクラスファイル(.class)が生成されます(図2参照)。Javaコンパイラは、サン・マイクロシステムズのJDK付属のもの以外にも、Java開発環境を販売するサードパーティーのソフトウェアベンダなどからも提供されています。JavaソースファイルからJavaクラスファイルを生成JavaコンパイラによるJavaソースコードのコンパイルと、C/C++コンパイラによるC/C++ソースコードのコンパイルの対比を図3に示します。これを見ると、Javaが当初インタプリタ方式といわれたとはいえ、開発言語としてはPerlなどよりはC/C++に近いものであることが分かります。C/C++などの言語で作成したソースコードはOSに依存しますし、C/C++コンパイラは特定のプロセッサ専用のコードを生成します。結果として、C/C++コンパイラで生成した実行ファイルはハードウェア(プロセッサ)とソフトウェア(オペレーティングシステム)の両方に依存することになります。それに対してJavaは、特定のハードウェアやソフトウェアへの依存しないコードを生成します。VMの関係Javaクラスファイルの中にはそのクラスで定義されているメソッド、フィールド変数、定数などの情報が書かれており、メソッド中にはバイトコードが書き込まれています(図2参照)。バイトコードはその名のとおりオペコードが1バイト固定長で、オペランドは可変長です。VM上で実行されるバイトコードは、実プロセッサ上で実行されるマシンコードに対応するものと考えることができます。Machine)と呼ばれるわけです。VMはソフトウェアで実装されるため、さまざまなプラットフォームへの移植が可能であり、その結果、Javaバイトコード(つまりJavaプログラム)をさまざまなハードウェア/ソフトウェアプラットフォームで実行させることができます。VMの実装はサン・マイクロシステムズが提供しています。