4年ぶりの新バージョン「Java EE 8」のリリースが7月に迫った。この4年で、ITを取り巻く状況は大きく変化してきた。ITを駆使したデジタルビジネスが求められる一方で、セキュリティ脅威への対策は待ったなしだ。こうした変化を踏まえ、Java EE最新版はどう進化したのか。米オラクルでJava EEおよびWebLogic Serverを担当するウィル・ライオンズ氏(Senior Director、Product Management)に聞いた。
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を使うメリットはどこにある。
複数のマイクロサービスを組み合わせた「旅行代理店サービス」の例でメリットを説明しよう。顧客が旅行代理店サービスにアクセスし、そこからバックエンドのいくつかのサービスを呼び出し、レスポンスを顧客に戻す処理だ。
バックエンドの各サービスでは、履歴から顧客の好みを問い合わせ、旅の行き先を把握し、見積もり、天気予報と情報を取っていく。Java EE 8以前でも実装は可能だが、同期的なプロセスになってしまい、全ての情報が集まるまで待つ必要があった。その結果、レスポンスが遅かった。
非同期型処理(Async Processing)を使えば、顧客がサービスをコールしたときに、コールバックを待たずに、他のサービスを呼び出すことはできる。ただし、レスポンスは速くなるが、その分、プログラミングが複雑になってしまった。
ここでReactive Clientを使えば、旅行代理店サービスが全てのサービスをオーケストレーションできるので、以前の非同期型処理をさらにシンプルにできる。つまり、レスポンスを引き上げながら、コードもシンプルにできるのだ。
こういったアプリはJSONやHTTP/2の恩恵などで、やり取りするスピードはさらに速くなる。