MicroProfile 3.2 and Helidon MP 1.4 — new Maven bundles

原文はこちら。
The original was written by Tim Quinn.
https://medium.com/helidon/microprofile-3-2-and-helidon-mp-1-4-new-maven-bundles-a9f2bdc1b5eb

Helidon 1.4では新たにMicroProfile 3.2をサポートします。

Project Helidon Release Notes
https://github.com/oracle/helidon/releases/tag/1.4.0

新たなMicroProfileでの大きな変更点は、MicroProfile Metrics 2.2です。これは2.1と同じですが、1点後方互換を担保していない変更が元に戻されています。

MicroProfile Metrics 2.2 Release notes
https://github.com/eclipse/microprofile-metrics/releases/tag/2.2

TL;DR
— 既存のHelidon MPアプリケーションはHelidon 1.4で動作します。

Updating the Helidon version

既存のpom.xmlにはすでにHelidon MPの依存関係が含まれていると思います。dependencyタグ内のversionを1.4.0にしてください。

Using the same, earlier MicroProfile release

上記のとおりバージョンを1.4.0にすれば、Helidon 1.4を使い、これまで利用してきたMicroProfileリリースでアプリケーションは動作します。

Using MicroProfile 3.2

To use MicroProfile 3.2をアプリケーションで利用したい場合、既存のバンドル依存関係からMicroProfileのリリース番号を削除する必要があります(訳注:MicroProfile Starterで生成されたpom.xmlは2019/12/19時点で修正されていないようです)。

<dependency>
  <groupId>io.helidon.microprofile.bundles</groupId>
  <artifactId>helidon-microprofile</artifactId>
  <version>1.4.0</version>
</dependency>

Helidon MPバンドルのアーティファクトに3.2というバージョン番号を持つものはありません。helidon-microprofileバンドルはHelidon 1.4でMicroProfile 3.2をサポートします。

Looking ahead

上記以外に変更する必要がないけれども、pom.xmlファイルを変更してアプリケーションを最適化し、将来のHelidonの準備をしようと思ってらっしゃるかもしれません。

以下にその理由をまとめます。

Moving to a new bundling approach

Background

全てのHelidon MPリリースには(1.4も含めて)、様々なMicroProfileのリリースに対応するバンドルが含まれています。例えば、アプリケーションのpom.xmlにio.helidon.microprofile.bundles:helidon-microprofile-2.2への依存関係が含まれている場合、MicroProfile 2.2のAPIとそのAPIのHelidon実装を利用できます。番号付きの各バンドルには、当該リリースのMicroProfileに対応するHelidon MPの全てのアーティファクトが含まれています。

Technology-focused, not version-focused, bundles

Helidon 1.4から、番号付きのMicroProfileバンドルを廃止しています。Helidon 1.4にはまだMicroProfile 3.0までのMicroProfileリリースのバンドルが含まれていますが、1.4以後で番号付きのバンドルを除去する計画です。[1]

Instead you 代わりに、2つのHelidon MicroProfileバンドルのいずれかを選択します。これは、MicroProfileリリースではなく、MicroProfileテクノロジーのセット(コアバンドルとフルバンドル)に関連しています。Helidonの各リリースでは、これらのバンドルはその時点で最新のMicroProfileリリースをサポートします。Helidonリリースノートでは、サポート対象のMicroProfileリリースを常に明確にしています。

Helidon MP core bundle

新たなコアバンドルには、最もシンプルなマイクロサービスであるHelidon MPサーバー、JAX-RS、CDI、JSON、およびMicroProfile configを実行するための最低限のものが含まれています。アプリケーションのpom.xmlファイルで次の依存関係を使用し、コアバンドルを利用します。

<dependency>
  <groupId>io.helidon.microprofile.bundles</groupId>
  <artifactId>helidon-microprofile-core</artifactId>
  <version>1.4.0</version>
</dependency>

アプリケーションが別のMicroProfileテクノロジーを使っている場合、特定のHelidon MPモジュールに対応する依存関係を追加してください。例えば、コアバンドルに含まれないmetricsのサポートを追加する場合、コアバンドルに対応する依存関係にmetricsの依存関係を追加してください[2]。

<dependency>
  <groupId>io.helidon.microprofile.bundles</groupId>
  <artifactId>helidon-microprofile-core</artifactId>
  <version>1.4.0</version>
</dependency>
<dependency>
  <groupId>io.helidon.microprofile.metrics</groupId>
  <artifactId>helidon-microprofile-metrics2</artifactId>
  <version>1.4.0</version>
</dependency>

多くの開発者がまずはコアバンドルからはじめ、その後、アプリケーションが必要とする特定の追加対象の依存関係を加えていくと考えています。これにより、各アプリケーションの依存関係が明確になるため、フットプリントが軽くなることが期待されます。

Helidon MP full bundle

別の方法として、古いスタイルの番号付きバンドルと同様に、Helidon MPアーティファクトをすべて含むフルバンドルを使うこともできます。この依存関係をpom.xmlに追加できます。

<dependency>
  <groupId>io.helidon.microprofile.bundles</groupId>
  <artifactId>helidon-microprofile</artifactId>
  <version>1.4.0</version>
</dependency>

フルバンドルのArtifact IDはhelidon-microprofileであり、接尾辞はつきませんのでご注意ください。

フルバンドルにはすべてのHelidon MPアーティファクトが含まれているため、MicroProfileテクノロジーを使用する上で他の依存関係を追加する必要はありません。開発者にとっては、フルバンドルを使用する方が少し簡単ですが、アプリが実際に使用するテクノロジーを見事に隠すため、例えばDockerイメージが大きくなる可能性があります。

How does this help developers?

ここまでのアプローチで、Helidon MPバンドルの番号付きのArtifact IDを使う場合、より新しいMicroProfileのリリースを使いたい開発者はpom.xmlを2カ所変更しなければなりません。

  1. Helidon MP バンドルの<version>を変更する(例:1.3.1から1.4.0へ)
  2. Helidon MP バンドルの<artifactId>を変更する(例:helidon-microprofile-2.2 から helidon-microprofile-3.0)

Helidon 1.4以後では、Helidonのバージョンだけ変更すればよくなります。あとは自動的に対応するMicroProfileのAPIと実装(通常はその時の最新)を取得します。

このしくみは、ほとんどの開発者の動きと一致するものと考えています。Helidonの新しい実装を採用する場合、通常、現在のMicroProfile APIとテクノロジーに移行することも必要になるからです。

Any drawbacks?

Helidon 1.4以後、古いMicroProfileリリースを使用するには、そのMicroProfileバージョンをサポートする対応する古いHelidonリリースを使用する必要があります。このやり方の場合、Helidonをアップグレードする方法は提供しないかわりに、MicroProfileの古いリリースで固定します。

後続のMicroProfileリリースに後方互換性がある限り、古いMicroProfile APIで記述したアプリケーションは、新しいMicroProfileおよびHelidonリリースでも引き続き動作しますが、将来のMicroProfileリリースに互換性のない変更が含まれる場合は、最新のHelidonリリースを採用するために、それに応じてアプリを修正する必要があります。


[1] 実際には、MicroProfile 3.1用のバンドルもありますが、前述のMicroProfile Metrics 2.1の問題のあるAPIの変更に依存するため、このバンドルは使用しないでください。
[2] ところで、Helidon MPのmetricsのアーティファクトIDの”2″は重要です。というのも、Helidonは現在、MicroProfile Metrics 1と2の両方をサポートしているのですが、両Metricsのバージョン間にあるAPIの非互換性ゆえ、開発者の移行の利便性のために2を付けています。
Helidon 1.4の場合は、metrics2アーティファクトを使用して、最新のmetrics APIと実装にバインドしてください。将来のメジャーリリースで、metrics2をやめる予定です。今後のMetricsに対応するアーティファクトは再びmetricsに戻る予定です。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中