[Java] Java 7 Questions & Answers

(8/18更新)コメントされる場合には連絡がつくメールアドレスをお使い下さい。一部の質問は一般的な質問でないものがあり、そういう質問に対してこの場で回答致しかねますが、質問者に対して直接回答する場合があります。

このエントリには、Java 7に関連するFAQを掲載しています。7月28日のリリース時から事前にいくつかの質問に対する回答をしてきました。追加の質問がありましたら、気兼ねなくこのエントリのコメント欄に質問をお寄せ下さい(訳注:質問は原文にお願いします)。全てのコメントに返信することは難しいのですが、その代わりにこのエントリに更新を追加していく予定です。まずは一般的な質問を以下にまとめました。

質問回答
Java 7はどこからダウンロードできますか?java.oracle.comの、JDK 7のページからダウンロードして下さい。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java 7のJRockitはいつごろリリースされますか?リリースされない予定です。昨年説明したように、現在JRockitとHotSpotを単一のJVMにマージしています。JDK 7には、この統合されたJVMの最初のリリースが含まれています。この段階で、PermGenの考え方をなくす最初の一歩です。将来のJDK 7のアップデートで、PermGenが無くなり、JRockitからもっと機能が移植されるはずです。
(8/18追加)Java 7で作成したアプリケーションをテストしてもらったところ、Unsupported major:minor version 51.0 というエラーが出ました。エラーの意味と、対策を教えて下さい。Java 7のjavacでアプリケーションをコンパイルすると、クラスファイルにはバージョン番号として51.0が付加されます。Java 7以前ではこの番号を理解できませんので、アプリケーションの実行までに、ユーザーにJava 7へアップグレードしてもらう必要があります。もしJava 7 APIを使っていないアプリケーションならば、javac -target 1.6 としてコンパイルすると、JDK 6互換のクラスファイルを作成できます。
WebStartを使ってアプリケーションを展開する場合には、必要なマイナーバージョンを指定できます。詳細情報はJava Web StartとJNLPに関するドキュメントをご覧下さい(こちらからどうぞ)。現在Java 6をデスクトップ上で使っているエンドユーザーに対し、自動更新でJava 7にアップデートした時点で、この問題は無くなるはずです。自動更新を始めるタイミングは未定です。まずは皆さんのコードとJDK 7の間にある問題を解決する時間を確保したいというのが我々の思いです。
(8/17追加)統合されたJVMは、JRockitが可能な、Windows上でより多くにヒープを割り当てることができる機能を持つようになるのでしょうか?あなたが仰有っている機能とはこういうことだと思います。この機能をHotSpotに追加するのは、JVMのアーキテクチャの問題で非常に複雑であることがわかっています。現在の統合計画ではこの機能を含める予定はありません。その代わりに64bit JVMの利用を推奨します。これならWindowsの制限にぶち当たることはありません。
ソースコードはどこから入手できますか?Java SE 7参照実装のソースコードはOpenJDKコミュニティJDK 7プロジェクトから入手できます。
(8/17追加)Oracle JDKをビルドするために使っているコードと、Open JDKリポジトリにあるソースコードにどれほどの差がありますか?ほとんど差はありません。Oracle JDKのビルドプロセスは、OpenJDK 7のビルドにいくつかのコンポーネントを追加してリリースしています。追加しているものは、例えばOracleのJava PlugInやJava WebStart、グラフィックラスタライザーのようなクローズドソースの3rdパーティーコンポーネント、Rhinoのような3rdパーティーのオープンソースコンポーネントなどと、追加ドキュメントや3rdパーティーのフォントなどです。
我々の思いは、JRockit Mission Controlのような有償機能(まだOracle JDKでは利用できません)を除き、Oracle JDKのコンポーネントの全てをオープンソースにしたいということです。そのため、妨げとなる3rdパーティーのコンポーネントをオープンソースの代替品に置き換え、コードベース間のパリティをより近づけることを目指しています。
(8/18追加)JDK 6に比べてJDK 7はどれぐらいオープンソースのコンポーネントが含まれていますか?Java SE 7参照実装にあるように、新しいJDK 7の機能は全てオープンソースです。JRockitから移植されている機能の大部分もオープンソースです(もしくは、JDK 7のコードベースにあれば、オープンソースになるでしょう)。
Java 7がjava.comにないのはなぜですか?java.comのサイトは、エンドユーザーがダウンロードするために存在します。以前のメジャーバージョンのJavaとJDK 7は開発者向けに用意していますので、エンドユーザーに公開される前に、Javaプログラムが新しいJREバージョンで動作することを確認することができます。
(8/17更新)
java.oracle.comに開発者向けダウンロードサイトへの控えめなリンクがありますので、そちらからどうぞ。
APIのドキュメントはどこにありますか?Javadocはこちらからどうぞ。
Java 7のMacへのポーティングの状況について教えて下さい。機能開発は現在もOpenJDK Mac OS X Port 7プロジェクトで実施中です。詳細の状況はこちらから確認できます。プロジェクトが十分に進捗したら(おそらく数ヶ月後ぐらい)JDKダウンロードサイトからDeveloper Preview版を用意する予定にしています。AppleのメンバーをはじめとするMac OS X Portプロジェクトの面々と協業して、残る機能(インストーラやプラグイン、Web Startなど)を完成させる予定です。それ以後は通常の流れで1回以上のベータ版もしくはRC(Release Candidate)版を出し、製品版を出す予定です。
Macで動作させたいということなら、数多くの3rdパーティーからOpenJDKのコードベースのバイナリビルドが提供されています。検索エンジンを使用したら、いくつか見つけられると思います。
Apache LuceneをJDK 7で動作させた場合の問題について、教えて下さい。Luceneプロジェクトの報告では、実行中のLuceneがJITバグを引き起こし、JVMがクラッシュするということです。回避策は、壊れた最適化をコマンドラインから無効化することです。詳細はバグレポートをご覧下さい。.
 Luceneが報告した3つのバグは、OpenJDKのコードでは修正されており、さらにOracleが発見したLcuceneに影響する4番目のバグ (7070134, 7068051, 7044738, 7077439)は、JDK 7 Update 1の現在のビルドに含まれています。(修正によるリグレッションが無ければ、そのまま含まれることになるでしょう)。
Oracleがどのように優先付けしているか、外部のバグレポートへの取り組みについて詳細は、Dailbor Topicのブログをご覧下さい。JDK 7をテストし、問題を報告してくれている皆様に感謝します。
JDK 7ライセンスを読んだところ、 商用機能について記載がありましたが、これはどういう意味ですか?SunはリリースしたJavaのバージョンそれぞれのために、新しいライセンスを作成してきました(更新版を含む)。修正が小規模であっても、毎度弁護士に連絡して、以前のバージョンからの変更が受け入れられることを確認する必要があったということです。私たちの目標は、ライセンスの数を最小限にすることを目指しています。究極は理想は一つのライセンスにすることです。JRockitを無償にするにあたり、JRockitだけでなくJavaの全バージョンをカバーするようにBCD(Binary Code License)を変更しました。この件は過去のエントリでご紹介しています。
「商用機能」とは、JDK 7から始まった、JRockitからHotSpot/JRockit統合JVMへポートする付加価値機能のことです。有償機能の詳細は製品ドキュメントに記載があります。標準のJDK 7製品版バイナリには、商用機能は含まれておりませんので、間違って有償機能を使うことはありません。将来のアップデートでJDK 7に商用機能を移植するにあたり、そのような機能を有効化するための明示的なフラグを用意する予定です。注意頂きたいのは、こうした機能は「商用、もしくは本番環境での利用」においてのみ制限があるということです。 つまり、個人で開発している場合には、何も心配する必要はありません。全ての情報はライセンス文書に記載があります。


原文はこちら。
http://blogs.oracle.com/henrik/entry/java_7_questions_answers

0 件のコメント:

コメントを投稿