1996年1月23日、Sun Microsystemsは、Java 1.0が利用可能になったことを発表するプレスリリースを公開した。
カリフォルニア州パロアルト - 1996年1月23日 - Sun Microsystems, Inc.の新たに設立された運営会社であるJavaSoftは本日、Java™ 1.0プログラミング環境が http://java.sun.com からダウンロードできるようになったことを発表します。
「Javaのwrite-once-run-everywhere機能とその簡単なアクセス性により、ソフトウェアとインターネットコミュニティは、複雑なネットワーク用のアプリケーションを作成するためのデファクトスタンダードとしてそれを採用するようになりました」とJavaSoftの新任社長であるAlan Baratz氏は述べています。「開発者にJava 1.0をすぐにダウンロードして、次のキラーアプリケーションの構築を開始するよう招待できることをうれしく思います」
「この強力な1.0一般リリースを作成するためにJavaを改善してきたことは、私たちのチームにとって大きな成果です」と、JavaSoftのJava言語およびアプリケーションのゼネラルマネージャであるRuth Hennigar氏は述べています。「3月のWebへの最初のアルファリリース以来、多くの開発者からのフィードバックを受け取り、機能と信頼性が向上しました。このリリースには、ソフトウェア開発者が必要と言ったコンポーネント、つまりアプレットの実行とテスト用のJavaアプレットビューア、Javaコンパイラ、プロトタイプデバッガとJavaベースのプログラムを実行するためのJava仮想マシンが組み込まれています。グラフィック、オーディオ、アニメーション、ネットワーキング用のクラスライブラリも含まれています」
Sunは1995年にJavaのアルファ版をリリースしており、そのテクノロジーはNetscape NavigatorとMosaicで利用可能だったが、1.0 バージョンのリリース (その後すぐに 1.0.1 と 1.0.2 が続く) は、 この日から続くジャーニーの開始を示した。Oracleは、昨年Javaのアルファリリースから25年の誕生日を祝った。
初期の成功と新進気鋭のインターネットの普及はJavaを大衆にもたらすのに役立ち、コンパイラとライブラリが無料で利用可能であったという事実は、当時のツールの利用可能性からの大きな変化だった。gccのようなオープンソースプロジェクトは10年前から存在していたが、ほとんどのオペレーティングシステムには、インタラクティブなグラフィックソフトウェアを構築するための市販のツールしかなかった。アプレットを作成してインターネットに公開し、さまざまなオペレーティングシステムで実行できるようにすることができたという事実は、当時はユニークだった。
Sun Microsystemsは最初のプレスリリースで、Java 1.0はSolaris、Windows 95、Windows NTで利用可能であり、macOSのリリースは翌年末までに約束されていると述べた。AppleとNeXTが合併してmacOSを作成したとき、Javaはオペレーティングシステムのデフォルトインストールであり、Objective-CランタイムはJavaにブリッジされ、Objective-C WebObjects スタックをJava化した移植版であるJavaWebObjectsを準備していた。(Java WebObjectsスタックのレガシーは、今日でも一部のWebObjectApplications、または一部のAppleサイトの .woa 拡張子で見ることができる) IBMは、OS/2およびWindows 3.1の移植版を提供することを約束し、それ以来Javaライセンシーだ。
Javaは何年にもわたって進化してきたが、JVMのコアは安定性を維持しており、Java 1.0でコンパイルされたアプリケーションは、はるかに高速に、最新のJVMで実行できる。バイトコード形式は (ほとんど) 変更されていない。代わりに、進化により、時間の経過とともに、いくつかのバイトコード (invokedynamic など) と追加の属性タイプ (module-info) が導入された。ジェネリックスのように、Java 1.2 で下位互換性のある方法で導入されたものもあり、変更を必要としないため、古いJVMで引き続き実行できる。
残念ながら、JVMはセキュリティの脆弱性を狙われ使用されることが多く、安全を確保するためにブラウザでJVMを頻繁に更新する必要があった。他のブラウザ内プラグインタイプ (今月初めに別れを告げたFlashなど) の人気により、Javaはブラウザからサーバに追いやられ、J2EEプラットフォーム (現在はJakartaEE) で人気が高まった。ブラウザ内テクノロジーは引き続きマルウェアが狙う方向だが、今ターゲットとなるJITはJavaScriptを実行するものであり、その名前はJavaのブラウザへの初期リリースに由来する、名前以外は無関係だ。
Javaは、上位2つの席を C と争い、さらに10年間私たちと共にいるように設定したDalvik VMアプリケーションを強化するために (名前がないかもしれない) Javaソースコードを使用したAndroidのリリースにより、その間プログラミングテーブルのトップから外れることはめったになかった。C のような構文の継続と、行末のセミコロンの断固たるフォローは時代遅れに見えるかもしれないが、当時、C開発者は言語に簡単に移行できた。1996年にコンパイルされたCプログラムとは異なり、Javaアプリケーションは引き続き実行できる。32ビット、次に64ビットのJVMと、ShenandoahやZGCなどの高度なガベージコレクターの進化のおかげで、大幅に高速化されている。
組み込み空間でのJavaの成功 (結局のところ、もともとセットトップボックスプログラミング言語として設計されていた) は、それほど目にしない。JavaはBlu-Rayに存在し、JavaCard仕様はSIMとPINチップに存在するが、おそらくIoTの世界に革命を起こしたわけではない。ただし、組み込みJavaは利益をあげており、OracleがSun Microsystemsを買収した理由の1つは、GPLをコードベースにもたらしたOpenJDKのリリースを含め、オープン環境で言語とランタイムを今日まで管理し続けていたことだ (ただし、Java は無料で入手でき、買収後までオープンソースではなかった) 。
おそらく、Javaの永続的な遺産は、インターネット対応のブラウザにオブジェクト指向をもたらすだけでなく、JVM自体をもたらしたことだ。Java (さらに言えばJavaScript) の両方が示すように、ランタイムがプロセッサーに依存しない言語 (JVMバイトコード、JavaScriptソースコード、WASM) がある場合、実行エンジンまたは変換エンジンはプラットフォームに関係なくそのコードを実行できる。これにより、何よりも、ハードウェアを32ビットから64ビット、PowerPCからARM、RISC-Vに進化させることができ、元の作成者によるコンパイル済みコードの変更は必要ない。
JVMは、Javaだけで使用されることはなくなり、KotlinやScalaなどのJavaに着想を得た派生語から、JRubyやJythonなどの非Java言語まで、その上に構築された他の言語でも使用される。OracleのTruffleおよびGraalVMプロジェクトは、Java上にJVMを構築し、他の方法ではこれらのランタイム最適化を利用できない言語を最適化する方法を示している。また、Javaが進化し、軽量スレッド (lightweight threads) と Records が導入されると、これらの変更によりJVMが前進し、将来、よりエキゾチックなランタイムがサポートされるようになる。
JavaとJVMは中年に近づいている可能性があるが、数十年にわたり使用と改善がまだ続けられている。
使用したJavaの最初のバージョンは何でしたか? 以下のコメントでお知らせください。