Gentoo Java 1.5 FAQ
1.
なぜJava 1.5はまだhard-maskされているのですか?
Java 1.5はまだhard maskされています。
1.5 JDKをシステムVMとして使用することを阻害する多くの問題があるためです。
Java 1.5にある最初の問題は後方互換性です。
パッケージを1.5 JDKでコンパイルすると、
コンパイルされたクラスは1.5またはそれ以上のバージョンのVMでのみ利用可能になるのが、デフォルトの動作です。
以下で詳しく述べるように、Javaチームはできるだけ古いバージョンのVMに対しクラスをコンパイルする方法に取り組んでいます。
別の大きな問題は、JDK 1.5と互換性のないパッケージがあり、現在のportageツリーに存在しています。
例えば1.5では、いくつかのabstract classとinterfaceにabstractメソッドが新設されています。
これは、それらabstractメソッドをオーバーライドするための修正が必要になるということを意味します。
もし心配なら、そのような面倒なパッケージをコンパイルするのに、1.4を使用してみることもできます。
しかし、上記で述べた後方互換性の問題が原因で外部ライブラリを使用することができません。
なぜなら、外部ライブラリは1.5向けとしてのみコンパイルされているからです。
2.
どうすればシステムを壊さずにJava 1.5を安全に使用できますか?
既に述べたように、システムVMとして1.5 JDKを使用するべきではありません。
しかし、ユーザVMとして使用するのは安全です。
注意:
Java 1.5を使う予定でしたら次のセクションで説明するoverlayを試すことをお勧めします。
|
まずは、sun-jdk-1.5と1.4 JDKのどれかをemergeします(まだそれらを実行していない場合)。
コード表示 2.1: JDKのemerge |
# echo "=dev-java/sun-jdk-1.5*" >> /etc/portage/package.unmask
# echo "=dev-java/sun-jdk-1.5*" >> /etc/portage/package.keywords
# emerge =sun-jdk-1.5*
# emerge =blackdown-jdk-1.4*
|
次にシステムVMが1.4 JDKに設定されていることを確認します。
コード表示 2.2: システムVMの設定 |
# java-config -L
[sun-jdk-1.5.0.05] "Sun JDK 1.5.0.05" (/etc/env.d/java/20sun-jdk-1.5.0.05)
[kaffe-1.1.6] "Kaffe 1.1.6" (/etc/env.d/java/20kaffe-1.1.6)
[blackdown-jdk-1.4.2.02] "Blackdown JDK 1.4.2.02" (/etc/env.d/java/20blackdown-jdk-1.4.2.02)
# java-config -S blackdown-jdk-1.4.2.02
System Virtual Machine set
You may want to update your enviroment by running:
"/usr/sbin/env-update && source /etc/profile"
# /usr/sbin/env-update && source /etc/profile
|
そして、ユーザVMをsun-jdk-1.5にする設定をします。
コード表示 2.3: ユーザVMの設定 |
$ java-config -L
[sun-jdk-1.5.0.05] "Sun JDK 1.5.0.05" (/etc/env.d/java/20sun-jdk-1.5.0.05)
[kaffe-1.1.6] "Kaffe 1.1.6" (/etc/env.d/java/20kaffe-1.1.6)
[blackdown-jdk-1.4.2.02] "Blackdown JDK 1.4.2.02" (/etc/env.d/java/20blackdown-jdk-1.4.2.02)
$ java-config -s sun-jdk-1.5.0.05
Env files in /home/someuser/.gentoo updated. Source these in your shell's profile.
$ echo "source ~/.gentoo/java-env" >> ~/.bash_profile
$ source ~/.gentoo/java-env
|
警告:
1.5 JDKの更新時には気をつけてください!
JDKをemergeすると常にそのJDKがシステムVMとして設定されます。
これは現行のシステムの制限事項です。
|
3.
システムVMとして1.5 JDKをサポートするための進行中の作業はありますか?
1.5のサポートに向けての作業が進行しているという朗報があります。
Java 1.5のmaskが外されるためには大きな変更が必要です。
Thomas Mathijs (axxo)は彼のoverlayでそのための膨大な作業を終えています。
現在はaxxo-overlay上での作業は完了し、新しいoverlayであるmigration-overlay上で作業しています。
このoverlayは古いシステムから新しいシステムに移行する方法を提供します。
最も重要な改良点には以下のものがあります。
-
マージ時VM切り替え機能 (
#86900)
-
マージ時build.xml書き換え機能 (
#86903)
-
java-configの新しいバージョン。
-
ユーザVMとシステムVMを選択するために、PATH環境変数での細工の代わりにより柔軟性のあるシンボリックリンクを使用。
-
jikes USEフラグの削除。よって、javac、eclipse-ecj、jikesの選択が簡単に可能
migration-overlayの使用に関する最新のドキュメントはここで整備されています。
以下のJavaのドキュメントはこの新しいoverlayの使い方に合わせて更新されています。
以下の'Migration'セクションに補足資料があります。
私たちはこのoverlayに対するどんな意見/提案/修正/パッチも歓迎します。
なぜportageを更新する必要がありますか?
比較的新しいportageによって提供される「フェーズフック機構」が必要です。
基本的には、各フェーズ(src_unpack、src_compile、src_install)の前に呼ばれる関数を定義できる機構です。。
そのフック機構を使用すると、ビルド時に意図するJDKが使用されることを確実にすることができます。
overlayのebuildのdigest妥当性チェックがときどき失敗するのはなぜですか?
開発者はoverlayに変更を加えた後にdigestの再生成をときどき忘れるので、妥当性チェックが失敗します。
FEATURES="-strict"を使用するかユーザ自身でebuild manifestを実行することで回避できます。
Portageツリーに統合されるのはいつですか?
overlayはPortageにフック機構を必要としているので、stableユーザに提供可能になる一番早い時期は、2.0.55か2.1がstableになった後です。
archに挑む前に、手始めに~archにこれらの変更を導入できるような多くの対策を施しました。
~archにいつ入れるかということについては、特に期限を設けていません。
移行作業を行う人手が限られていますし、すべての不備が解決されることを確認したいと思います。
よって、準備が整うまで待ってください。
このoverlayの進行状況に関する最新のニュースはどこで見つかりますか?
'gentoo-java'メーリングリストに参加することをお勧めします。
すべての最新のニュースは少なくともそこで公表されます。
参加方法に関する詳しい情報はここにあります。
4.
それで、1.5 JDKを使うことによってシステムを壊してしまいました...どうやって直せばいいですか?
システムVMに1.5 JDKを使用している方はmigration-overlayに切り替えることをお勧めします。
そのoverlayを使用するための説明書に、すべてが1.4 JDKでリコンパイルされることを確実にする方法が記述されています。
このドキュメントの内容は、他のものが明示されない限りは、
CC-BY-SA-2.5ライセンスです。
Gentoo Name and Logo Usage Guidelines (日本語訳)が適用されます。
|