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リリースnjavacを実行します。

たとえば、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リリースnjavaを使用します。先の例に続けて、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」を参照してください。