2 プレビュー機能
プレビュー機能とは、設計、仕様および実装は完了しているが、永続的でない新機能のことであり、将来のJDKリリースでは別の形式で存在するか、完全になくなる可能性があることを意味します。
メインラインのJDKリリースで機能をプレビュー機能として導入すると、可能なかぎり多くの開発者に、その機能を実際の環境で試用してフィードバックを提供してもらうことができます。また、ツール・ベンダーは、Java開発者がその機能を本番環境で使用する前に、機能のサポートを構築することができます。開発者のフィードバックは、その機能に設計ミスがあるかどうか、たとえば、ハード面での技術的エラー(タイプ・システムの欠陥など)、ソフト面での操作性の問題(従来の機能との意外な相互作用など)、または不適切なアーキテクチャの選択(将来の機能の方向性を妨げるような選択)などを確認する上で役立ちます。このフィードバックを通じて機能の長所と短所が評価され、その機能がJava SE Platformで長期的な役割を担うかどうか、担う場合は調整が必要かどうかを判断します。その結果、機能は、(調整あり、または調整なしで)最終かつ永続的なステータスが付与されるか、(調整あり、または調整なしで)プレビュー期間をさらに継続するか、あるいは削除されます。
すべてのプレビュー機能はJDK Enhancement Proposal (JEP)に記載され、そこでは機能の範囲の定義と設計の概略が説明されています。たとえば、JEP 325はJDK 12プレビュー機能のswitch
式について説明しています。プレビュー機能の役割とライフサイクルの背景情報は、JEP 12を参照してください。
プレビュー機能の使用
現在のプログラムでプレビュー言語機能を使用するには、その機能をコンパイラとランタイム・システムで明示的に有効化する必要があります。そうしないと、コードでプレビュー機能が使用されていることと、プレビュー機能はデフォルトで無効になっていることを通知するエラー・メッセージが表示されます。
JDKリリースnのプレビュー機能を使用するソース・コードをjavac
でコンパイルするには、--enable-preview
コマンド行オプションを--release n
または-source n
コマンド行オプションと組み合せて指定して、JDKリリースnのjavac
を実行します。
たとえば、MyApp.java
という名前のアプリケーションで、JDK 12のプレビュー言語機能であるswitch
式を使用すると仮定します。これを、次のようにJDK 12でコンパイルします。
javac --enable-preview --release 12 MyApp.java
ノート:
プレビュー機能を使用するアプリケーションをコンパイルすると、次のような警告メッセージが表示されます。
Note: MyApp.java uses preview language features.
Note: Recompile with -Xlint:preview for details
プレビュー機能は変更される可能性があり、その目的はフィードバックの獲得であることに注意してください。
JDKリリースnのプレビュー機能を使用するアプリケーションを実行するには、--enable-preview
オプションを指定して、JDKリリースnのjava
を使用します。先の例に続けて、MyApp
を実行するには、次のようにJDK 12のjava
を実行します。
java --enable-preview MyApp
ノート:
旧リリースのJava SE Platformのプレビュー機能を使用するコードは、必ずしも新しいリリースでコンパイルまたは実行する必要はありません。jshell
およびjavadoc
ツールも--enable-preview
コマンド行オプションをサポートしています。
フィードバックの送信
プレビュー機能のフィードバックやJava SE Platformに関するその他の意見は、次のようにして提供できます。
- バグを見つけたら、その内容をJava Bug Databaseに送信します。
- プレビュー機能の操作性に関する重要なフィードバックを提供する場合は、その機能が議論されているOpenJDKのメーリング・リストに投稿します。特定の機能のメーリング・リストを見つけるには、その機能のJEPページを確認して、ラベル「Discussion」を探します。たとえば、ページ『JEP 325: Switch Expressions (Preview)』には、ページの先頭付近に「Discussion amber dash dev at openjdk dot java dot net」と表示されています。
- オープン・ソース・プロジェクトの場合は、OpenJDK Wikiの「Quality Outreach」を参照してください。