2015年5月、
Javaのターニングポイントはいつか?~1995年からの20年
今から20年前の1995年、
この20年を振り返ってみて、
Georges
(以後 G) 氏:1つに絞るのは難しいですね。いくつかあったと思います。まず、
誕生初期。Netscapeブラウザに同梱したタイミングは1つのターニングポイントだったと言えるでしょう。当時は画期的とも言えるネットサーフィンという行動に対して、 そのツールに同梱することで多くのユーザに届けることができました。結果として、 技術がユーザに馴染むことができたと考えています。 2つ目はエンタープライズ分野への進出、
いわゆるJava EE (Enterprise Edition) が誕生したときです。1996~1997年ごろからサーバサイドでJavaが使われるようになり、 ServletやJSPと言った技術が生まれました。その後、 サーバサイドJavaをさらに活用すべく生まれたのが当時のJ2EE (Java EEの前身) です。 そして3つ目がエンタープライズ分野とは異なる方向性の、
モバイル端末向けのJava、 Java ME (Mobile Edition) が生まれたときでしょう。Java ME (当時のJ2ME) の普及に関しては、 ここ日本市場の影響も大変大きかったことを覚えています。携帯電話での採用が進み、 多数のユーザ使うための技術として浸透し、 そして、 アプリケーション開発が進みました。
このように、
G氏:言語として基礎的な部分の開発や進化とは別に、
プラットフォーム (環境) としてのJavaの進化も忘れてはいけません。なぜ、 Javaがプラットフォームとして認知され普及したかというと、 その要因の1つは 「開発モデルの進化」 があります。 Javaはオープンコミュニティの中で、
1社独占ではなく、 たくさんの開発者、 たくさんの企業が関わって開発されてきました。それを取りまとめているのがJCP (Java Community Process) です。中でも2000年のJavaOneで発表されたJCP 2. 0以降、 Javaの標準化プロセスがJCPに一元化されたことが大きいと思います。そして、 OpenJDKおよび開発コミュニティの誕生、 Sunから引き継いだOracleの存在も大きいでしょう。 何より、
コミュニティの関心がつねに高く、 Javaコミュニティが在り続けることが、 今のJavaを支えています。
Georges SaabとJavaの関係
Georges氏にJavaの20年をJavaの観点で振り返ってもらいました。続いて、
G氏:とにかく楽しい。楽しめる存在です。また、
今の段階で思うのは人気のある言語で良かったと思っています (笑)。 私がJavaに関わり始めたのはJava 1.
1のころ、 まだ開発者が30名ぐらいの時期でした。そこから現在のバージョン8まで、 つねに最も近いところで開発と進化を見られたというのは嬉しいですね。 また、
自分自身にとって20年間、 Javaで仕事を得られていることに感謝しています。Javaを通じてすばらしい開発者やクリエイターたちと世界中で交流でき、 また、 技術だけではなく、 たとえば金融や航空宇宙といった (Javaを使う) 異分野の世界に触れられることも嬉しく思っています。 私にとって、
技術としてのJavaはつねに魅力的な存在です。
ほぼ20年間、
G氏:Javaに触れる前は別のプログラミング言語を使っていました。たとえばProlog
(論理型言語の一種) やLispです。LispはVMの開発も行っていました。とくにPrologに関しては、 自分に近い背景、 考え方の人が多く、 初期のJVM (Java仮想マシン) 開発者の多くはPrologに触れていたように思います。 Javaの開発に関わってからは他のプログラミング言語はもちろん見ますが、
自分の興味は 「プログラミング言語の進化を見ること」 だったので、 その点ではJava一辺倒でしたね。 ただ、
Java一辺倒ではありながらも、 他の言語に触れる機会もたくさんあります。それはJVM上で動く、 さまざまな言語が生まれ、 普及しているからです。もう7年ほどになりますが、 JVM上で動くプログラミング言語をテーマにした小規模な技術カンファレンスも開催しています。そこでは、 各種プログラミング言語の開発者たちが一同に集まって、 JVM上で動く言語について議論し意見交換を行います。 ですから、
他のプログラミング言語へ移ることなく、 (Javaを中心として) 探究的な活動ができているというのも、 Javaを選んでいる理由の1つかもしれません。
Javaとコミュニティ
Javaの歴史は開発コミュニティと表裏一体と言っても過言ではありません。これは聞き手の主観ではありますが、
Georges氏には、
G氏:
(熱量がすごいとの発言に対して) ありがとうございます。大変嬉しいコメントです。そして、
私もそのコメントに同意します。 なぜJava開発コミュニティの熱量が大きいのか――それは、
Javaが問題に対する解を提供できうる技術だからです。Javaを使うことで開発者・ クリエイター自身のクリエイティビティを具現化し、 花開かせることができる技術だからだと思っています。 加えて、
先ほどもお伝えしたとおり、 JCPの存在を中心に、 複数の企業が関われる体制、 民主的なプログラミング言語であることも大きな理由の1つでしょう。
Javaはファット(複雑な)プログラミング言語になってしまったのか
開発コミュニティの熱量を増やしながら、
G氏:まず、
言語仕様としてのJavaとプラットフォームとしてのJavaという考え方は、 開発当初から存在していました。それはプログラミング言語として、 コードと実行環境の切り分けという観点で、 です。開発者の立場としては、 この2つは区別するものではなく、 どちらも (並行して) 意識するものだと思います。 プラットフォームとしてのJava、
つまりJVMに関しては、 JVMをターゲットにした他のプログラミング言語が増え、 そして利用されています。ですから、 JVMの面に注目が集まっていた時期もあったでしょう。 Javaの歴史で見ると、
JVMのインプリメンテーションが進んだ結果、 Javaの言語仕様にまつわる進化は鈍化した時期があったと思います。 しかし、
バージョン7リリース前後あたりから、 Fork-Join、 Lambdaなど、 バイトコードの機能追加 (言語仕様の進化) といった動きが見られはじめ、 その動きは加速しています。 2015年のJavaで見れば、
(もともとの質問であった) 言語仕様/ プラットフォームとしてのJavaについて、 理解が深まり、 補完が強まっていると感じています。
バージョン9に向けて~Javaの次の一歩
Javaの20年、
G氏:
(次期バージョンについては) 開発者たちが一生懸命取り組んでいますので、 焦らず期待していてください (笑) 具体的なところで私が注目しているのは
「Modular Source Code」、 JDKのソースコードのモジュール化です。コードが機能ごとに小さくなり、 コード間の依存が簡易化します。また、 目的に応じた組み合わせをつくることにより、 バイナリのフットプリントを小さくでき、 さまざまなデバイスへの適用、 パフォーマンスの向上が期待できるでしょう。 その他、
Print Loopの再開発が進められていて、 開発テストがより簡単になることでしょう。 まだまだたくさんありますが、
今、 IoTと言われているトレンドに対して、 Javaは小型デバイスからクラウドまで、 すべての環境で完璧に使えるプログラミング言語に進化し続けています。
日本の開発コミュニティに向けて
短い時間ではありましたが、
G氏:まず、
改めてありがとうと言わせてください。Javaの20年において、 日本の開発者の皆さん、 開発コミュニティの存在はとても大きく、 多大な貢献をしてくださいました。日本発のものもたくさん存在しています。 継続して関わっていただけることに感謝するとともに、
これからもぜひ積極的にJavaに関わって開発を続けてください。 もしまだ開発したことがない、
触れたことがないという方がいらっしゃれば、 たとえばJJUGのようなコミュニティに参加して、 Javaの魅力に触れてみてください。