おそらくこの答えはやり過ぎかもしれませんが、少なくとも役に立つと思います。
私は通常、コードをダウンロードして自分でビルドします。実際の変更内容を確認するためのツールがあります (TortoiseHG など)。これが私がすることです:
JDK 8 のビルド方法
次のガイドでは、 Ubuntu Linux 12.04 (Precise)を使用してOpen JDK 8 Developer Lambda プロジェクトをビルドする方法について説明します。ビルド プロセスの詳細については、新しいビルド システムの READMEを参照してください。このプロセスは、メインの JDK 8 フォレストや Jigsaw フォレストなどの他の JDK プロジェクトでもほとんど同じです。
初めてビルドする方法
Ubuntu をインストールしたら、次の追加パッケージをインストールする必要があります。
sudo apt-get install build-essential
sudo apt-get install mercurial
sudo apt-get install tortoisehg
sudo apt-get install awk
sudo apt-get install m4
sudo apt-get install ccache
sudo apt-get install openjdk-7-jdk
sudo apt-get install ant
sudo apt-get install vim
sudo apt-get install libX11-dev
sudo apt-get install libxext-dev
sudo apt-get install libxrender-dev
sudo apt-get install libxtst-dev
sudo apt-get install libcups2-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev
Mercurial を使用して Open JDK8 Lambda プロジェクトのソース コードをダウンロードする
hg clone http://hg.openjdk.java.net/lambda/lambda
その他のプロジェクト フォレストは次のとおりです。
http://hg.openjdk.java.net/jdk8/jdk8
http://hg.openjdk.java.net/jigsaw/jigsaw
Jigsaw は JDK 9 では延期されましたが。
実際には、前のコマンドは、プロジェクト フォレストのルートをダウンロードするだけです。残りのサブプロジェクト (つまり、corba、jaxp、jaxw、langtools、jdk、および hotspot) の mercurial リポジトリをダウンロードする必要があります。get_source.sh
これを行うには、チェックアウトしたばかりのプロジェクトのルート フォルダーにあるコマンドを実行します。
cd ~/lambda
sh ./get_source
他のすべてのプロジェクト リポジトリのダウンロードには時間がかかる場合があるため、しばらくお待ちください。
すべてのプロジェクト リポジトリをダウンロードしたら、ビルドを構成する準備が整います。あなたがまだラムダディレクトリにいると仮定します
cd commom/makefiles
sh ../autoconf/configure
このコマンド:configure
には、JDK のビルド方法をカスタマイズするために設定できる多くのオプションがあります。を実行すると、これらのオプションのドキュメントを表示できますconfigure --help
。ただし、パラメータなしでコマンドを実行するだけで十分です。
まだ lambda/common/makefiles にいる間に、JDK 8 をビルドする準備が整いました。
make images
このmake
コマンドには、JDK をビルドするための複数のオプションもあります。入力make help
すると、それらすべてが表示されます。
コンピューターのリソース (コアとメモリ) の量によっては、このコンパイル プロセスに時間がかかる場合があります。シングル コアと 1 GB のメモリを搭載した仮想マシンで 1 回実行しましたが、一晩中かかりました。私は現在、4 コアと 4 GB のメモリを搭載した Intel Core i7 で実行していますが、1 時間もかかりません。とにかく、コンパイルの準備ができたら、JDK イメージは次の場所にあります。
~/lambda/build/linux-x64-normal-server-release/images/j2sdk-image
ディレクトリlinux-x64-normal-server-release
は、そのアーキテクチャに応じて、コンピューター上で異なる名前を持つ場合があります。
これで、このビルドを使用して JDK 8 の新機能をテストできます。
アップデートを入手して再構築する方法
OpenJDK の作業が進むにつれて、最新のソース コードを入手して、全体を再構築したくなるかもしれませんね。
最新のソース コードに更新するには、次のコマンドget_source.sh
を再度実行します。
cd lambda
sh ./get_source
configure
ハードウェア アーキテクチャ (つまり、より多くのコア、より多くのメモリ) またはインストールされたソフトウェア (つまり、インストールされた jdk) で何かが変更されない限り、コマンドを再度実行する必要はないかもしれません。ただし、確実にもう一度実行したい場合は、最初に以前のビルドをクリーンアップして完全に消去します。
make dist-clean
このコマンドは、以前の構成とビルドを削除します。
その後、再度構成できます。
cd commom/makefiles
sh ../autoconf/configure
最後に、システムを再度ビルドします。
make images
何が変わったかを知る方法
明らかに、コードの最新バージョンを入手したら、最後にビルドしてから何が変更されたかを知りたいと思うかもしれません。サブプロジェクト (つまり、hotspot、langtools など) のいずれかで状況が変更されている可能性があります。ただし、JDK API は JDK サブプロジェクトで積極的に開発されています。
プロジェクトは Mercurial を使用しているため、TortoiseHG を使用してリポジトリとやり取りし、何が変更されたかを確認できます。プロジェクト ディレクトリの 1 つを見つけて、TortoiseHG コマンドを実行するだけです。
cd ~/lambda/jdk
thg
これにより、TortoiseHG GUI ツールが起動し、リポジトリ内のすべての変更のログと、取得した最後の更新で正確に変更された内容を簡単に確認できます (上記の jdk サブプロジェクトの例)。これらのサブフォルダーのすべてで thg コマンドを呼び出すことにより、langtools サブプロジェクトでコンパイラーが受けた変更を確認し、hotspot サブプロジェクトで jvm が受けた変更を確認できます。
Java ドキュメントの作成方法
このconfigure
コマンドには、ビルド中に Java ドキュメントを自動的に生成するというオプション--enable-docs
が含まれていますが、現在のところ、このフラグは何もしていないようです。したがって、次のコマンドを使用して javadoc を生成できます。
~/lambda/build/linux-x64-normal-server-release/images/j2sdk-image/bin/javadoc \
-d ~/lambda/build/linux-x64-normal-server-release/images/j2sdk-image/docs \
-use \
-author \
-version \
-linksource \
-splitIndex \
-windowtitle 'Java 2 Platform 8.0 API Specification' \
-doctitle 'Java<sup><font size="-2">TM</font></sup> 2 Platform 8.0 API Specification' \
-header '<b>Java 2 Platform </b><br><font size="-1">8.0</font>' \
-group "Core Packages" "java.\*" \
-overview ~/lambda/jdk/src/share/classes/overview-bundled.html \
-sourcepath ~/lambda/jdk/src/share/classes \
java.lang java.util java.util.functions java.util.concurrent \
java.lang.annotation java.lang.reflect java.lang.ref
JDK のソース コードは ~/lambda/jdk/src/share/classes/ にあることに注意してください。
ここで指定されているリスト パッケージは、JDK 8 の作業のほとんどが実行されているものです。必要と思われるその他のパッケージを追加します。