본문

IT News
混乱したJavaバージョンの真実

작성일 2018.11.14

 java_history.webp

WhaTap Labs(https://www.whatap.io)はITサービスのパフォーマンスを分析するため、顧客の開発言語とバージョンに敏感です。特に、Javaは、エンタープライズビジネスで最も使用され、バージョンによって分析できるデータの範囲が異なるため、開発および営業会議でよく言及される言語です。ところでJavaはバージョンも多様ですが、開発者やビジネス担当者が呼ぶバージョンの名称が異なるまでします。 理由は、Javaの製品バージョンと開発者バージョンのルールが異なるためです。

それで、Javaのバージョンルールがどのように作成されたのか、そしてなぜ開発者バージョンと製品バージョンが異なるのか、そしてJavaのバージョン固有の主な機能とバージョンが出てきた当時のIT状況まで話しましょう。

Java開始前の歴史

Javaは現在Webの言語ですが、最初からWebサービス用に作成された言語ではありません。家電市場の成長を見込んだグリーン(Green)チームが家電製品に入るさまざまなプロセスで動作するプロセス独立言語を作る過程で、Javaは生まれました。

1990年12月の専門家を集める

ワークステーションのコンピュータ市場をリードするSun Microsystemsは、将来の市場主導権を獲得するために専門家で構成されたグリーンプロジェクト(Green Project)を作ります。これには、Patrick Naughton、Mike Sheridan、James Goslingが含まれていました。

1991年、プロセスに独立した言語を作り始めます。

グリーンプロジェクトに参加した人たちは、一度集まって何をするのか悩んでおり、市場が増え続けている家電製品に使われるプロセスに独立した言語の必要性を認識します。それで、スマートな家電製品を配信プラットフォームに選び、James GoslingはOakという新しい言語を開発し始めます。

1992年、Star7に言語を移植する

グリーンチームは、プロセスに依存しない言語の可能性を示すことができる双方向ポータブルエンターテイメントデバイスであるStar7を作成します。当時、ケーブル会社はこのような先進的な技術には全く関心がなかったが、20年が過ぎてタッチベースのデバイスが人気を得たことを考えるとStar7はあまりにも速い技術でした。Star7には、Green OS、Oakプログラミング言語、Tool Kit、ライブラリ、およびハードウェアが統合されていました。Javaの前身であるOakは、James GoslingがStar7用に作成したプロセス独立言語でした。Star7 YouTubeのデモ動画リンクをご紹介します。小部屋で撮ったJames GoslingのStar7デモ映像です。James Goslingの顔が大きすぎて負担になりますが、ぜひご覧ください。

video

1993年、セットトップボックスに言語を移植する

グリーンチームは、スマート家電製品市場が思ったより誇張されたと判断することになります。そしてグリーンチームは双方向テレビに入るSet-Top Box(STB)オペレーティングシステムに提案を受け、スマート家電製品市場からSet-Top Boxオペレーティングシステム市場に素早く移行しますが、市場参入に失敗します。Star7どうして…

1994年、インターネットのWebブラウザに言語を移植する

グリーンチームは、Set-Top Boxソフトウェアで使用する言語の特徴である小型でプラットフォームに依存せず、安定したコードが初期Webの要件でも必要であることがわかります。グリーンチームはWebベースの3番目のプロジェクトを進行し、Patric Naugtonは週末に得たインスピレーションに基づいて「WebRunner」というプロトタイプブラウザを作成します。

Javaの歴史

java_history_hotjava.webp

Javaの製品名は、Java Standard Editionを基準にご紹介します。オラクルで発売された当時の製品名を変更して使用していますが、混乱を減らすためにオラクルが現在使用している名前を基準にして説明させていただきます。

1995年、Java 1.0a2 - SunWorld Conferenceで発表

商標の問題により、OakはJavaに名前が変更されます。Java 1.0a2 は、HotJava ブラウザとともに SunWorld カンファレンスで発表されます。SunWorld会議は、NetscapeブラウザにJavaサポートが含まれると発表します。

1996年Java Development Kit 1.0を発表

Javaの最初のバージョンが発表されます。最初の安定化バージョンはJDK 1.0.2であり、これをJava 1と呼びます。

1996年に最初のJavaOneイベントに6,000人を超える開発者が参加します。出てから1年も経たない言語を中心に、まったく新しい市場が開かれるようになります。このイベントには、Javaの製品とサービスを表示する160を超えるビジネスが参加しました。

1997年、Java Standard Edition 1.1発表

Java Standard Edition 名称は、発表時には使用されませんでした。 Java Development Kit 1.1として発表されました。Java Development Kit 1.1(JDK 1.1)は、3週間に220,000回以上ダウンロードされます。Javaは、約40万人の開発者が使用する世界で2番目に多い言語に成長しています。1997年のJavaOneイベントには10,000人を超える開発者が参加し、Javaのセキュリティと互換性、そして将来のデバイスについて話し合います。

1997年グリーンプロジェクトのBBQパーティー(おじさんワークショップ雰囲気)1997年グリーンプロジェクトのBBQパーティー(おじさんワークショップ雰囲気)

主な機能

  • JavaBeans 1.0コンポーネントアーキテクチャの追加
  • Java Archive(JAR)ファイル形式の追加
  • Java Database Connectivity(JDBC)の追加

1998年、Java Standard Edition 1.2発表

Java Standard Edition 1.2 Java Standard Edition 1.2 'Playground'
Java 2 SDK, Standard Edition ダウンロードページJava 2 SDK, Standard Edition ダウンロードページ

コードネームがPlaygroundである、Java Standard Editionの発表時の名前はJava 2 Standard Edition 1.2です。製品の変更が大きすぎるため、Java 2に再ブランド化されました。Java 2 Standard Edition Software Development Kitの略語はJava2SDKと呼ばれる必要がありますが、JavaコミュニティではまだJDK 1.2と呼ばれます。JDK 1.2以降、Javaの製品はStandard / Enterprise / Microに分けられます。

2000年、Java Standard Edition 1.3発表

Java Standard Edition 1.3 Java Standard Edition 1.3 'kestrel'
(左側)Steve Jobs / (右側)Scott McNealy(左側)Steve Jobs / (右側)Scott McNealy

コードネームがKestrelである、Java Standard Edition 1.3の元の製品名はJava 2 Standard Edition 1.3です。

JavaOne開発者会議で、Appleの共同創設者であるSteve JobsとSunの会長兼CEOであるScott McNealyは、標準のMac OXオペレーティングシステムと共にJava 2 Standard Editionをバンドルすることを発表しました。

2002年、Java Standard Edition 1.4発表

Java Standard Edition 1.4 Java Standard Edition 1.4 'Merlin'

コードネームがMerlinである、Java Standard Edition (J2SE) 1.4 が発表されます。発表時の公式名称はJava 2 Platform, Standard Edition 1.4です。Java SE 1.4 は、現代でもよく使われていることが見られます。国内公共機関にインストールされている多くのJavaプラットフォームの中には、まだJava Standard Edition 1.4がベースである場合があります。Java 2 Standard Edition 1.4から、JCP(Java Community Process)によってオープンソースで管理されています。

製品名は以下の通りです。

  • Java 2 Standard Edition 1.4 (J2SE 1.4)
  • J2SE Development Kit 1.4 (JDK 1.4)
  • J2SE Runtime Environment 1.4 (JRE 1.4)

コマンドラインインターフェイスを使用してバージョンを問い合わせると、次のようになります。

  • java -version (java version "1.4.0"を返します。)

2004年、Java Standard Edition 5.0 発表

Java Standard Edition 5.0 Java Standard Edition 5.0 'Tiger'

コードネームのTigerがリリースされます。「Java 2」が「Java」に変更されました。そして、1.5ではなく5.0でバージョンが発表され、現在の名前と同じルールであるJava Platform、Standard Edition 5.0として発表されます。

JavaOne開発者会議での大きな議論は、Javaがオープンソースであるかどうかでした。Sunは正式にJavaベースのプロジェクトがJava仕様と互換性があると認定される必要がありますが、オープンソースの支持者はJavaがより自由な形式で提供されることを望みました。James Goslingは、Javaテクノロジのオープンソース実装を複数許可すると、Unixとの非互換性をもたらす可能性があると反対しました。

WhaTapモニタリングの重要な機能であるActive Stackは、Java SE 5バージョンからサポートされています。

製品名は以下の通りです。

  • Java™ Platform Standard Edition 5 (Java™ SE 5)
  • Java™ SE Development Kit 5 (JDK™ 5)
  • Java™ SE Runtime Environment 5 (JRE™ 5)

コマンドラインインターフェイスを使用してバージョンを問い合わせると、次のようになります。

  • java -version (java version "1.5.0"を返します。)

主な機能

  • Generics
  • Autoboxing/Unboxing
  • Enumerations
  • Static imports

2006年、 Java Standard Edition 6.0 発表

Java Standard Edition 6.0 Java Standard Edition 6.0 'Mustang'

コードネームのMustangがリリースされます。製品名はJava Platform, Standard Edition 6 (Java SE 6)として発表されました。

2007年、SunはGPLに従ってJavaクラスライブラリの完全なソースコードをリリースします。(Sunのライセンスが付与されたコンポーネントは除外された。)2007年にiPhoneが登場し、これはOakが挿入されたStar7デモから15年ぶりのことでした。

2008年、Sunは2年ごとに発表した新しいバージョンのJavaを発表しません。2009年のJavaOne開発者会議のオープニングセッションで、OracleのSunの買収発表が行われます。2010年になると、JCPはJava 7とJava 8のロードマップを承認します。

製品名は以下の通りです。

  • Java™ Platform Standard Edition 6 (Java™ SE 6)
  • Java™ SE Development Kit 6 (JDK™ 6)
  • Java™ SE Runtime Environment 6 (JRE™ 6)

コマンドラインインターフェイスを使用してバージョンを問い合わせると、次のようになります。

  • java -version (java version "1.6.0"を返します。)

2011年、 JDK 7(Java SE 7, JDK 7, JRE 7)発表

JDK 7(Java SE 7, JDK 7, JRE 7)JDK 7(Java SE 7, JDK 7, JRE 7)'Dolphin'

JDK 1.0からJDK 6まで2年ごとにアップデートされたが、JDK 7は5年ぶりにアップデートされました。JDK 7のコードネームはDolphinです。

製品名は以下の通りです。

  • Java™ Platform Standard Edition 7 (Java™ SE 7)
  • Java™ SE Development Kit 7 (JDK™ 7)
  • Java™ SE Runtime Environment 7 (JRE™ 7)

コマンドラインインターフェイスを使用してバージョンを問い合わせると、次のようになります。

  • java -version (java version "1.7.0"を返します。)

JDK 7が出てくるまで、Sun社はOracleに買収されるなど、Javaはいろいろな浮き沈みを経験しました。更新が遅すぎると、Oracleは一部の仕様を収集して更新を行うことにしました。結局、JDK 1.7にはあまり期待していたLambdaやJigsawのような機能は入っていません。

オラクルのJavaグループの副社長である「Georges Saab」は、JDK 6以降7が出てくる期間が長すぎたことが、Javaの歴史で最も失望したことだったと明らかにしました。

「JDK 6以降は非常に困難な期間がありました。Java 7とそれ以降になるまでかなり長い時間がかかりました。 次のメジャーリリースが出るまでに時間がかかりすぎたという面でがっかりしていましたが、結局それは今のOpenJDKコミュニティが形成され、Java 7と8が出てきたプロセスの一部でした.」

機能の追加

  • ダイヤモンド演算子(<l;>)の使用
  • Generics ユーザビリティの向上
  • リソースの自動解放
  • Garbage Collectorの機能強化
  • Switchステートメント文字列のサポート

2014年、JDK 8 Lambdaを追加

2011年JDK 1.7が登場して以来、3年が更新に3年かかりました。しかし、1.7で実装できなかった多くの変更が1.8に含まれます。

変更された機能

  • Lambda Expressionを追加
  • Streamsインターフェースの追加
  • Default Method を追加

現在、Java FXは消えたリッチインターネット技術になりました。

2017年、Java Standard Edition 9を発表

JavaOneは、Oracle JDKのリリースサイクルを6ヶ月単位にすると宣言します。9バージョンと10バージョンはnon-LTSでリリースされたため、6ヶ月の無償アップデート後にパッチが行われました。

変更された機能

  • Java Platform Module System(Jigsaw)を追加
  • Java 9 JShellの追加
  • HTML5 Javadocの追加
  • 匿名クラスのDiamond Operatorを許可する
  • プロセスAPIの追加

2018年、Java Standard Edition 10発表

2018年、オラクルが新しいバージョンのリリースサイクルを進め、有償パッチに関する問題が発生します。すでにほとんどの開発者はJava Standard Edition 8バージョンに満足しており、使用していますが、時間が経つにつれて最終的に新しいバージョンのJavaを使用します。それから、Java陣営の開発者がどこにいるのか、まだ誰も知りません。

おわりに

Javaは本当に長く発展してきた汎用言語です。その長い間、Javaは自分自身を発展させ、現在まで来ることができました。その過程の中には膨大な悩みが隠れており、まさにバージョンを決める単純なことでも難しい決定があったと思います。私たちもいつか長い時間発展させなければならないサービスやオープンソースを作ることになる時があります。その時になるとJavaの歴史を手本にして、よりスッキリと素敵なビジネスを作っていってほしいです。

WhaTap Monitoringを体験してみましょう。
難しかったモニタリングと分析が容易に実現できます。