SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

新環境に適応して変化し続けるJava、Dockerコンテナ対応やマイクロサービスをサポートするプロジェクトなど【Oracle Code One 2018】

Microserviceのためのライブラリ、仕様、VM:helidon, microprofile, graalvm

 Code Oneで毎年、Java関連技術の顕著なイノベーションに対して贈られるDuke's Choice Awardという賞があります。これを、今年同時に受賞した「Helidon」と「MicroProfile」というプロジェクトがあります。この2つはともに、近年注目されるマイクロサービスアーキテクチャ(micorservices architecture)に基づくアプリケーションをJavaで開発する上で注目される動きです。また、「GraalVM」も、今後マイクロサービスにおいて重要となると思われる新しい言語実行基盤です。以下ではこの3つに注目し、関連セッションをご紹介したいと思います。

 まず、マイクロサービスアーキテクチャに基づくアプリケーションをJavaで開発するためのライブラリHelidonのセッション(Helidon: Java Libraries for Writing Microservices [DEV5539])をご紹介します。

Helidonの発表(DEV5539)と発表者のJoe Dipol氏(氏の画像は同発表の動画より)

Helidonの発表(DEV5539)と発表者のJoe Dipol氏(氏の画像は同発表の動画より)

 Helidonは、マイクロサービスアプリケーションが必要とする機能、例えばリトライやタイムアウトといったフォールトトレランスな挙動、ヘルスチェック、認証といったようなことをサポートします。また、リアクティブなWebサーバを構築するフレームワークも提供します。

 前者は主に、Eclipse MicroProfileによる基本的な基盤定義のインプリメンテーションとして作られ、また、後者は主に、Java 9から導入されたReactiveなFlow APIを使い、Nettyのベース上に作られています。前者は「Helidon MP」、後者は「Helidon SE」と呼ばれる異なるエディションとなっていて、この2つは、Helidon SEの上でHelidon MPが動作する関係にあります。

 ところで、Helidon MPの基礎となるMicroProfileは2016年にEclipseのプロジェクトとなって以来、ThorntailやApache TomEE、WebSphere Libertyなどの主要な実装に採用されています(参考)。このたびのOracleによるHelidonの登場により、MicroProfileは、Javaによってマイクロサービスアーキテクチャにもとづくシステム構築を行う際の基本基盤定義として、重要な存在になりつつあると言えるかもしれません。

 現在Helidon MPはMicroProfile 1.2までに対応済みであり、これは今後MicroProfile2以降へ対応してゆく予定とのことです(現在のMicroProfileの最新版は2.1)。

MicroProfileの説明スライド
MicroProfileの説明スライド

 またHelidonは今後、GraalVMという新しい言語実行基盤との統合も予定されています。つぎはこのGraalVMについてのセッション(GraalVM: Vision and Roadmap [DEV5580])をご紹介します。

 GraalVMは、高速、多言語対応などを目指した新しい言語実行基盤です。少ないリソース使用量で高速に起動し、JavaとJavaScript、Ruby、Rを組み合わせて使用するができ、さらにCのようなネイティブ言語も実行できます。また、各言語横断的に使用できる各種ツールがあるなど、多言語での開発に適した様々な工夫がなされています。

GraalVMの発表(DEV5580)と発表者のOleg Selajev氏
GraalVMの発表(DEV5580)と発表者のOleg Selajev氏

 このセッションでも紹介されていた「Top 10 Things To Do With GraalVM」に、GraalVMの特色が良くまとめられているので、ぜひこちらもご参照ください。

 なお、GraalVMは、現在のJava VMの基本をなすHotSpot VMの上に、新たなJIT CompilerであるGraalが載る構成となっています。従って現在のJava VMと基本となる部分はほぼ共通であり、また、Java VM上にも従来のJITコンパイラであるC2と並んでGraalが搭載されています。そのため、Java 11でプログラムを実行するときに、オプションを指定することでGraalコンパイラを有効にして動作させることもできます。

OpenJDK11でGraalを有効にするオプション(HOL5576より)
$ java -XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-XX:+UseJVMCICompiler \
-jar target/benchmarks.jar -prof gc

 このように現在のJava VMと密接な関係にあるにも関わらず、あえて別のVMとした理由ははっきりとは示されませんでしたが、GraalVMがHeridonと統合されることからわかるように、GraalVMは、マイクロサービス向けに特化したVMとしてイノベーションを積極的に取り込んでゆく可能性がありそうです。一方でJava VMは、既存のユーザーとの関係を保ちつつ、可能な限り変化を加えてゆくような棲み分けをすることが考えられます。

次のページ
その他、コミュニティイベント

この記事は参考になりましたか?

イベントレポート連載記事一覧

もっと読む

この記事の著者

Oracle Code One 2018レポートチーム(Oracle Code One 2018レポートチーム)

坂本 統(NTTコムウェア)、二ノ方 一生(NTTデータ)、髙雄 慎二(NTT)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11243 2018/12/06 13:59

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー