BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Helidon2.0で計画されている重要な新機能

Helidon2.0で計画されている重要な新機能

原文(投稿日:2020/04/23)へのリンク

Helidon 1.0の公式リリースから1年も経たないうちに、Oracleは2020年春の終わりに予定されているHelidon 2.0の公式リリースに向けて順調に進んでいる。Helidon 2.0.0-M1 は、2月上旬にリリース、Helidon 2.0.0-M2 は、3月下旬にリリースされ、次のような重要な新機能のJavaコミュニティプレビューを提供した。リアクティブメッセージングとストリームのサポート、新しいコマンドラインツール、Helidon SE用の新しいWebクライアントAPI、Helidon MP用のGraalVMサポート、および新しいリアクティブデータベースクライアントである。

Helidon 1.0.3のリリースで導入されたGraalVMのサポートは、Helidon SEアプリケーションでのみ利用可能だった。Helidon MPアプリケーションは、CDIの中でリフレクションを使用しているため、GraalVMを利用できなかった。Javaコミュニティから最も要望の多かった機能の1つとして、Helidon 2.0.0-M1は、Helidon MPアプリケーションをGraalVMを使用してネイティブの実行可能コードに変換するためのサポートを導入した。Oracleの技術スタッフのコンサルティングメンバーであるTomas Langer氏は、この新機能をプレビューするために、Javaコミュニティ向けにこのデモアプリケーションを作成した。

オリジナルの3個の中核のHelidon SE API (Web Server、Configuration、Security) を補完するために、新しいAPIであるWeb ClientがHelidon SEのセットを完成させる。Web Clientは、指定されたエンドポイントに関連するHTTP要求と応答を処理する。Web Server APIと同様に、Web Clientもapplications.yamlファイルを通して構成できる:

    
server:
  port: 8080
  host: 0.0.0.0

client:
  connect-timeout-millis: 2000
  read-timeout-millis: 2000
  follow-redirects: true
  max-redirects: 5
  headers:
    - name: "Accept"
        value: ["application/json","text/plain"]
  services:
    exclude: ["some.webclient.service.Provider"]
    config:
      metrics:
        - methods: ["PUT", "POST", "DELETE"]
          type: COUNTER
          name-format: "client.counter.%1$s.%2$s"
    

WebClientインターフェイスのインスタンスが作成され、プレーンテキストを返すように応答が定義されている小さな例を考える:

    
WebClient client = WebClient.builder()
        .baseUri("http://localhost")
        .build();

CompletionStage<String> response = webClient.get()
        .path("/endpoint")
        .request(String.class);
    

JSONを返すように応答を変更するには、JsonProcessingクラスのインスタンスを作成し、response変数の定義を変更するだけである:

    
JsonProcessing jsonProcessing = JsonProcessing.create();
CompletionStage<JsonObject> response = webClient.get()
        .path("/endpoint")
        .register(jsonProcessing.newReader())
        .request(JsonObject.class);
    

設計上リアクティブではないJDBCデータベースに接続するリアクティブアプリケーションに関連した課題に対応するために、Helidon 2.0.0-M1は、Helidon SEアプリケーションに一貫したリアクティブデータベースアクセスとクエリを提供する新しいDB Clientを導入した。DB Clientは、JDBCおよびMongoDBのリアクティブドライバを通して接続するリレーショナルデータベースをサポートする。この新しいAPIは、データベース接続を指定し、構成ファイルにネイティブクエリコードを書き込む機能を備えているため、コードを再コンパイルしなくてもデータベース関連の変更を簡単に行うことができる:

    
db:
  source: "jdbc"
  connection:
    url: "jdbc:mysql://127.0.0.1:3306/pokemon?useSSL=false"
    username: "user"
    password: "password"
    poolName: "mysql"
  statements:
    ping: "DO 0"
    select-all-pokemons: "SELECT id, name FROM Pokemons"
    

DB Clientでのメトリック、ヘルスチェック、およびトレースのサポートも含まれる。Helidonチームは、この新機能をプレビューするために、Javaコミュニティ向けにこのデモアプリケーションを作成した。

Helidon 2.0.0-M2を導入した開発者は、新しいHelidon CLIツールを使用して、コマンドラインからHelidonアプリケーションを作成、構築、および実行できるようになった。Quarkus (quarkus:dev) が提供するホットリロードと同様に、組み込みの開発ループはソースファイルを監視し、ソースコードが変更されるとアプリケーションの再起動をトリガーする。個別のダウンロードとインストールが必要である。インストールにより、使用可能なコマンドラインオプションを以下に示す:

非同期メッセージングは、マイクロサービスアプリケーションの不可欠な部分である。そのために、MicroProfileスタンドアロンAPI、Reactive MessagingおよびReactive Streams Operatorsの実装がバージョン2.0で導入される。両方のAPIは、Helidon SEおよびHelidon MPアプリケーションで使用できる。ただし、Helidon MPで使用できるのはReactive Messagingのみである。Helidon SE APIとの整合性を高めるために、同等のReactive Messaging APIが将来のリリースで計画されている。Helidonは、Kafka for Reactive Messagingもサポートし、将来のリリースで追加のコネクタが計画されている。

Javaコミュニティは、Helidon 2.0の最終リリースでいくつかの重大な変更を期待できる。特に、Java 8のサポートが終了し、JDK11がHelidonアプリケーションの構築に必要な最小のJavaバージョンになる。一部のHelidonパッケージも削除され、java.utiljava.lang、およびjava.ioにある対応するパッケージが優先される。Helidon 2.0でのすべての変更の詳細は、変更ログに記載されている。

リソース

この記事に星をつける

おすすめ度
スタイル

BT