2017年5月17日、
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 開発者なのです。
Javaコミュニティの変化と進化
- ――最後に、
Javaの最大の魅力でもあるコミュニティについて、 現在の状況、 これまでの変化、 この先について教えてください。まず、 OracleがSunを買収して7年が経ちました。この間、 周囲の反応はどうでしたか? Sharat: まさにOracleの買収時点で最も懸念されたのがコミュニティに対するものでした。具体的には
「コミュニティの縮小化」 ですね。それには、 SunとOracleの企業風土の違いなどさまざまな理由があったかと思います。 しかし、
7年が経過して調べてみるとその逆でした。コミュニティは今もなお成長しています。たとえば、 世界のJavaユーザグループは104%増です。Javaチャンピオンは54%増えました。 これだけでコミュニティの成長と決めつけるのは危険かもしれませんが、
少なくとも、 ユーザグループやJavaチャンピオンなど、 企業の影響下ではない部分で、 参加者が増えていることはコミュニティの成長と言えると断言できます。 - ――とくにJavaユーザグループの増加率は目覚ましいですね。ちなみに世界各国で見た場合、
どの国・ 地域のユーザグループが盛り上がっているのでしょうか。 Sharat: 3つ挙げられます。まずは、
ここ日本です。2年前は3,000人ほどだった聞いているJJUG (Japan Java User Groups) が、 今は6,000人を超えています。日本はJava誕生から、 つねにコミュニティの成長と市場の成長が相対的に伸びている国です。 次に中国。北京のユーザコミュニティは2年前に発足したと聞いていますが、
すでに10,000人の参加者を超えているそうです。 最後にブラジルです。ここには世界最大のJUGがあり、
40,000人を超えています。 この3つだけではなく、
アメリカをはじめ、 さまざまな国・ 地域で今もなお成長しているのがJavaコミュニティです。 - ――コミュニティの成長には、
若い人材の参加が欠かせません。ところが、 たとえば、 日本の場合でもコミュニティの高齢化というのは1つの問題となっています。若い人材を集めるために、 何かアドバイスがあればお願いします。 Sharat: これは企業と同じです。コミュニティに参加することはコミットすること、
ほかのメンバーとコラボレーションすることです。ですから、 若い人材には、 コミットすることの意味を伝えることに加えて、 ほかのメンバーとコラボレーションできる魅力、 そして、 それによる学習スピードの向上という点を意識してもらえると良いのではないでしょうか。 そのためには、
若い人材自身にだけではなく、 周囲の大人たち、 たとえば、 企業にいる上司が、 積極的にコミュニティに参加させる状況や雰囲気作りをすることが大事です。そこには、 今挙げたようなメリットがあるわけですから、 社内の人材育成にもつながるはずです。 Bernard: それから、
インターネットの変化も重要です。Javaの誕生当時にはなかったTwitterやFacebookなどのソーシャルネットワークの存在は、 今の若い人材にとってはあたりまえです。Javaに限らず、 オープンソースコミュニティへの参加というのは、 若い人材にとってはソーシャルネットワークと同じような感覚があるはずです。 ですから、
そのコミュニティに参加することで誰とつながれるのか? どんな情報が手に入るのか? そういった面を、 コミュニティから発信していくことも大切です。 誤解してほしくないのは強制的に参加させるのではありません。あくまで、
参加したい人が、 興味のあるところに参加すればよいのです。 Sharat: 少しだけJavaコミュニティの宣伝をすると、
とくにOpenJDKは非常に良いコミュニティです。なぜなら扱う範囲が多岐にわたっているからです。まずは自分が興味あるテクノロジやテーマがないか、 コミュニティのサイトやメーリングリストで探してみてください。 また、
OpenJDK自体は世界各国とつながっていますから、 世界の開発者たちとのコミュニケーション、 コラボレーションを体験し、 スキルを磨くというメリットも享受できます。
日本の開発者に向けて
- ――お二人にとってもJavaコミュニティこそが、
Javaのカギを握る存在の1つであることがわかりました。最後に、 日本のコミュニティ、 開発者へのメッセージをお願いします。 Bernard: 世界に横断する開発者コミュニティはそれほど多くはありません。Javaコミュニティはその貴重な存在の1つではないかと思います。コミュニケーションを取るには、
日本の開発者には英語の壁があるかもしれませんが、 まずは参加してもらいたいです。 するとまた文化の違い、
考え方の違いによる難しさを体感するかもしれません。しかし、 そういった差異を体感することがコラボレーションのスキル向上につながります。 Sharat: Java Day Tokyoは今年で5回目を迎えました。年々参加者が増えていることは大変喜ばしいことです。私もこれからも喜んで参加したいと考えています。
先ほどの質問に上がっていた、
若者の参加について、 これはコミュニティを自分たちの身の回りに置き換えてもらうとわかりやすいはずです。つまり、 子供を育てるには村が必要だということ。コミュニティの存在が村になれば良いわけです。 その村を作っていくための取り組み、
エコシステムの拡充にこれからも取り組んでまいりたいですし、 日本の皆さんにもその一員となって協力してもらえたら嬉しいです。 - ――ありがとうございました。