Sun Java Solaris Communities My SDN Account
 
JRE Notes

 

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

        
英語版

目次

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

はじめに

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

J2RE は、Java Software の Web ページからダウンロードできます。

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

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

Java 2 Runtime Environment (J2RE) の再配布

作成したソフトウェアを一般ユーザが実行するには、J2RE がシステムにインストールされている必要があります。確実にインストール / 実行させるために、作成したソフトウェアとともに、Java 2 SDK (J2SDK) か J2RE のいずれかを再配布することができます。

次の理由により、J2SDK よりも J2RE を再配布することをお勧めします。

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

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

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

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

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

JAR アーカイブとマニフェストの使用の詳細は、J2SE ドキュメントの 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
この行は、J2SDK の 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.4.2 (Sun Microsystems Inc.)
Main-Class 行が、意図したとおりにマニフェストに取り込まれます。

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

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

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

java -jar HelloWorld.jar

Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.