MicroProfile Working Group の支援の下配信され、MicroProfile 4.1 のリリースから5か月の後、予定されていた MicroProfile 5.0 のリリースが Java コミュニティで利用可能になった。この新しいリリースは、Jakarta EE 9.1 との連携と、コミュニティで開発された8つのコア API のすべてと1つのスタンドアロン API のアップデートを特徴としている:
CDI、JAX-RS、JSON-P、JSON-B API の元は対応する JSR をベースにしていた、今では Jakarta EE 9.1 仕様ベースになった。つまり Jakarta Contexts and Dependency Injection 3.0 (CDI)、Jakarta RESTful Web Services 3.0 (JAX-RS)、Jakarta JSON Processing 2.0 (JSON-P)、および Jakarta JSON Binding 2.0 (JSON-B) だ。舞台裏では、MicroProfile5.0 は Jakarta Annotations 2.0 を利用している。これは「さまざまな Java テクノロジに適用して宣言型プログラミングを可能にする一般的なセマンティックコンセプトを表す注釈のコレクションを定義した」仕様だ。
コミュニティで開発された8個の API はすべて、Jakarta EE 9 の依存関係を使用するように更新された。そのため、これらすべてで重大な変更がある。ここでは更新された API のいくつかを調べる。
MicroProfile Config 3.0
MicroProfile Config API は、アプリケーションの再パッケージングを最小限にするために、外部ソースからのランタイム構成を提供する。優先度ベースの度数システムに基づき、これらのソースには、system properties (ordinal = 400
)、 環境変数 (ordinal = 300
)、および .properties
ファイル (ordinal = 100
) などがある。定義された最も高い優先度数が優先される。カスタムソースは ConfigSource
インターフェイスを実装することで定義することもできる。
Config 3.0 の唯一の重大な変更は javax
ネームスペースが jakarta
ネームスペースに移行されたために以前のバージョンの Jakarta EE や Java EE では使用できないことだ。その他、@ConfigProperties
アノテーションの JavaDoc での明確化、Converter
インターフェースに関連する仕様と JavaDoc 間の不整合の修正、ConfigProviderTest
クラスの TCK バグの修正などの更新がある。
MicroProfile Metrics 4.0
MicroProfile Metrics API は、MicroProfile アプリケーションの時系列テレメトリデータを提供する。組込みの /metrics
エンドポイントは、Prometheus フォーマットでデータを送信する。カスタムメトリクスは @Counted
、@Gauge
、@Histogram
、@Timed
などの組込みのアノテーションによって定義できる。
Metrics 4.0 の重大な変更には次のようなものがある。Timer.update(long duration, java.util.concurrent.TimeUnit)
が Timer.update(java.time.Duration duration)
に変更された Timer
クラスの更新。抽象 (abstract) クラスからインターフェースに変更された MetricRegistry
。Metadata.getDescription()
メソッドと Metadata.getUnit()
メソッドが Optional<String>
から String
型を返すようになった。Optional<String>
を返す新しい Metadata.description()
および Metadata.unit()
メソッド。
MicroProfile Fault Tolerance 4.0
MicroProfile Fault Tolerance API は、アプリケーション内の障害を処理するためのいくつかの戦略 (タイムアウト、リトライ、サーキットブレーカなど) を提供する。これらの各戦略に対応する注釈 (アノテーション) があり、適用されると、障害の悪影響を最小限に抑えるのに必要な一連のアクションにアプリケーションをリダイレクトする。
Fault Tolerance 4.0 の重大な変更は主に Metrics API との相互作用に関連するものだ。この仕様は、Metrics 2.0 で導入された metric タグをサポートするようになった。また、他の MicroProfile API との一貫性のために、application:
スコープは base:
スコープに置き換えられた。これは、Fault Tolerance メトリクスが、以前使用していた /metrics/application
エンドポイントを置き換え、/metrics/base
エンドポイントによって公開されることを意味する。
2016年6月27日の Red Hat DevNation カンファレンスで紹介された MicroProfile イニシアチブは、エンタープライズ Java のためのマイクロサービスを提供するベンダーのコラボレーションとして設立された。JavaOne 2016 で発表された MicroProfile 1.0 のリリースは、マイクロサービスを作成するために最小限と見なされた3つの JSR ベースの API で構成されていた。JSR-346 - コンテキストと依存性注入 (CDI)、JSR-353 - JSON を処理する Java API (JSON-P)、JSR-339 - RESTful Web サービスのための Java API (JAX-RS)。
2020年12月にリリースされた MicroProfile 4.0 は、2020年10月に設立された当時新しく結成された MicroProfile Working Group の下で提供された最初のバージョンだった。ワーキンググループには現在 Oracle、IBM、Red Hat、Tomitribe、Fujitsu、Atlanta Java User Group、Garden State Java User Group および iJUG などがメンバーになっている。
MicroProfile Working Group は現在 OpenTracing と OpenCensus プロジェクトの合流によって結成されたプロジェクト OpenTelemetry とベンダー中立なアプリケーションメトリクスファサードの Micrometer プロジェクトを、それぞれ OpenTracing と Metrics API に代わる潜在的な候補にならないか評価中だ。
編集者注記
Michael Redlich 氏は、MicroProfile Working Group のコントリビューションメンバーの Garden State Java User Group の共同ディレクターだ。