今年のJavaOneオープニングの基調講演において、Oracleは、GPLでJava SEをリリースし、Oracle JDKの全ての機能について、オープンソース化する計画を発表した。また、Java EEは、マイクロサービスとサーバレスの新世界に適合していないことを認め、この問題に取り組む計画について話した。現代のマイクロサービスアーキテクチャのケーススタディは、AlibabaとSpotifyによって提供された。基調講演のビデオは、YouTubeで視聴できるが、ここでは、重要な情報を要約して提供する。
セッションは、Intelのシステム技術/最適化部門部長、Michael Greene氏の話から始まった。Greene氏は、どのように「未来のもっとも価値のある通貨がデータになる」かについて話し、IntelのXeonプロセッサは、そのデータを扱う準備ができていることを強調した。Greene氏の話は、時として、宣伝のように聞こえたが、IntelがJavaの永続化コレクションをオープンソース化するのを見るのは素晴らしかった。プロジェクトのREADMEによると、このライブラリは、JavaVMインスタンスが存続する以上に、インスタンスが永続化できる(言い換えれば、到達可能な状態になる)、Javaクラスを提供する。
Greene氏は、Alibaba Systems Softwareのチーフサイエンティスト、Kinsum Chow氏を壇上に呼んだ。Chow氏は、約100万インスタンスを動かしながら、開発者1万人が書いた10万のJavaアプリケーションを動かす方法について話した。Alibabaは、中国最大のEコマースサイトであり、総収入は、世界経済の中でアルゼンチンの次だ。Alibabaは、OpenJDKをカスタマイズしたAJDKを動かし、お互いに独立して動作するモジュールサービス、「分散Javaサービス」と呼ぶものを構築した。あまり技術的な詳細は与えられなかったが、他のマイクロサービスのアプローチと同じように聞こえた。
Alibabaは、驚異的な規模で活動している。2016年11月11日に、中国最大のオンラインEコマースのお祭りがあった。これは、アメリカ合衆国のブラックフライデーのようなものだ。昨年、感謝祭とブラックフライデーのアメリカ合衆国の総売上高は、128億だった。Alibabaは、中国で、最も多い時は、1秒で175Kトランザクションを処理し、11月11日に170億の売り上げがあった。
最後に、Greene氏は、マイクロサービスについて、また、どのようにIntelがAlibabaと同様の負荷をシミュレーションしようとしたかについて話した。まず、これを支援するために、GitHubにData Benchプロジェクトを開始した。これは、現実世界のマイクロサービスの作業負荷を示すための概念実証のフレームワークだ。
Intelの後、Javaコンテナネィティブプラットホームの製品開発部部長、Mark Cavage氏が登壇した。Cavage氏は、ここ20年以上、Javaは大きな価値をもたらし続けてきたことに言及した。Javaは、1,200万人の開発者、380億のアクティブ仮想マシン、210億のクラウド接続された仮想マシンを持つナンバーワンの言語だ。
Oracleは、開発者たちが「Javaを最初に、Javaをいつでも」使うようにする新しい使命があると、Cavage氏は言った。Javaを使う人になるように育つ代わりに、人々がJavaで始めてほしい。Java SEは、オープンで、進化し、動作が速く、拡張可能だ。Java EE 8には、HTTP2サポート、非同期API、リアクティブAPIがある。「しかし、それは十分ではない」とCavage氏は言った。
あなたをクラウド、マイクロサービス、サーバレスの世界へ連れて行くには、もっとモダナイズする必要があります。現実は、EEはミッションクリティカルなシステムの基盤であり、企業の動力となります。そして、私たちがどうしてそこまで行けないかを見れば、それは自明の理です。オープンでしょうか? いいえ、ベンダコンソーシアムであり、前回、私が確認したところ、オープンではありませんでした。速く動作しますか? 4年前に出荷されたもので、それほど速くありません。このことについて、私たちはすべて変えるつもりです。
望みは、Java EEをオープンソース化して、Eclipse Foundationに移行することだ。(InfoQが以前に報告した通り) プラットフォームは、もっと速く進化できるだろう。
Cavage氏は、JavaEEのオープンソース化について、David Blevins氏 (Tomitribe)、Ian Robinson氏 (IBM)、Mark Little氏 (Red Hat、InfoQ投稿者) に、壇上で一言話す機会を与えた。
Blevins氏:あなたはEEを受け継いでいます。EE4Jは、次世代EEです。TCKへアクセスできるのは、とても大きなことです。
Robinson氏:Eclipse Foundationは、よい選択です。IBMがJ9仮想マシンをオープンソース化した時に選んだところです。TCKへのアクセスは、開発者たちにとって素晴らしいことです。新しいコミュニティを持つのは、開発者たちの励みになります。J9とWebSphereライブラリをオープンソース化するのに、1年かかったので、今回のオープンソース化にも時間がかかるでしょう。
Little氏:私たちは、1年前にマイクロプロファイルを作成しました。そして、興味を持って参加してくれる人たちの大きな盛り上がりを見てきました。EEをEclipseに移行することで、これらの大きなコミュニティは、一緒になり、エンタープライズJavaを次の10年へと導いてくれます。
これらのJava EE指導者たちからの言葉を得て、「特別な許しを得ました。手伝いに来てください!」と、Cavage氏は言った。
Cavage氏は、Java SEに話を変えて、OpenJDKはGPLライセンスで利用できるようになると発表した。Oracle JDKの全ての機能が、ついにオープンソース化されるだろう。「OpenJDKとOracle JDKの違いはなくなります」とCavage氏は言った。Java SEも、6ヶ月毎にリリースされるだろう。
Redmonkの共同創立者である、James Governor氏が登壇し、Javaについて話した。前回、Governor氏がJavaOneに参加したのは、2004年だった。「過去13年間よりも、ここ3週間で、Javaエコシステムの中は変化した。」とGovernor氏が言った。
Governor氏は、大きなウェブ企業が数多くJavaを採用したのを見た。
第一世代のウェブ企業であるAmazonは、十分にJavaを使っていたし、Googleは、今では、Goや他の言語があるけれども、たくさんJavaを使いました。しかし、おそらく、もっと興味深いのは、これらの企業が「Javaは好きではありません。Rubyを使うつもりです。」と言っていたことです。TwitterはRubyを使うつもりでしたが、拡張するのが難しいことが分かり、Javaを採用しました。FacebookはJavaに興味を持っていませんでしたが、地球上で最大のHadoop使いの1つになりました。
どうして、ウェブ企業はJavaを採用する必要があると判断したのか? 理由の一端は、Javaのスキルを持つ人たちを雇うのが簡単だったからだ。しかし、スタートアップ企業は、素早く動き、物事を破壊することを好む一方で、人々は、夜、ぐっすり眠りたいのは事実だ。企業は、可観測性、性能、トレーサビリティが必要で、JavaとJVMはここで真の価値を持っている。
Governor氏のJavaに関する考えについて、Javaエコシステム、2017の投稿で読むことができる。
次に現れたのは、Spotifyの主席アーキテクト、Niklas Gustavsson氏だった。2009年10月から、Spotifyは1億4000万ユーザへと成長し、最近ではタイで事業を始めた。Spotifyは、1日に30億ストリームを処理し、バックエンドでは1秒に400万リクエストを処理する。
Spotifyは、Pythonバックエンドから始めた。Pythonは、最初は優れていたが、結局、拡張性の問題にぶつかった。Javaで書かれたサービス(検索)が1つあり、そちらの方が拡張性の問題にずっとうまく対応できた。そして、JVMを洞察し、何が起きているのか理解できだ。
Spotifyは、マイクロサービスを採用するため、初期の段階でアーキテクチャに関する決定をした。今では、SpotifyのほとんどのサービスはJavaベースで、約1,200の製品が生産されている。彼らは、徐々に、サービスを1つずつJavaへマイグレイトしていった。マイクロサービスは、サービスを個別に拡大できるので、うまく動く。
Spotifyは、Apolloフレームワークをオープンソース化し、新しいマイクロサービスを構築しやすくした。それを使えば、世界中にある数多くの多様なデータセンタが動くバックエンドを利用しながら、生成からデプロイまでワンクリックでできるようになる。サービスの所有権は、自分が構築したものを動かす、自律したチームへ分配される。
Spotifyでは、JVMはデータ処理と機械学習にも使われる。データ処理はScioベースで、ScalaとPythonを利用する。また、Dockerのスケジューリングフレームワーク、Styxも使う。Google DataflowとBigQueryは、機械学習システムのもう1つの重要なコンポーネントだ。
Gustavsson氏に続き、HeptioのCEOで、Kubernetesの共同創立者であるCraig McLuckie氏が登壇した。
Kubernetesは、ほぼ標準として現れてきた。オープンソースのコンテナオーケストレータだ。これはオープンソースであるという事実が重要だ。コンテナは操作プロセスを単純化する驚くべき方法になってきた。Kubernetesを使うことで、環境とオペレーティングシステムから分離した、内部的に密封された予測可能なシステムが与えられる。動的オーケストレータを使うことにより、アプリケーションからモニタリングとスケーリングを分離することもできる。
Kubernetesは、分散システムのオペレーティングシステムを作成している。これにより、アプリは完全にクラウドプロバイダから分離され、敷地内とクラウドで同じように動く。
McLuckie氏は、彼の会社はCloud Native Computing Foundationの一部だと言った。
Cavage氏が再び登壇し、JFR(Javaフライトレコーダ)について話した。JFRを使えば、パフォーマンスのオーバーヘッドなく、Javaアプリケーションを診断できる。これは1つのJVMでは優れているが、マイクロサービスやクラウドサービスでは難しい。クラウドでリアルタイム診断を提供するために、Cavage氏はOracleのソフトウェア開発ディレクタのVarun Madan氏を壇上に呼んだ。Madan氏は、Oracleのリードエンジニア、George Mathew氏と共に登壇した。Mathew氏は、最近、Oracleが買収した会社から、Werchkerとして知られている、低オーバーヘッドクラウド診断サービスのデモをした。
Oracleの製品開発部部長、Chad Arimura氏が、サーバレスについて話すために登壇した。Arimura氏は、コンテナネイティブサーバレスプラットフォーム、Fnプロジェクトを発表した。Fnプロジェクトは、Fnサーバ、Java FDK(ファンクショナルデベロップメントキット)、Fn Flowで構成される。Flowは、開発者がよりハイレベルなワークフローを構築できるシステムだ。シーケンシング、チェイニング、ファンイン、ファンアウト等だ。Javaは、初めて公式にサポートされた言語だ。Goで書かれた、FnプロジェクトのGitHub READMEを見るのは興味深い。
最後に、OracleのJavaプラットフォームグループのチーフアーキテクト、Mark Reinhold氏が、Java 9について話すために登壇した。Reinhold氏は、Javaの重要な価値は、可読性、単一性、互換性であることに言及した。
モジュールは、再利用のために設計されたパッケージのまとまりだ。モジュール宣言は、module-info.java
ファイルで行われる。--module-path
を使えば、-classpath
よりも、明瞭で安全だ。2つの重要なプロパティを保証できる。
- 信頼できる構成。モジュールがコンパイル時に利用できない場合、エラーになる。モジュールがランタイムに見つからない場合、エラーになる。エラーは、読みやすくて理解しやすい。
- 強力なカプセル化。モジュール外のコードは、エクスポートされたパッケージだけにアクセスできる。これにより、内部クラスと実装を隠せる。
プラットフォームは、今ではモジュラなので、拡張もできる。java.sql
が必要なだけのモジュールがある場合、jlinkで新しいランタイムシステムを構成できる。Reinhold氏は、SQLとhttpserver
を使う「Hello World」デモを見せた。250MBのDockerイメージの代わりに、39MBイメージへ縮小できることを示した。
Reinhold氏は、クラスパスは残っているので、Java 9を実行するために、すべてのコードをモジュールに変換しなくてもよいことに言及した。実際に、この2つは平和に共存できる。Reinhold氏は、人々が「Jigsawがすべてを壊す」と言うのを聞いたと語った。これは真実ではない。「Jigsawは*何か*を壊す...」
コードが標準Java SE 8 APIだけを使うならば、何も変更せずに、おそらくJDK 9は動くでしょう。コードがJDK内部に依存している場合、変更が必要かもしれません。
Reinhold氏は、Java9で動くオープンソースプロジェクトの一覧を示した。これは、Twitterで#WorksFineOnJDK9で識別できる。また、JARが内部JDK APIを使っているかどうか分かるjdepsの使い方についても言及した。
Javaのリリースは、「偉大で荘厳」だが、遅い。今では、6ヶ月毎に新しい機能リリースがあるだろう。将来の準備ができていなければ、リリースされない。6ヶ月で次のリリースをする。2018年3月は、次の機能リリースで、その次は9月だ。3年毎に「長期サポート」(LTS)のリリースがあるだろう。
JDKには、多数のプロジェクトが見えている。Panama、Valhalla、Amber、そして、Loomは、現時点では、ただの提案だ。
OracleのJava言語アーキテクト、Brian Goetz氏が、Reinhold氏のいる壇上に上がり、プロジェクトAmberとローカル変数の型推論について話した。どのように動くのかを知るもっともよい方法は、いくつかJavaコードを見ることだ。以下の「Java 18.3」の例では、コンパイラはあなたのために型を見つけ出す。
// Java 9
URL url = new URL("http://openjdk.java.net");
URLConnection conn = url.openConnection();
Scanner scanner = new Scanner(conn.getInputStream(), "UTF-8");
// Java 18.3
var url = new URL("http://openjdk.java.net");
var conn = url.openConnection();
var scanner = new Scanner(conn.getInputStream(), "UTF-8");
この機能は、すでにJava 10のリポジトリにコミットされている。つまり、これは、3月の次のリリースの一部として、JDKに含まれるだろう。
Reinhold氏は、Javaにすべきことは引き続き実施していくと言って、基調講演を終えた。
Rate this Article
- Editor Review
- Chief Editor Action