SmallRye の使われ方について

MicroProfile 実装のひとつ "SmallRye" https://smallrye.io は、様々なランタイムで使用されているというが、各ランタイムでどのように組み込まれ使用されているか、ちょっと覗いてみました。
0
HASUNUMA Kenji @khasunuma_

1/7 MicroProfile実装 SmallRye smallrye.io の使われ方について、ちょっと覗いてみた。Quarkus、Thorntail、WildFly、Open Liberty に含まれていると標榜しているので。

2020-02-11 22:40:53
HASUNUMA Kenji @khasunuma_

2/7 Open Liberty github.com/OpenLiberty/op… は SmallRye の Reactive Streams/Messaging を使っている。それ以外の、例えば MP Config などは Liberty が独自に実装している。

2020-02-11 22:40:54
HASUNUMA Kenji @khasunuma_

3/7 Helidon MP github.com/oracle/helidon は MP OpenAPI 実装として SmallRye を採用している。それ以外はおそらく Helidon 独自だが、Config などは Helidon SE と共有しているので少々追いにくい。

2020-02-11 22:40:54
HASUNUMA Kenji @khasunuma_

4/7 Thorntail github.com/thorntail/thor… と WildFly github.com/wildfly/wildfly の MicroProfile 実装は SmallRye で、かつ SmallRye Rest Client 最新版の実装は RESTEasy (の Client API 実装)―と書くとややこしいが、雑に言うと SmallRye は Red Hat の MicroProfile 実装。

2020-02-11 22:40:54
HASUNUMA Kenji @khasunuma_

5/7 Payara Micro/Server github.com/payara/Payara 本体は SmallRye のコードを一切使用していない。ただし、テスト側では SmallRye Config を使っている。理由は Payara の MP Config 実装はカーネルの奥深いところに存在していて単独動作しないから。

2020-02-11 22:40:55
HASUNUMA Kenji @khasunuma_

6/7 SmallRye 自体はライブラリ github.com/smallrye なので単独では動作せず、何らかのランタイムに組み込まれることが前提となっている。 最低限 CDI / JAX-RS / JSON-P / JSON-B とブートストラップを用意すれば、それに SmallRye を載せて MicroProfile のランタイムが作成できる。

2020-02-11 22:40:55
HASUNUMA Kenji @khasunuma_

7/7 最後に、Quarkus は Extensions で SmallRye を取り込むことができるので、MicroProfile コミュニティが開発した API が使用できる(ただし MicroProfile 準拠ではない)

2020-02-11 22:40:56
HASUNUMA Kenji @khasunuma_

>MicroProfile 準拠ではない Quarkus は CDI を完全実装できていないが、MicroProfile の必須 API には CDI が含まれている、というのが理由。 今まさにそのことで揉めているため、これ以上の言及は避けます。 twitter.com/khasunuma/stat…

2020-02-11 22:45:21