世界を動かす技術を、日本語で。

Java 30周年:ジェームズ・ゴスリングへのインタビュー

2025年5月16日原文(thenewstack.io)

概要

  • Javaは2024年5月23日で 30周年 を迎えるプログラミング言語。
  • 創始者James Goslingの 生涯と業績 が現代コンピューティングへ多大な影響を与えた。
  • Javaの進化や 設計哲学、オープンソースやAIへの見解を紹介。
  • Sun Microsystems時代の イノベーションと文化 も振り返る。
  • Goslingの 倫理観と技術的好奇心 がキャリア全体を通して貫かれている。

Java誕生30周年とJames Goslingの軌跡

James Gosling: Javaの父、その人物像

  • James Goslingは「 Javaの父」として知られる、謙虚で天才的なプログラマーであることを確認。
  • 難解な概念を シンプルに説明 する能力に長けていることを強調。
  • Java誕生30年を経て、Goslingはその進化と自身の経験を振り返ることができる人物であることを示す。

プログラミングへの道:創意工夫の少年時代

  • 貧しい家庭環境から創造力を発揮し、 不要品から電子機器を自作 した経験を持つことを紹介。
  • 初めてのコンピュータは電話会社の廃棄品から リレーラック を使って自作したことを強調。
  • カルガリー大学の コンピュータセンター訪問 が転機となり、以降の好奇心を説明。
  • 高校時代から大学の物理学部で 衛星データ処理ソフト開発 を担当、実践的な経験を積んだことを述べる。
  • IBMメインフレームでのPL/1やFortran、PDP-8アセンブリ、CDC 6400コードなど幅広い言語経験を持つことを確認。

学術界から産業界へ:現実主義の選択

  • Carnegie Mellon大学の 博士課程 を「安価な労働力」と率直に評し、実務経験を重視する姿勢を示す。
  • 学業中断後、ベイエリアのスタートアップで働き、実務と学業を両立したことを強調。
  • IBM Researchでの勤務経験を、ユーモアを交えて 批判的に評価 することを紹介。
  • Sun Microsystemsでは、技術力と創造性が両立する 稀有な職場環境 で活躍したことを述べる。

Sun Microsystems時代:イノベーションと遊び心

  • Sunでの思い出として、 エイプリルフールの壮大なイタズラ 文化を紹介。
    • 例:CEOのオフィスにゴルフコース設置、フェラーリを池に浮かべるなどの創造的なプロジェクトを実施。
  • 技術的な課題解決と遊び心が共存する 職場文化 がGoslingの発想力を育んだことを強調。

Java誕生:世界を変えたレガシー

  • Javaの設計哲学は「 Write Once, Run Anywhere」を実現し、開発者に大きな影響を与えたことを確認。
  • JDK 8で追加されたラムダ式など、初期に実装したかった機能や 言語設計の慎重さ を解説。
  • GenericsやLambdasの実装は難易度が高く、「最初の90%は簡単だが最後の10%が非常に難しい」と述べる。
  • OracleによるJavaの運営については「思ったより良いが期待値は低かった」とし、 コミュニティの貢献 を高く評価。
  • Javaは クラウド環境 への適応やマルチコア、ガベージコレクションの進化により、現代でも健在であることを強調。

Sun退職後:新たな挑戦と倫理観

  • OracleによるSun買収後、Googleを経てLiquid Roboticsに移籍し、 自律型海洋ロボットの制御システム 開発に従事。
  • 環境モニタリングとベンチャー資金の現実、 防衛用途への転換に対する倫理的懸念 から退職を決断。
  • Amazon Web Services(AWS)ではGreengrassや開発ツールに従事し、2023年に退職したことを説明。

オープンソースと業界動向:冷静な分析

  • オープンソースは コラボレーション、開発者リレーション、マーケティング の側面を持つと分析。
  • 「ローコード/ノーコード」についてはCOBOL時代からの繰り返しとし、 特化領域以外では複雑性に弱い と指摘。
  • AI・機械学習については「 高度な統計手法」と呼ぶべきであり、過剰な期待や誤解を懸念する立場を表明。

開発ツールと好み:進化を受け入れる姿勢

  • 主に NetBeans IDE を利用し、オープンソースかつ活発なコミュニティを評価。
  • 古いツール(例:Vi)に固執する開発者への 批判的な見解 を示し、実用的な用途ではモダンな環境を推奨。

JVMのビジョン:学術的発想から世界標準へ

  • Java Virtual Machine(JVM)の発想は大学院時代の アーキテクチャ非依存配布形式 の研究から生まれたことを説明。
  • 「Write Once, Run Anywhere」というビジョンが 世界のソフトウェア開発手法を変革 したことを確認。

近年の取り組み:AWSでのIoT推進

  • AWS GreengrassプロジェクトでIoTアプリケーションの スケーラビリティ問題 を解決する枠組みを開発。
  • OTAアップデートやセキュリティ管理などの 煩雑な要素を抽象化 し、開発者の負担を軽減することを重視。
  • Greengrassのデバイス側をオープンソース化し、 コミュニティによる移植性向上 に満足感を示す。

AIへの懐疑的見解

  • AI革命については「 ほとんど詐欺」と断言し、AIという用語自体が ミスリーディング であると主張。
  • AIの本質は「高度な統計技術」であり、 人間の知能とは異なる ことを強調。

Hackerたちの意見

その通りだね、ジェームズ・ゴスリングの仕事は素晴らしいし、彼とJavaエコシステム全体に感謝してるよ。最初のJavaワールドツアーのカンファレンスに行って、そのことについてちょっとしたブログ記事を書いたんだけど、それがサンのホームJavaページに約1年間リンクされてたんだ。すごくラッキーだったし、長い間「Javaコンサルタント」で最初に検索に引っかかってたおかげで、妻と一緒に田舎に住む自由が得られて、10年間リモートワークができたんだ。感謝の気持ちを表すついでに、Clojureチームにも素晴らしいエコシステムをJavaとJVMの上に作ってくれてありがとうと言いたい。何百万もの人々の生活にポジティブな影響を与える仕事ができるなんて素晴らしいよね。

ジェームズ・ゴスリングにも本当に感謝してるよ。1995年の秋、タリジェント(アップル、IBM、HPの合弁会社)でC++を使ってたときに初めてJavaをダウンロードして試してみたんだ。最初の「Hello, World」プログラムを書いたときは、文字通り飛び跳ねて喜んだよ。タリジェントのCommonPointアプリケーションフレームワークを作ってたのとは全然違って、新鮮な風が吹いた感じだった。タリジェントが崩壊したときに退職金をもらって、その時やってたことを全部やめて、それ以来ずっとJavaとその関連ソフトウェアで働いてる。

ジェームズ・ゴスリング(Java)とリッチ・ヒッキー(Clojure)は素晴らしいクリエイターだね!それぞれの時代にプログラミングに新しい風を吹き込んだ。

Javaのパフォーマンスは一番速いわけじゃないけど、それは大丈夫。C/CPPのすぐ後ろの3位って悪くないし、Goよりも前にいて、PythonやRubyよりも10倍以上は速いよ。Javaの構文は完璧じゃないけど、一貫性があって予測可能だしね。で、もしIdeaやEclipseを使ってるなら(メモ帳やAtomじゃなくて)、一日中control-spaceを押してれば大丈夫だよ。Javaのメモリ管理はUnixの哲学から見ると変に思えるけど、何が起こってるかを理解すればそうでもない。完璧じゃないけど、良いトレードオフだよ。これらのトレードオフで何が得られるかっていうと、スピードとメモリの安全性だね。でもそれに加えて、動的な呼び出し機能(インターセプションみたいなことができる)やホットスワップ/ライブ再定義(C/CPPではできないこと)がある。完璧?いや、でも実際の使用ケースにはとても実用的だよ。

Javaのメモリ管理はUnixの哲学から見ると変に思えるけど、何が起こってるかを理解すればそうでもない。完璧じゃないけど、良いトレードオフだよ。GCの話は本当に素晴らしい。管理されたメモリ言語のエコシステム全体で、ほぼ最高のものだよ。異なるGCアルゴリズムが実装されていて、自分のユースケースに最適なものを選んで調整できるんだ。もちろん、部屋の中の象はZGCで、ストップ・ザ・ワールドのGCの停止時間を大幅に短縮してくれる。私はそれが一貫してミリ秒未満の停止時間を提供するのを見たけど、他のアルゴリズムは通常40-60ミリ秒かかるんだ。言うまでもなく、GCなしのコードを書くこともできるよ、必要ならね。あまり宣伝されてないけど、実現可能なんだ。

大学を出たとき、まだ「Javaはすべての解決策だ」という考えにしっかりと囚われていた頃、実は私の憧れはJVMと当時の他の何よりも進んでいたJavaアプリサーバーツールに対するものだったって気づかなかったんだ。基本的には、2年以上前のDocker + K8sみたいなもので、JVM上で動くものにとっては。Javaという言語は、2006年から2007年頃に改善が始まるまで、生産性が非常に低かったので、私を遠ざけたんだ。今は、JVM上で動く他の言語、JRuby、Clojure、Scala、Groovy、Kotlinなどに目を光らせてる。個人的には、JRubyが最も興味深いと思う。なぜなら、それを使うことで2つの非常に成熟したエコシステムにアクセスできるから。JavaがProject Loomを導入して、JVM上でRubyのFibersを仮想スレッドを通じて使えるようになったとき、両者にとってウィンだったよ。チャールズ・ナッターはそこでの彼の仕事に対して十分な評価を受けていないと思う。

30年以上にわたって一貫して3位というのは、すごく大きなことだよ。公平を期すために言うと、JVMの最先端GCにかなりの投資がされているし、研究から出たばかりのものもある。

言語には年々改善されてきた粗い部分があるけど、強い型付けのオブジェクト指向言語を頑丈なIDE(例えばIdea)で使う開発者体験は本当に他に比べるものがない。デバッグプロセスもすごくシンプルだしね。Javaは企業向けの膨れたシステムと同義になったのには理由があるけど、どんな泥だらけのJavaシステムでも、デバッガーでクリーンにステップスルーできないものはないよ。それに、採用を加速させた彼らの最大のアイデアの一つ、javadocも加えたい。これが100%オリジナルなアイデアかどうかは分からないけど、インラインドキュメントをコンパイラに組み込んでHTMLドキュメントを自動生成するのは、ライブラリを構築してすぐに使えるようにするための本当に神の恵みだった。強い型付けもドキュメントをハイパーリンク可能にするのにうまく合ってた。Javaは、単独の開発者よりも大規模なエンジニアリングチームの問題を解決するために作られたんだ。

Javaのパフォーマンスは最速ではないけど、それは大丈夫、C/CPPのすぐ後ろの3位は悪くないよ。それに、Goよりも前にいて、PythonやRubyよりも10倍以上は前にいる。何の速さで、正確には?

Javaのパフォーマンスは最速ではないけど、それは大丈夫、C/CPPのすぐ後ろの3位は悪くないよ。Javaが人気になった1999年から2001年頃、C(またはC++)のすぐ後ろの3位ではなかった。その当時、あのマシンでCで書かれたプログラムとJavaで書かれたプログラムの間のギャップは、今のJavaで書かれたプログラムと純粋なPythonで書かれたプログラムの間のギャップとほぼ同じだった。

Javaの構文は完璧じゃないけど、一貫性があって予測可能なのがいいよね。最近のJavaの変更でこれをすごく評価してる。シールドクラスやスイッチ式、プロジェクトLoom、レコードを既存のJava構文にうまく組み込んだと思う。ヒープダンプアナライザーやスレッドダンプアナライザー、GCアナライザーのツールも最高だし。

それに、もしIdeaやEclipseを使ってるなら(ノートパッドやAtomじゃなくて)、Javaのツールは本当に素晴らしいよ。JavaのためにIntelliJを使うのは、他の言語のIDEを使うのとは全然違う世界に感じる。Goの話をすると、Goコミュニティが並行データ構造のためのコンテナ開発にあまり熱心じゃない理由を知ってる人いる?GoのコードにはMutexやロックが散見されるけど、Javaコミュニティでは並行処理コードを書くときの一番のアドバイスはJavaの素晴らしいコンテナを使うことだよ。時々、java.util.concurrentやJCToolsが恋しくなる。

Hacker Newsで議論の続きを見る