4年ぶりの新バージョン「Java EE 8」のリリースが7月に迫った。この4年で、ITを取り巻く状況は大きく変化してきた。ITを駆使したデジタルビジネスが求められる一方で、セキュリティ脅威への対策は待ったなしだ。こうした変化を踏まえ、Java EE最新版はどう進化したのか。米オラクルでJava EEおよびWebLogic Serverを担当するウィル・ライオンズ氏(Senior Director、Product Management)に聞いた。


写真1●米オラクルでJava EEおよびWebLogic Serverを担当するウィル・ライオンズ氏
写真1●米オラクルでJava EEおよびWebLogic Serverを担当するウィル・ライオンズ氏
[画像のクリックで拡大表示]

Java EE 8アップデートの目玉は何か。

 マイクロサービスの利用環境を提供するために、プロトコルやプログラミング技術の向上に最も力を入れた。マイクロサービスを使うのが業界でもトレンドになってきた。この動きを推進するには、プロトコルの標準化は欠かせない。マイクロサービスは、JavaやJava EEが対応すべき重要なトレンドだと考えている。

 プロトコルに関してはREST(Representational State Transfer)の改善、それからJSON(JavaScript Object Notation)についてAPIを整備したのが大きい。

Reactive Client APIの提供はREST改善の一環か。

 そうだ。RESTful APIはJava EE 6から入っていて、Java EE 7でClient APIが入った。今回のJava EE 8でJAX-RS (Java API for RESTful Web Services) 2.1にReactive Client APIが入った。同時に、Server Sent Eventの標準化も行った。

Reactive Client APIを使うメリットはどこにある。

 複数のマイクロサービスを組み合わせた「旅行代理店サービス」の例でメリットを説明しよう。顧客が旅行代理店サービスにアクセスし、そこからバックエンドのいくつかのサービスを呼び出し、レスポンスを顧客に戻す処理だ。

写真2●Reactive Client APIを使った「旅行代理店サービス」
写真2●Reactive Client APIを使った「旅行代理店サービス」
(出所:日本オラクル)
[画像のクリックで拡大表示]

 バックエンドの各サービスでは、履歴から顧客の好みを問い合わせ、旅の行き先を把握し、見積もり、天気予報と情報を取っていく。Java EE 8以前でも実装は可能だが、同期的なプロセスになってしまい、全ての情報が集まるまで待つ必要があった。その結果、レスポンスが遅かった。

 非同期型処理(Async Processing)を使えば、顧客がサービスをコールしたときに、コールバックを待たずに、他のサービスを呼び出すことはできる。ただし、レスポンスは速くなるが、その分、プログラミングが複雑になってしまった。

 ここでReactive Clientを使えば、旅行代理店サービスが全てのサービスをオーケストレーションできるので、以前の非同期型処理をさらにシンプルにできる。つまり、レスポンスを引き上げながら、コードもシンプルにできるのだ。

 こういったアプリはJSONやHTTP/2の恩恵などで、やり取りするスピードはさらに速くなる。