Sun Java Solaris Communities My SDN Account Join SDN
 
Java 2 Runtime Environment Notes

 

Java 2 Runtime Environment
開発者向けノート

英語版

目次

はじめに
Java 2 Runtime Environment の再配布
アプリケーションを JAR ファイルにパッケージ化する
例: JAR 形式にパッケージ化したアプリケーションの作成
このページで説明する一般的な情報に加えて、特定のプラットフォームを対象にしたノートが次のファイルに記述されています。
Microsoft Windows プラットフォームでの Java 2 Runtime Environment
Solaris プラットフォームでの Java 2 Runtime Environment

はじめに

Java 2 Runtime Environment は、Java プログラミング言語で書かれたアプリケーションを実行するために必要な、最小限の標準 Java コンピューティング環境です。これは、Java Virtual Machine、Java コアクラス、および補助ファイルで構成されます。Java 2 Runtime Environment には、開発ツール (appletviewer や javac など) または開発環境にだけ関連するクラスなどは含まれません。

Java 2 Runtime Environment は、Java ソフトウェアの Web ページからダウンロードできます。

このドキュメントでは、開発したソフトウェアとともに Java 2 Runtime Environment を再配布する開発者に役立つ情報について説明します。そのほかの参考情報として、Java 2 Runtime Environment の README ファイルも参照してください。

Java 2 Runtime Environment についてのコメントやご提案のメールは、Java ソフトウェアの電子メールアドレスのリストから適切なエンジニアリングチームを選んでお送りください。

Java 2 Runtime Environment の再配布

作成したソフトウェアを一般ユーザが実行するには、Java 2 Runtime Environment をシステムにインストールする必要があります。通常、Java 2 SDK には実行環境が含まれているので、一般ユーザがすでに SDK をインストールしている場合には、それを使うことができます。しかし、次の理由から、ほとんどの一般ユーザに対しては Java 2 Runtime Environment をインストールすることをお勧めします。
  • Java 2 SDK と違い、Java 2 Runtime Environment は再配布が可能である。Java 2 Runtime Environment の使用許諾契約では、開発者が作成したソフトウェアとともにこれをパッケージ化することを許可している。アプリケーションとともに Java 2 Runtime Environment を配布することで、一般ユーザは、開発者の作成したソフトウェアを実行するための適切なバージョンの実行環境を確実に入手できる

  • Java 2 Runtime Environment は Java 2 SDK よりもサイズが小さい。Java 2 Runtime Environment には、作成したソフトウェアを一般ユーザが実行するために必要なものはすべて含まれているが、Java 2 SDK の一部である開発ツールや、デモアプレット、デモアプリケーションは除外されている。Java 2 Runtime Environment は比較的小規模であるため、開発者が、作成したソフトウェアとともにパッケージ化することも、一般ユーザが、Java ソフトウェアの Web サイトから独自にダウンロードすることも簡単である

  • Microsoft Windows プラットフォーム上では、Java 2 Runtime Environment のインストーラによって java および javaw アプリケーション起動コマンドが、オペレーティングシステムのデフォルトのシステムパス上に自動的にインストールされる。そのため、アプリケーションを起動するために起動コマンドを探す必要がなく、一般ユーザにシステム上のパスの操作を指示する必要がない

作成したアプリケーションとともに Java 2 Runtime Environment をパッケージ化する場合は、使用許諾契約の規定により、再配布する必要のないオプションのファイル以外の、すべてのファイルを再配布しなければなりません。オプションのファイルの一覧は、README に記載されています。オプションのファイルは国際化および地域対応などの機能のためのファイルで、特定のアプリケーションには必要ない可能性があるものです。作成するソフトウェアにこれらのオプションコンポーネントが必要な場合は、再配布することができます。これらが必要ない場合は、ソフトウェアにバンドルしなくてもかまいません。

アプリケーションを JAR ファイルにパッケージ化する

アプリケーションソフトウェアは、Java Archive (JAR) ファイル形式でバンドルすることができます。JAR アーカイブ内に格納されたファイルは圧縮できるため、ソフトウェアバンドルのサイズを比較的小さくすることができます。また、JAR アーカイブのマニフェストファイルを利用すると、ベンダー情報、バージョン情報、パッケージシーリングなどを指定することもできます。

JAR アーカイブとマニフェストの使用の詳細は、JDK ドキュメントの JAR ファイルの説明、および JAR のチュートリアルを参照してください。

アプリケーションが JAR ファイル形式でパッケージ化されていると、java または javaw アプリケーション起動コマンドの -jar オプションを使ってアプリケーションを起動できます。このオプションを機能させるためには、JAR アーカイブ内のどのファイルがアプリケーションの開始点となるかを、起動コマンドが認識している必要があります。つまり、起動コマンドは、JAR ファイル内のどのクラスに以下のシグニチャーを持ったメソッドが含まれているかを認識する必要があります。

public static void main(String[])
アプリケーションの開始点を指定するには、JAR ファイルのマニフェストに次の書式の行を含める必要があります。
Main-Class: <class name>
class name は、エントリポイントクラスの名前です。

このようにマニフェストが用意されていれば、JAR 形式でパッケージ化されたアプリケーションを、次の形式のコマンドを使って起動することができます。

java -jar YourApp.jar

例: JAR 形式にパッケージ化したアプリケーションの作成

この項では、簡単な HelloWorld アプリケーションを使って、JAR ファイル形式でアプリケーションをバンドルするための基本的な手順を示します。

アプリケーションのソースコードは、次のようになります。

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

このアプリケーションのコードには、JAR ファイル形式でのパッケージ化のための特別な要素は何も含まれていないことに注目してください。JAR にパッケージ化するアプリケーションのソースコードは、そうでないほかのソースコードと変わりありません。

このアプリケーションをコンパイルし、ファイル HelloWorld.class をバンドルする準備ができたとします。アプリケーションを JAR ファイルから実行できるようにするには、JAR ファイルのマニフェストに次の行を含める必要があります。

Main-Class: HelloWorld
この行は、JDK の jar ユーティリティを使ってマニフェストに挿入できます。まず、JAR ファイルのマニフェストに取り込む情報を保持する「補助」ファイルを用意する必要があります。この例では、次の 1 行で構成される補助ファイルを用意します。
Main-Class: HelloWorld  
この補助ファイルを MyMainClass という名前にしたとします。この補助ファイルの内容は、JAR ファイルの作成と同時に JAR ファイルのマニフェストに取り込むことができます。それには、次のコマンドを使います。
jar cfm HelloWorld.jar MyMainClass HelloWorld.class
このコマンドにより、HelloWorld.class ファイルとマニフェストを含む、HelloWorld.jar という名前の JAR ファイルが作成されます。m フラグは、ファイル MyMainClass の内容をマニフェスト内に格納することを示します。この結果、マニフェストは次のようになります。
Manifest-Version: 1.0
Main-Class: HelloWorld
Created-By: 1.3 (Sun Microsystems Inc.)
Main-Class 行が、意図したとおりにマニフェストに取り込まれます。

JAR ファイルはすでに存在するが、JAR ファイルのマニフェストに Main-Class 属性が含まれていない場合は、次のコマンドを使って補助ファイルからマニフェストに Main-Class 属性を含む行を取り込むことができます。

jar ufm HelloWorld.jar MyMainClass
u フラグは、既存の JAR ファイルを更新することを示し、m フラグは、補助ファイルの内容をマニフェストに取り込むことを示します。

このようにして JAR ファイルおよびマニフェストの用意が完了したら、次のコマンドを使ってアプリケーションを実行することができます。

java -jar HelloWorld.jar