S-JIS[2020-03-21] 変更履歴

Javaプレビュー機能

Javaの試験的機能について。


概要

Javaでは、新しい機能が正式な機能として取り込まれる前に、試験的・実験的な機能として実装されることがある。
そういった機能のことはpreview・incubator・experimentalといった言葉で呼ばれるが、その使い分けはきしださんによると以下のようなものらしい。

名称 説明 備考
preview
プレビュー
Javaの文法・構文に関する試験的機能 新文法のプレビュー版は、javac・java・jshellコマンドに「--enable-preview」を付けないと使えない。
incubator
インキュベーター
試験的に追加されたライブラリー(モジュール)
すなわち新しいクラス
「jdk.incubator.〜」といったパッケージ名で実装される。
正式機能となる時に正式なパッケージ名に変更される。
experimental
エクスペリメンタル
JavaVMに関する試験的機能 GC等

PreviewFeatureアノテーション

Java14で@jdk.internal.PreviewFeatureというアノテーションが追加されたようだ。
プレビュー機能として提供されているクラスや列挙子などにこのアノテーションが付けられている。
上記の通り「プレビュー」は新文法・新構文に対して使われるが、それを実現する為にクラスやメソッドが追加されることがあり、そういったクラスにこのアノテーションが付けられる)

このアノテーション自体は公開されていない(モジュール内部用である)ので、普通のユーザーが使うことは出来ないが、あるクラスやメソッドを見たときにこのアノテーションが付いていたら、それはプレビュー版だという事が分かる。


例えばJava14でプレビュー機能として追加されたRecordクラスには以下のようにPreviewFeatureアノテーションが付けられている。

@jdk.internal.PreviewFeature(feature=jdk.internal.PreviewFeature.Feature.RECORDS,
                             essentialAPI=true)
public abstract class Record {

※余談だが、PreviewFeature.Feature列挙型を見れば、現在どんなプレビュー機能があるか分かりそうだ(笑)


Java目次へ戻る / 新機能へ戻る / 技術メモへ戻る
メールの送信先:ひしだま