Index火曜日、サンフランシスコで開催された IBM の Index 開発者カンファレンスで、The Register はBig Blue の Java CTO である John Duimovich 氏と対談し、Java プログラミング言語、IBM、クラウド、その他の開発者向けの懸念事項について語りました。
ドゥイモビッチ氏は、IBMのJavaに関する専門知識に基づき、IBMをクラウドプラットフォームのパートナーとして推奨しました。また、22年の歴史を持つJavaは、今後も進化を続ける重要な言語であると主張しました。
Java の干渉好きな叔父である Oracle は昨年、Java EE のガバナンスを Eclipse Foundation に引き渡すと発表した。
エンタープライズ Java にとって、これは新機能の開発と展開を加速し、企業の開発者のニーズにさらに応えられるようになるチャンスを意味します。
「彼らがやったのは、エンタープライズJavaの進化のコントロールを財団に委ねたことです」とデュイモビッチ氏は説明した。「コード自体とガバナンスを財団に移したのです。これは、MicroProfileがこれまで持っていた勢いの一部を認めた結果だったと思います。」
MicroProfile は、Java EE (または、名前変更の投票が予想どおりに進んだ場合は Jakarta EE) を、大規模なモノリシック アプリケーションではなく、軽量で構成可能なマイクロサービスの開発に適したものにするための取り組みです。
「クラウドJavaの互換性の未来はまさにここで定義されるのです」と彼は述べた。「EEは今後、こうした新しい技術の多くを採用して進化していくでしょう。」
私たちは、IBM の新しい開発者会議にハゲタカを派遣し、「なぜ Big Blue なのか?」という喫緊の疑問の答えを探りました。
続きを読む
ドゥイモビッチ氏によると、IBMは十分な数の開発者が望むあらゆる言語のサポートを提供することに関心を持っているという。特にフロントエンドアプリケーションにおいて、Node.jsへの関心が高まっており、Swiftのエコシステムが成熟した今、Swiftへの関心は比較的緩やかになっているという。
「もし本格的なパフォーマンスニーズがあるなら、Javaが最適です」と彼は言った。「あらゆるシステムと統合したいなら、エンタープライズレベルでの統合が必要になることは間違いありません。」
Duimovich 氏は、IoT アプリケーション向けの非同期コードや高イベント レートを扱うリアクティブ プログラミングなどの開発を指摘し、エンタープライズ Java は最近「実はかなり興味深い分野」であると主張しています。
「Eclipse FoundationのEnterprise Javaは、新機能の導入をより迅速に進めていくでしょう」と彼は述べた。「そして、より参加しやすく、より包括的なコミュニティになると思います。」
IBMにとって、これはオープンソース開発コミュニティとの関係構築の機会です。「IBMがオープンソースになったことで、開発者と実際に関わる機会が大幅に増えました」と彼は述べています。
IBM はかつては秘密主義でしたが、現在はオープンソース テクノロジの開発者として開発コミュニティとの接点がはるかに増え、それが新規顧客獲得につながる可能性を秘めています。
「より幅広い開発者とより良好なコンタクトポイントを得られるので、非常に嬉しいです」と彼は語った。「IBMの顧客ではない方々でも、私たちと交流し、共に働くことができます。そして、私たちの視点からすれば、サポートやその他のサービスを購入してもらえることで、IBMの顧客になってくれることを期待しています。」
オープンソースの採用は、IBM社員と外部開発者との技術的な交流の機会を意味します。デュイモビッチ氏は、IBMが大学でOMR技術を用いてBase9と呼ばれる仮想マシンを構築する方法について講義した時のことを振り返ります。
「私たちがこのようなことをやっていると知って、すぐに一緒に働きたいと言ってくれる人が6人いた」と彼は語り、オープンソースに関わることは開発者からの受け入れが良くなることを意味すると付け加えた。
わかりにくいバグレポート
JVM をオープンソース化しても、コミュニティによるコードの貢献は大幅に増加したわけではないが、Duimovich 氏は、誰かが 1 行か 2 行のコードでエッジケースを修正してくれる、目立たないバグレポートに感謝の意を表した。
Java EE がより急速に発展していくことには、プラス面とマイナス面があると Duimovich 氏は言う。
「言語機能などを待っている開発者は3年も待つ必要はない」と彼は説明し、Kotlin、Scala、その他の言語の側面が遅かれ早かれJava EEに組み込まれる可能性があることを指摘した。
「今年のJavaにはシェルと、読み込み・評価・印刷ループ(REPL)が実装されました」と彼は言った。「他のスクリプト言語にはすべて備わっていました。Javaもついに実装されました。」
彼によれば、欠点は、誰もが追いつくためにもっと速く動かなければならないことだという。
「Java開発者にとっても、VM開発者にとっても、今は素晴らしい時代だ」と同氏は語り、仮想マシン間の競争はすべての人に利益をもたらすと付け加えた。
ドゥイモビッチ氏は、IBMがJavaのクラウド最適化において主役を担っていると考えている。その例として、VMの起動時間を挙げた。アプリケーションサーバーが数ヶ月間稼働していた場合、40秒の起動時間はそれほど問題にはならなかったが、コンテナではそうはいかない。
「そのため、当社は起動時間と立ち上げ時間を既存の JVM の 2 倍以上短縮しており、引き続きこれに注力していきます」と氏は語った。
IBMのJava VMは、使用されていないメモリを返却するように最適化されています。「当社のVMは、アイドル状態になると自動的にシステムにメモリを返却します」とデュイモビッチ氏は説明します。
クラウドにおけるシステムのメモリ使用量を削減することは、システムコストの削減につながります。常に最大限に活用されているJVMでは、これはそれほど大きな問題にはなりません。
「しかし、当社のメインフレームと導入環境から、ときどき起動するアイドル状態のVMが多数あることがわかっています」と同氏は語った。
Duimovich 氏によると、Java とコンテナに関する最も差し迫った技術的問題は、Java メモリをコンテナのサイズに適応させることであり、これを超過するとコンテナが強制終了するからだという。
低レベル
「いわば、それらを一体として踊らせたいのです」と彼は説明した。「コンテナ内のメモリを減らせば、Javaのメモリも減ります。私たちは低レベルで、まさにそういったことに取り組んでいます。」
IBM は、Java のフットプリントを削減する取り組みの一環として、JIT コンパイラをアドレス空間の外部に移動し、サービスとして提供することにも取り組んでいます。
「それは我々にとって大きなチャンスとなる」とドゥイモビッチ氏は述べ、各インスタンスが 200 ~ 400 MB のフットプリントを節約することを指摘した。これはマイクロサービスに必要なものであり、Java を他の言語のメモリ要件に近づけるものである。
また、サービスとしてはインスタンス間の可視性が向上し、A/B テストでパフォーマンス データを比較する機会が提供されると彼は述べています。
「簡単に考えてみると、100個か1000個のマイクロサービスを立ち上げるとして、それら全てがオブジェクトをコンパイルする必要があるだろうか?」と彼は言った。「明らかにそうではありません。AOT(事前コンパイル、静的コンパイル)を使えばそれが可能になりますが、そうするとJavaが実現できる動的なバイトコード変更といった機能の一部を諦めることになります。」
Java以外にも、ドゥイモビッチ氏は開発を運用よりも開発に重点を置くことで、開発全体をより容易にすることに関心を示した。「開発者としてアプリをデプロイする前に、DockerやKubernetes、その他30もの技術を学ばなければならないという考えは、払拭したいと思っています」と彼は語った。
おそらく、そのためのクラウドがあるのでしょう。®