Top / Software / Java

Java の FAQ

Java 実行環境・開発環境のインストール

参照:

etch 以降では Java 実行環境・開発環境は十分用意されている為、 特定の実装に依存した環境を必要とする場合などを除いてのみ、環境構築を意識する必要はありません。

通常 Java で動作するソフトウェアパッケージ (例: tomcat6) を導入すると 同時に実行環境 (squeeze ではデフォルトで openjdk-6-jre) も導入されます。 同様に Java 開発ツール・ライブラリパッケージを導入すると、 開発環境 (squeeze ではデフォルトで openjdk-6-jdk) も同時に導入されます。

JDK の FLOSS 化により、etch 以前は contrib セクションにあった Java ライブラリ・開発ツールは squeeze 以降はほぼ全て main/java セクションに移動しています。

各固有の実装を導入する場合は以下のとおりです。

1. 概要

以下の仮想パッケージからいずれかの実装を選ぶと環境を構築できます。

squeeze におけるデフォルトの環境は OpenJDK 6 (IcedTea ベース) + GNU Compiler for Java (GCJ) (2実装間の相互運用性のためのいくつかのスクリプトを含む) であり、以下のメタパッケージをインストールすることで環境を構築できます。

また、Oracle (Sun) JRE/JDK との互換性維持のため、以下の仮想パッケージがあります。

以下のパッケージはユーザが手動で導入する必要性は皆無です。 しかし、Java 環境を導入する際には自動的にインストールされているでしょう。

"headless" という名前の付いたパッケージはグラフィカルインタフェースが取り除かれた、 コンソールベースのツールキットのみで構成されています。

2. 標準環境の構築

FLOSS な Java 実装として以下のパッケージが main セクションに用意されています。

# aptitude install openjdk-6-jdk
  • また次の追加パッケージがあります。
  • openjdk-6-source は OpenJDK のソースコード (src.zip) です。 これがインストールされていると、javadoc/Eclipse などでコードのハイライトを行うことができます。
  • openjdk-6-jre-zero はアセンブリ Zero を目指す IcedTea プロジェクトの HotSpot VM です。(Sun の HotSpot はアセンブリが多く含まれています。) アーキテクチャ独立な高速 JIT コンパイラ Shark を含んでいます。 Shark は LLVM を内部で使用しています。
  • icedtea-6-jre-cacaoCACAO プロジェクトの成果物を含んだ、新しい VM です。non-x86 環境では高速に動作します。
  • GNU Compiler for Java (コンパイラ), GNU Interpreter for Java (Java バイトコードインタプリタ)。 ソースコードからクラスファイルではなく、マシンコードを直接生成するネイティブコンパイラ。 GCC の成果物の一部です。 JDK と同じくクラスファイルを生成し、バイトコードインタプリタで処理するということも可能です。 (JIT コンパイラとは違いマシンコードへのコンパイルをせず、インタプリタ処理するというユニークな方法です。)
  • gcj-jdk を導入すると JDK と同様のコマンド等で処理できるようになります。 gcj-jre (または gcj-jre-headless) を導入すると、JRE と同様のコマンド等で処理できるようになります。

Oracle (Sun) JRE/JDK を含む Java 実行環境・開発環境は non-free セクションに含まれていましたが、 Oracle により Java 6 Update 29 以降のライセンスが変更されたため、 Debian アーカイブに含めることができなくなりました。 lenny と squeeze にはまだ Java 6 Update 26 が残っていますが、セキュリティパッチ等も提供されなくなるため、 そのまま使い続けるのは望ましくありません。

  • JDK 5 (etch から lenny まで。squeeze では削除されています。BTS:545390)
  • JDK 6 (lenny から squeeze まで。 wheezy では削除されています。 BTS:646524)

non-free の apt-line を追加した後で、
etch の場合は

# aptitude install sun-java5-jdk sun-java5-demo sun-java5-source sun-java5-doc sun-java5-plugin sun-java5-fonts

lenny 以降の場合は

# aptitude install sun-java6-jdk sun-java6-demo sun-java6-source sun-java6-doc sun-java6-plugin sun-java6-fonts

3. その他の実装について

下記クリーンルーム方式のオープンソース実行環境は JDK の non-free セクションへの投入並びに FLOSS 化により、時代遅れとなったため削除されました。

  • Jikes (etch まで。lenny にて削除。BTS:508366)
  • SableVM (etch まで。lenny にて削除。BTS:508369)
  • Kaffe (lenny まで。squeeze にて削除。BTS:550864)
  • JamVM (lenny まで。squeeze にて削除。BTS:570009)

CACAO はソースパッケージ cacao-source があります。 これは OpenJDK 6 (IcedTea ベース) のビルド時に使用される為だけに用意されています。 以前はバイナリパッケージがありましたがこれも実用環境としては時代遅れとなったため削除されています。(BTS:570760) また一部成果物は OpenJDK (IcedTea ベース) に取り込まれています。

Mono で実装された .NET ベース JVM として ikvm というものがあります。

4. 他ベンダ提供のバイナリについて

lenny までは存在した他ベンダ (Oracle, IBM など) 提供のバイナリを deb パッケージに変換するユーティリティ java-package (コマンド名 make-jpkg) は squeeze では削除されています。(BTS:577423) これにより squeeze 以降で他ベンダ提供のバイナリを dpkg/apt で管理することは最早できなくなりました。

(注: Squeezeではjava-packageは削除され利用できませんが、Wheezy以降ではOracleのライセンス変更を受けjava-packageが復活しました。)

日本語の文字化けについて

Japanese#java を参照。 squeeze 公式の Java 環境を構築した場合、 ttf-sazanami-gothic, ttf-sazanami-mincho, ttf-vlgothic のいずれかが入っていれば化けることはない。
(他ベンダ提供のバイナリを導入した場合は不明。)

インストール済みの JVM を切り替えたい

Debian policy for Java により、各実装は update-alternatives で切り替えることができます。

java-common バージョン 0.24 から一括設定できるツールとして、update-java-alternatives という update-alternatives のラッパースクリプトが用意されています。

$ /usr/sbin/update-java-alternatives
usage: update-java-alternatives [--jre-headless] [--jre] [--plugin] [ -t|--test|-v|--verbose]
           -l|--list [<jname>]
           -s|--set <jname>
           -a|--auto
           -h|-?|--help

-l (--list) オプションでインストール済みの実装一覧とその優先度 (NN)を表示

$ /usr/sbin/update-java-alternatives -l
java-6-openjdk NN /usr/lib/jvm/java-6-openjdk
java-6-sun NN /usr/lib/jvm/java-6-sun
java-gcj-4.4 NN /usr/lib/jvm/java-1.5.0-gcj-4.4

-s (--set) オプションでデフォルトの実装を変更

# update-java-alternatives -s java-6-sun

-a (--auto) オプションで優先度の最も高い実装に設定

# update-java-alternatives -a

勿論、旧来のように update-alternatives でコマンド毎に切り替えも可能です。 ライブラリとツールが混合されるので推奨されませんが、もしやりたい場合は、

# update-alternatives --config java 

を実行してください。java の代わりとして他にも、javac, javadoc, javah, javap などが指定可能です。

ライブラリはどこにありますか?

Debian policy for Java の 2.3. Java libraries を参照してください。

こちらに書かれている通り、

  • クラスファイル (*.class。しかし通常はソフトウェア毎に *.jar ファイル形式でまとめられる) は libXXX[version]-java という名前のパッケージで全アーキテクチャ共通に提供され、 /usr/share/java に *.jar ファイルがあります。 Debian 公式の Java 開発環境などは 変数 $CLASSPATH にこちらが追加されており、 (JIT)コンパイラが起動すると自動的にロードされます。
  • JNI については libXXX[version]-jni と言う名前のパッケージがアーキテクチャ毎に提供され、 /usr/lib/jni に *.so ファイルが格納されています。

ブラウザプラグイン関連

Java アプレットプラグインを使用する場合は、

をインストールしてください。

アプリケーションサーバ

Tomcat (JSP)

デフォルトの動作では、Java の実装に OpenJDK 6 が選択されます。 複数の実装を用意している場合は、alternatives で切り替えることを推奨します。
しかし、次のような方法でも変更可能です。

/etc/default/tomcat6

ファイルに

JAVA_HOME=/usr/lib/jvm/java-6-openjdk

などと環境変数 JAVA_HOME を指定しても使用する実装を変更できます。

指定可能な値の例:

  • /usr/lib/jvm/java-6-openjdk (OpenJDK 6)
  • /usr/lib/jvm/java-6-sun (Oracle (Sun) JDK 6)
  • /usr/lib/jvm/java-1.5.0-sun (Sun JDK 5)
  • /usr/lib/j2sdk1.5-sun (Sun J2SDK 1.5)
  • /usr/lib/j2sdk1.5-ibm (IBM JDK 1.5)

デフォルトの最大ヒープサイズは 128 MB に指定されています。これを変更したい場合は、

/etc/init.d/tomcat6

ファイル内の以下の変数 JAVA_OPTS の -Xmx オプションの引数を変更します。

# It also looks like the default heap size of 64M is not enough for most cases
# so the maximum heap size is set to 128M
if [ -z "$JAVA_OPTS" ]; then
        JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
fi

# It also looks like the default heap size of 64M is not enough for most cases
# so the maximum heap size is set to 128M
if [ -z "$JAVA_OPTS" ]; then
        JAVA_OPTS="-Djava.awt.headless=true -Xmx256M"
fi

などと変更します。

JBoss

Hadoop

開発ツール

Eclipse

その他

ライブラリ

  • GNU Classpath は LibGCJ に統合されたため、squeeze にて削除されています。(BTS:585907)

ユーティリティ

  • fastjar - C ベースの jar。Sun のものより高速。

その他



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-05-04 (金) 21:03:30 (1932d)