今から20年前の1995年,1つのオブジェクト指向言語のベータ版が登場しました――それがJavaです。この20年の間,インターネットやITの分野は大きく変化し,さまざまな変化を遂げています。その間,つねに中心技術の1つとしてたくさんの開発者に利用され,また,さまざまな利用シーンで活用されるJava。21年目を迎える2015年はどのような姿に変わり,何を生み出していくのか? 今回,日本オラクル株式会社でJava エバンジェリストを務める寺田佳央氏にご協力いただき,これまでの20年間を振り返りながら2015年のJavaを展望してみます。
登場からネットを意識していた言語,Java
Java 1.0ベータ版がリリースされたのは1995年です。1995年と言えばWindows 95が登場し,これから家庭でもコンピュータが使えるようになる!という,IT革命の黎明期でもありました。しかし,当時はまだ,現在のようにインターネットありきのコンピューティングではなく,あくまで目の前にあるクライアント端末としてのコンピュータとしての特徴が強く,これからインターネットの世界に踏み出していこうという時代でした。
そんな中,Javaは,「Write once, run anywhere」のコンセプトで開発され,インターネット,とくにWeb環境で動かすことを最重要視して開発された言語でした。このように,インターネットが一般的にはまだほとんど浸透していない時代から,“ネット”を意識していたことが,現在のIoT(Internet of things)と呼ばれる,すべてのデバイスがつながりはじめた時代でも注目され,利用されていることの裏付けと言えるでしょう。
この点に関して,寺田氏は「当時の開発元であったSun Microsystems, Inc.が掲げていた“The network is the computer.”の考え方がそのままJavaにも引き継がれていたことは大きなポイントだと考えています。Javaの父,James Gosling,そしてBill Joyの考えが強く反映され開発が進んでいたからでもあります」と振り返りました。
言語仕様の進化,基盤を支える言語
また,Javaの魅力は言語としての特徴だけではなく,さまざまな技術の基盤となる実行環境としての性能の高さが挙げられます。「Javaの最初の10年は,当時のほかの技術の進化スピードに合わせるべく,さまざまな機能追加や改善が行われました。一方でここ10年,とくに直近の数年で見ると,過去に比べての新機能の数や(目に見える形での)改善というのは少ないかもしれません。これは裏を返せば成熟期を迎えているとも考えられます」と寺田氏は説明しました。
さらに「また,バージョンアップを続けるだけではなくて古いバージョンへのサポート,いわゆるバックワードコンパチビリティがしっかりしている点もJavaが20年間,つねに使われてきている理由だと感じています」と続けました。
たしかに,技術の進化というのは向上していくことも大事ではありますが,一方で,それまでの資産を無駄にしないことも大切です。Javaは過去の資産も活かせるような進化を遂げてきている言語と言えます。
また,寺田氏自身が個人的にJavaを気に入っている点として「実行環境としての役割」を挙げました。すなわち,JavaVMの存在です。
「プログラミング言語というのは(当然ですが)言語仕様があり,開発者にとってコードが書きやすい,生産性が高い,メンテナンスしやすいといった点に注目が集まり,評価されます。私自身もそれはとても大事だと思っています。しかし,Javaの場合,言語仕様の側面だけではなく,実行環境としての側面,つまりJavaVMがあることが大きな特徴であり,また,20年間,開発者に愛され使われ続けているのではないかと思っています」(寺田氏)。
2015年のJavaの押さえどころ
Javaのコンセプトと魅力を振り返ったところで,今年のJavaの注目ポイントについて移りましょう。今年のJavaのポイントは,
それぞれの普及にあると,寺田氏は説明しました。Java SE 8は2014年に,Java EE 7は2013年に正式リリースされ,さまざまな情報や各種勉強会などで取り上げられてきています。2015年は,開発者自身がこれらの技術に触れ,実際にコードを書いた次のステップとして,実運用として利用が高まっていく,こういう動きが注目すべきところだということになります。
それぞれについて特徴とポイントを簡単に説明しましょう。
Java SE 8
Java SE 8は2年半ぶりとなるJava SEのメジャーバージョンアップで,大きな特徴として
が挙げられます。Lamda式とは,関数型インターフェースのメソッドを実装できるもので,処理の実装を簡潔に綺麗に書いていくことができます。そして,Lamda式をさらに活用しやすくなるのがStream APIです。Stream APIはデータの動きを抽象化するもので,多様で複雑なデータ処理を完結に表現できます。
その他,寺田氏がとくに2015年注目しておきたいJava SE 8の機能として「Date and Time API」を挙げました。名前のとおり日付を扱うAPIで,これまで人間にとってわかりづらい記述をしなければならなかった実装を,このAPIを使えば,人間が直感的にわかりやすい表記が行えるようになります。また,ISO 8601という国際標準規格に則っている点も押さえておきたいポイントです。
Java EE 7
次に,Java EE 7は2013年7月にリリースされ,すでに次のバージョン8の開発は進んでいます。しかし,エンタープライズの世界では,まだまだ7の普及率が低く,2015年は7がもっと浸透していくことが予想されます。
そのカギを握るのがCDI(Contexts and Dependency Injection)です。これは,汎用化されたDepencency Injectionをアプリケーションから利用できる技術で,6から仕様に追加されました。現在の7になり,CDIがEJBと同等の機能を持ち始めてきていることもあり,既存の開発スタイルを踏襲しながら,軽量開発を行っていけるという観点から7以降のカギになると見られています。
この他,最近のエンタープライズJavaは,フロントエンド開発をきちんと支えられるかどうかに注目が集まっており,とくにHTML5との連携が重要なポイントなっています。7では,クライアントAPIやフィルタなどを含むJAX-RS 2.0が含まれていることからも,RESTアーキテクチャによる開発効率が格段に高まりました。結果として,フロントエンドを支える技術としてのJava EE 7に注目が集まっているのです。
寺田氏は「これまでHTML5やJavaScriptに精通した開発者や開発企業が,フロントサイドを支える技術としてJava EE 7を選択し,利用していくと予想します」と述べました。
Oracleの存在,コミュニティの存在
続いて,Javaの開発体制と取り巻く環境について見てみましょう。
この20年間の変化の中でも,とくに開発者たちが注目したのが,OracleによるSun Microsystemsの買収・統合,その先にあった企業とJavaの関わりです。Sun消滅の際は,ネットその他の場所で,開発者たちによるさまざま意見が交わされました。
寺田氏自身,両社を経験している当事者として,周囲からいろいろな質問を受けたそうです。この点について「たしかにSunはハードウェア企業・Oracleはソフトウェア企業という性質から,Javaの扱いがどうなるのかについて心配されている方たちも多くいらっしゃいました。しかし,Oracle自体は,自社の製品はすべてJavaに支えられて開発されており,Java抜きでは語れません。ですから,買収後は(企業として)一層Javaへのサポートという部分は意識されたのではないかと思います」とコメントしました。
さらに次のように続けました。
「ただ,多くの方がご存知のようにJavaは1社独占の技術ではなく,さまざまな企業,開発者,それらを含めたコミュニティが育て,大きくしている言語です。ですから,その言語としての性質は活かしながら,たとえば,Oracle統合以降は,仕様策定などを進めるJCPの体制を変化させ,それまで以上にオープンにしています。このように,Sunが,Oracleがというよりは,JCPをはじめとしたJavaを取り巻く環境が,より健全に進んでいるように感じています。ちなみに,現在のJCPのAuthorに日本人が2名いて,1名は学生です。このように,日本人が世界のオープン・コミュニティに積極的に参加し,そして,世代継承が行われているという点は個人的にも大変嬉しく思っています」。
開発者のお祭り~JavaOne
今の話からもわかるように,20年間のJavaを支えてきたのは開発者でありコミュニティです。そして,その開発者たちが1年に1回,一堂に会し,交流を深めるのが,アメリカ・サンフランシスコで開催されるJavaOneです。1995年の第1回から数えて,2014年まで19回開催されてきました。
gihyo.jpでも過去何度もレポートし,未来のJavaがどうなるか,会場からお伝えしてきました。主催がOracleに変わってからはOracle OpenWorldとの併催という形で行われてきましたが,その熱気は変わらず,世界各地から多数の開発者が集まり,Javaの新技術,動向に耳を傾け,また,自身の考えを発表し,朝から晩まで技術論を交わす場となっている,言わば,開発者のためのお祭りです。
今は,世界各国,さまざまな技術カンファレンスが行われていますが,これだけ長い間,この規模感で開催されているのはJavaOneだけです。また,メインとなるアメリカ開催だけではなく,ここ日本やその他の国でも開催されたこともあり,地域色が出るイベントとしても楽しめるのが特徴です。
Java誕生10年を迎えたときのJavaOne 2005の様子。Javaの父,James Gosling氏をはじめ,たくさんの関係者が集まりJava10週年を祝った
![Java誕生10年を迎えたときのJavaOne 2005の様子。Javaの父,James Gosling氏をはじめ,たくさんの関係者が集まりJava10週年を祝った Java誕生10年を迎えたときのJavaOne 2005の様子。Javaの父,James Gosling氏をはじめ,たくさんの関係者が集まりJava10週年を祝った]()
今年は記念すべき20回目となるJavaOneです。すでに開催日は発表されており,2015年10月25日~10月29日,同じくアメリカ・サンフランシスコで開催されます。節目の年のJavaOneがどうなるのか,今から注目しましょう。
IoT時代だからこそ必要とされる言語
冒頭でも述べたとおり,今,さまざまなITシーンでIoT(Internet of things)に注目が集まっています。この考え方は目新しいものではなく,過去,たとえば「ユビキタスコンピューティング」など,呼び方は違えども,いつの時代も取り上げられ,取り組まれてきました。
それがなぜいま注目されるかというと,一番の要因はスマートフォンを中心とした端末の進化です。いまや手のひらサイズのデバイスで,20年前のワークステーション以上の処理能力を持っているのです。そして,インターネットインフラが整備され,デバイス同士,人間同士が,つねに繋がれる状況になっています。
このような背景において,Javaが持つ機能,生産性の高さ,フロントエンド・バックエンド・組込みなど多様なシーンでの適用性は,IoT時代になくてはならないものと言えるでしょう。
最後に寺田氏に,IoT時代におけるJavaという点について質問をしたところ,次のような答えで締めくくってくださいました。
「Javaは“Write once, run anywhere”というコンセプトで開発が進み,20年たった今,それがほぼ100%実現できたと思います。今からさらに10年先を考えるのは難しいですが,個人的には,本当にすべてのデバイスでJavaが動いて,つながっていることに期待したいですね。
それから,やはり開発者の方たちの存在はJavaに欠かせません。これからもたくさんの開発者が使いたくなる,そして,さらに改良していきたくなる言語として注目したいですし,自分自身,その魅力を伝えていければと考えています。
また,開発者へのアプローチという点では,教育分野でのJavaの利用に注目しています。今はJavaを利用したプログラミング教育や,たとえば,マインドストームのように楽しみながらJavaプログラミングを楽しめる環境が整備されてきました。これまで若手として活躍してきたJavaエンジニアの方たちの中にも親の立場になった方がたくさんいらっしゃると思います。ぜひ,自身のJavaスキルをお子さんたちに伝えていってもらって,未来のJava開発者が増えていくことを楽しみにしています」。
20年目の節目となるJava,要注目です。