3

JDK8 の開発を追跡したいのですが、リポジトリに表示される内容はせいぜい奇妙です。

6 days ago  katleman    Added tag jdk8-b60 for changeset e07f499b9dcc default tip   changeset | manifest
7 days ago  katleman    Merge jdk8-b60  changeset | manifest

ほとんどの変更は「changeset XXX に jdk8-b60 を追加」または「Merge XXX」のように見えます。実際のコード変更のように見えるエントリがいくつかありますが、コードへのリンクはありません。実際、ワンクリックでわずかに役立つものにたどり着くことはありませんでした。

私は Mercurial について何も知りませんが、すべきでしょうか? Github をクリックするだけで、どこかにたどり着きます...

では、JDK8 で何が起こっているのかを追跡するにはどうすればよいでしょうか?

4

3 に答える 3

4

Mercurial によると、通常、タグ付けとマージ チェンジセットには大幅なコード変更はありません。タグを追加する.hgtagsと、リポジトリ内のローカル ファイルが変更され、すぐにコミットされます。マージ中のファイルが競合している場合など、マージ中にコードが実際に変更された場合、マージにより大幅なコード変更が行われる可能性があります。現在リポジトリの先端近くにあるマージ ( this onethis one ) は、どちらも実際にはファイル内で行われているマージ.hgtagsであるため、コードはまったくありません。

「追加されたタグ」で始まるものは、 への単なる変更であることがほとんど保証されて.hgtagsおり、ほとんどのマージにも実質的なものはありません。

現在、実質的な変更があるコミットは、数字で始まるものです ( this oneなど)。番号は、バグ データベースの問題番号に直接関連しています。たとえば、先ほどリンクしたものは「7197849」で始まり、まさにこのバグ レポートに関連しています。.

いくつかの注意点: より一般的に進行状況を追跡したい場合は、このページでプロジェクトに定義されたマイルストーンを確認できます。Joel Spolsky によるこのチュートリアルのように、マージとその意味など、Mercurial の基本をいくつか教えてくれる優れたスターター チュートリアルもあります。

そう...

そうは言っても、実際にリンクしたリポジトリは、おそらく探しているものではないようです。実際にjdk8は、リンクしたもの以外にも、プレフィックスが付いた他のリポジトリがいくつかあります。リポジトリとコードを探すのに興味深い場所を次に示します。

  • 最上位リポジトリ インデックス- OpenJDK Web サイトで Mercurial を介して管理されているすべてのリポジトリを一覧表示します。やjdk8など、 で始まるものを探してください。lambdanio
  • hotspot - 実際の JVM の変更. これらは、Hotspot JVM のネイティブ C/C++ コードに加えられる変更です。
  • swing/jdk - Swing の .java ファイルへの変更 (共有コードと異なるプラットフォームの両方)。

もちろん、他にもありますが、自分で探索することは半分の楽しみです (または、見方によっては戦います)。また、すべての JDK8 がリポジトリに該当するわけではないことに注意してくださいjdk8。たとえば、Lambda プロジェクトのリポジトリにはlambda.

最後にもう 1 つ: リポジトリ自体を参照する場合は、上部のナビゲーション バーにある "manifest" リンクを使用します。一種のエクスプローラーページに移動します。必要に応じて、いつでもソースを zip としてダウンロードすることもできます。すべてオープンソースなので、すぐにダウンロードできます。

それが役立つことを願っています。ハッピーハンティング:)

于 2012-10-18T06:43:56.823 に答える
3

おそらくこの答えはやり過ぎかもしれませんが、少なくとも役に立つと思います。

私は通常、コードをダウンロードして自分でビルドします。実際の変更内容を確認するためのツールがあります (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 の作業のほとんどが実行されているものです。必要と思われるその他のパッケージを追加します。

于 2012-10-19T13:36:54.717 に答える
1

参照しているリポジトリは、 JDK8ソース ツリーの「ルート」または「トップ」リポジトリです。主にメイクファイルやその他の構成ファイルが含まれているため、変更セットの履歴にはあまり関心がありません。興味深いソース コードを含むネストされたリポジトリがあります。たとえば、Hotspot JVM はhotspotにあり、クラス ライブラリはjdkにあり、javac コンパイラとその他のツールはlangtoolsにあります。

この配置については、 OpenJDK Developer's Guideで詳しく説明されています。

于 2013-01-16T01:05:57.383 に答える