2017年5月17日,
米Oracle, Vice President, Software DevelopmentのBernard Traversat氏
米Oracle, Director, Java Product Management/
Java SE 9の特徴
- ――まず,
お二人の経歴について簡単に教えてください。 Sharat Chander氏
(以降Sharat): 私は元々Verizon Communications Inc.に在籍しており,1996年にJava 1. 0の開発に関わりました。そして2000年にSun Microsystems, Inc.へ所属, その後, 同社の買収に伴いOracleに在籍しています。 Javaにはもう20年以上関わっており,
現在の大きな自分の役割の1つはJava開発者のエコシステムを拡大することです。JavaOneのコンテンツ開発責任者も担っています。 Bernard A. Traversat氏
(以降Bernard): 1994年からSun Microsystems, Inc.に在籍しています。古くはSolaris(旧SunOS), その後のJavaOSにも関わり, 20年間ずっとJavaの開発分野に在籍しています。現在は, Java Platform Groupに所属しています。 - ――いよいよリリースが夏に迫ってきたJava SE 9ですが,
改めてその特徴について教えてください。 Bernard: Javaは誕生から20年の間,
モノリシックな構造でした。それが年々開発が進み, RunTimeに合わせてコンパクトになり, Java SE 9では, より一層 「モジュール化」 という点に注力したリリースとなります。モジュール化することで, 高いセキュリティの確保も実現できます。 新機能の中でとくにおすすめしたいのは
「JShell」 です。 21世紀に入り,
Webアプリケーションの浸透からスクリプト言語のシェアが拡大しています。こうした背景に合わせて, 言語のシンタックスなども心配せずにJavaを使えるための機能として追加されるのがJShellです。 JShellはREPL
(Read, Eval, Print, Loop) の仕組みに基づいた実行環境で, とくにこれからプログラミング言語を学ぶ大学生や新社会人といったエントリ層に向いていると言えます。ほかのスクリプト言語と同様に, 記述の簡便さが特徴の1つです。 Sharat: 従来のJavaプログラミングモデルに慣れていない方に最適な,
今の時流に合った機能が加わったと言えるでしょう。 Bernard: JShellのユニークなところは,
スクリプト言語の特徴でもある動的な機能だけではなく, 静的な言語としても扱える点です。実行環境の準備が手軽になった反面, 言語記述はJavaを活用できるため, これまでJavaに慣れた方にとっても新たな学習コストをかけなくても済むのです。 - ――JShellはお二人から見てもイチオシの新機能ですね。ところで,
Java SE 9ではもう1つ 「Jigsaw」 への注目が高まっています。 Sharat: はい。Jigsawへの注目,
そして期待については私たちも十分感じております。現時点で具体的なコメントはないのですが, リリースされたバージョン, それがJava SE 9ですので, まずはリリースをご期待ください。ロードマップはあくまでロードマップ, 最終的にはリリースされたものが正式バージョンとなります。 Jigsawに限らず,
OpenJDKのメーリングリストに参加していただくとJavaにまつわる最新の開発動向がわかります。ぜひインタビューをお読みの読者の方にもおすすめします。 - OpenJDK
- http://
openjdk. java. net/
Java SE 9と旧バージョンとの互換性について
- ――ところで,
聞き飽きた質問かもしれませんが (笑), 新機能リリースとなると, 特徴や強みに関することに加えて, 古いバージョンとの互換性, いわゆる下位互換についても質問が上がるのではないでしょうか。 Bernard: はい。よく聞かれます
(笑)。 ご存知のとおり,
Javaは登場して20年, つねに下位互換は意識して開発されてきました。そして, その面が優れていることも20年間使い続けられるプログラミング言語であるというのが答えの1つです。 実際にはTCK
(Test Compatibility Kit) を使って互換性テストを行っています。 Javaには多数のパブリックAPIセットが用意されており,
APIによっては古いバージョンのみの対応で使用禁止の場合があります。しかし, それを回避するためのものとして, Java Encapsulation (カプセル化) 機能があります。カプセル化の強化により, リリース間での最適化がしやすくなっています。カプセル化の機能を利用するだけでも, Java SE 9にバージョンアップする価値はあるでしょう。 Sharat: また先ほどの繰り返しになりますが,
Java SE 9の特徴の1つのモジュール化を最大限に利用すると, 開発したアプリケーションサイズをよりコンパクトに実現できるため, その後の, さまざまなリソース削減にもつながります。
Java SEの位置付け
- ――Java SE 9が大変魅力的なリリースであることがわかりました。ここで少し本質的なことについて伺います。現在,
IoTといったキーワードが流行っているように, さまざまなデバイスやアプリケーション, サーバ, ネットワークが密に連携し, その結果としてシステムが構成されています。こうした複雑化した時代において, 改めてJava SEの位置付けを教えてもらえますか。 Bernard: 良い質問ですね。
少し歴史からお話します。ご存知かもしれませんが,
Sunの時代, そして, OracleになってからもJVMを1つのものにできないか, という要望は多くの利用者, 開発者から上がってあり, 企業として, また, 開発コミュニティとして課題としてきました。一方で, その利用環境は指のサイズの小さなデバイスから, ペタバイト級のサーバシステムまでさまざまです。 利用環境は年々多様化,
複雑化しています。こうしたテクノロジー, デバイスの進化を鑑みて, 生まれたのがJava ME/ Java SE/ Java EEです。ご質問に上がったIoTというのは, まさにそれらをすべてまとめたものではありますが, Java開発コミュニティにおいては, 開発者に, 自分たちが対象とするデバイスやシステムに合わせた開発環境を選択してもらえるようにする, そのための区分として存在します。 Sharat: ですから,
IoT時代と言われるようになっても, やはり, 何のためのアプリケーションなのか, どのシステムに最適なものを開発するのか, 開発者自身が選択できる状況として, ME/ SE/ EEがあるわけですし, それに合わせたものを選んでもらえればと思います。 ただ,
誤解を招きたくないのは, Java ME開発者, Java SE開発者, Java EE開発者がまったく違う言語や環境の開発者ではないということです。全員がJava 開発者なのです。