「Javaバージョン履歴」の版間の差分
削除された内容 追加された内容
Big sausage (会話 | 投稿記録) 編集の要約なし |
|||
(同じ利用者による、間の14版が非表示) | |||
1行目:
本稿では'''[[Java]]'''[[Javaプラットフォーム|プラットフォーム]]の基準である[[Java Platform, Standard Edition|スタンダード版]]のメジャーバージョン履歴を説明する。その他にも[[Java Platform, Enterprise Edition|エンタープライズ版]]、[[Java Platform, Micro Edition|マイクロ版]]、[[Java Card|カード版]]といった周辺エディションが存在し、それぞれが個別にメジャーバージョン改訂を行っているが、いずれもスタンダード版改訂を基準にしそれに後発する時系列でリリースされている。
== バージョン一覧 ==
=== JDK 1.0 (1996年1月23日) ===
Javaプラットフォームの初回バージョンは、ブランド名「Java」プロダクト名「Development Kit」から「Java Development Kit」とネーミングされ通称は「JDK」とされた。当初のメジャーバージョン値は小数点第一位にされた。通称にバージョン値を付けたものがリリース名になった。まだ国際化対応はされず英語版のみだった<ref>{{Cite press|title=JAVASOFT SHIPS JAVA 1.0|publisher=Sun Microsystems|url=http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.html|language=en|accessdate=2006-07-08|archiveurl=https://web.archive.org/web/20080625030452/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml|archivedate=2008-06-25|deadlinkdate=2019-03-04}}</ref>。
* ファイル入出力
* ネットワーク接続(TCPソケットとUDPソケット)
* データコレクション(Array、Vector、List、Set、Map)
* 数学演算
* アプレットとセキュリティ
*[[Abstract Window Toolkit]](グラフィカルユーザーインターフェースサポート)
=== JDK 1.1 (1997年2月19日) ===
[[国際化と地域化|国際化]]対応され日本語版も追加された<ref>{{Cite press|title=SUN SHIPS JDK 1.1 -- JAVABEANS INCLUDED|publisher=Sun Microsystems|url=http://www.sun.com/smi/Press/sunflash/1997-02/sunflash.970219.0001.html|language=en|accessdate=2006-07-08|archiveurl=https://web.archive.org/web/20080506220653/http://www.sun.com/smi/Press/sunflash/1997-02/sunflash.970219.0001.xml|archivedate=2008-05-06|deadlinkdate=2019-03-04}}</ref>。
*内部クラス(言語仕様)
*[[JavaBeans]]([[ソフトウェアコンポーネント|ソフトウェアコンポート]]
*[[JDBC|
*印刷サービス
*[[
*[[リフレクション (情報工学)|リフレクション]](クラスメタデータ操作API)
*Java Text(文章、暦、日付、数値などの国別書式)
*Input Method Framework(文章入力の国別書式)
*Java 2D(グラフィックサポート)
=== J2SE 1.2 (1998年12月8日)「Playground」 ===
大幅な技術刷新によりブランド名が「Java 2」に改められた。統合仕様の確立でプロダクト名が「Platform」に改められた。エディションの分化で「Standard」が付加された。こうして「Java 2 Platform, Standard Edition」通称「J2SE」になった。ここからコードネームが付けられるようになった<ref>{{Cite press|title=SUN DELIVERS NEXT VERSION OF THE JAVA PLATFORM|publisher=Sun Microsystems|url=http://www.sun.com/smi/Press/sunflash/1998-12/sunflash.981208.9.html|language=en|accessdate=2006-07-08|archiveurl=https://web.archive.org/web/20080506220658/http://www.sun.com/smi/Press/sunflash/1998-12/sunflash.981208.9.xml|archivedate=2008-05-06|deadlinkdate=2019-03-04}}</ref>。翌年にエンタープライズ版「J2EE 1.2」とマイクロ版「J2ME 1.2」もリリースされた。
*<code>strictfp</code>キーワード(言語仕様、浮動小数点計算)
*仮想マシンに実行時コンパイラ(''Just-In-Time Compiler'')
*Javaプラグイン(WEBブラウザへのアプレット実行環境挿入)
*[[Swing]](グラフィックユーザーインターフェース)
*Collection Framework(コレクションAPI)
*Security Framework(セキュリティAPI)
*Java Internet Description Language([[IDL (プログラミング言語)|IDL]]からJava CORBA用スタブ&スケルトンを生成)
*Java Accessibility API(画面Reader、音声認識、点字端末などのユーザー補助機能)
=== J2SE 1.3 (2000年5月8日)「Kestrel」 ===
ここからメジャーバージョンのコードネームは鳥獣名、マイナーバージョンは昆虫名にするのが慣例になった<ref>{{Cite press|title=SUN MICROSYSTEMS RELEASES FASTEST CLIENT-SIDE JAVA PLATFORM TO DATE|publisher=Sun Microsystems|url=http://www.sun.com/smi/Press/sunflash/2000-05/sunflash.20000508.3.html|language=en|accessdate=2006-07-08|archiveurl=https://web.archive.org/web/20080516195335/http://www.sun.com/smi/Press/sunflash/2000-05/sunflash.20000508.3.html|archivedate=2008-05-16|deadlinkdate=2019-03-04}}</ref><ref>{{Cite web|url=https://docs.oracle.com/javase/jp/1.3/relnotes/features.html|title=JavaTM 2 SDK, Standard Edition, version 1.3 の新機能および機能拡張の概要|accessdate=2019-03-04|language=ja-jp}}</ref>。
115 ⟶ 43行目:
*Java Platform Debugger Architecture(デバッガ・アーキテクチャ)
*[[Java Naming and Directory Interface|Java Name and Directory Interface]](ネーミング&ディレクトリサービスAPI)
*[[RMI-IIOP|RMI over IIOP]](RMIをIIOPプロトコル上でも使える仕様)
*Java Sound(サウンドAPI)
=== J2SE 1.4 (2002年2月6日)「Merlin」 ===
このバージョンからJavaコミュニティプロセス([[Java Community Process]])による仕様策定が開始された<ref>[http://www.jcp.org/en/jsr/detail?id=59 JSR 59]</ref><ref>{{Cite press|url=http://www.sun.com/smi/Press/sunflash/2002-02/sunflash.20020206.5.html |title=SUN ANNOUNCES LATEST VERSION OF JAVA 2 PLATFORM STANDARD EDITION |publisher=Sun Microsystems |accessdate=2006-07-08 |language=en |deadlinkdate=2019-03-04 |archiveurl=https://web.archive.org/web/20080906195714/http://www.sun.com/smi/Press/sunflash/2002-02/sunflash.20020206.5.html |archivedate=2008-09-06}}</ref><ref>{{Cite web|url=https://docs.oracle.com/javase/jp/1.4/relnotes/features.html |title=JavaTM 2 SDK, Standard Edition, version 1.4 の新機能および機能拡張の概要 |accessdate=2019-03-04 |language=ja-jp}}</ref>。
*<code>assert</code> キーワード(言語仕様、
*[[Java Web Start]]
*
*ロギング用API
*New I/O(非遮断ストリーム入出力、バッファストリームAPI)
*Image I/O([[JPEG]]と[[Portable Network Graphics|PNG]]を使えるAPI)
*Preferences(ツリー型のJava式セーブデータ収納庫API)
134 ⟶ 61行目:
*Java Authentication and Authorization Service(認証&権限サービスAPI)
=== J2SE 5.0 (2004年9月30日)「Tiger」 ===
メジャーバージョン値が整数部分に変更された。言語仕様に大幅な拡張が加えられた<ref>{{cite press|url=http://www.sun.com/smi/Press/sunflash/2004-09/sunflash.20040930.1.html |title=Sun Ships New Version of Java Platform |publisher=Sun Microsystems |language=en |accessdate=2006-07-08 |deadlinkdate=2019-03-04 |archiveurl=https://web.archive.org/web/20050215094036/http://www.sun.com/smi/Press/sunflash/2004-09/sunflash.20040930.1.html |archivedate=2005-02-15}} </ref><ref>{{cite web|url=https://docs.oracle.com/javase/jp/1.5.0/relnotes/features.html |title=J2SE(TM) 5.0 の新機能 |language=ja-jp |accessdate=2006-07-08}}</ref>。メモリモデル改善でマルチスレッドも軽量化した。他エディションは「J2EE 1.4」「J2ME 1.4」のままだった。この頃に「Java Card Platform」がエディション昇格し、バージョンは独自式のまま「Java Card 2.2」でリリースされた。
*[[ジェネリクス]](
*
*
* 可変長引数(
*[[アノテーション]](<code>@</code>キーワードで
*拡張<code>for</code>文(
*静的インポート文(
*[[Java Management Extensions]](MBeanを用いた[[依存性の注入]]による実行プログラムの動的再構成の最適化)
=== Java SE 6 (2006年12月11日)「Mustang」 ===
ブランド名が「Java 2」から「Java」に戻されて通称が「J2SE」から「Java SE」になった。バージョン値から小数点以下が外された。なおマイナーバージョン更新では再び小数点以下が付けられた。他エディションも「Java EE 5」「Java ME 5」になった。仮想マシンを含めた既存機能の改善と洗練に力が注がれた。
* Scripting for the Java Platform(スクリプト言語との連携サポート)
*Java Architecture for XML Binding(Java XMLアーキテクチャ)
*Java API for XML Web
*Java Compiler API(Javaコンパイラへのディレクティブ
*[[Unicode正規化]] API
*
*[[Swing]]の高速化、[[Windows Aero|Windows]]用ルック&フィールの追加、Windows[[タスクトレイ]]表示
* Update10で、Java Quick Starter(アプリ起動高速化)Java Kernel(Java環境インストール高速化)を搭載<ref>{{Cite web|url=http://internet.watch.impress.co.jp/cda/news/2008/10/22/21274.html|title=「Java SE 6 Update 10」公開、動作速度を高速化|language=ja-jp|accessdate=2008-12-03}}</ref>
=== Java SE 7 (2011年7月28日)「Dolphin」 ===
サン社を買収したオラクル社による初のメジャーバージョンリリースである。
*invoke_dynamic API(クラスインスタンスとメソッドシグネチャの組み換えによる動的ディスパッチ)
*New File I/O Library(新しいファイル入出力ライブラリ)
*Concurrency Library(並
*暗号化APIに[[楕円曲線暗号]]を導入
*ネットワークAPIに[[Stream Control Transmission Protocol|Stream Control Transmissionプロトコル]]とSockets Directプロトコルを導入
*グラフィック関連の強化。Update2で[[JavaFX]]の導入
=== Java SE 8 (2014年3月18日) ===
ここでコードネームが廃止された<ref>[http://jcp.org/en/jsr/detail?id=337 JSR 337: Java SE 8 Release Contents]</ref>。長期サポート(LTS)リリース制度下の最終版である。
*言語仕様に[[無名関数|ラムダ式]]の導入(引数 -> 関数式)
*言語仕様にメソッド参照の導入
*関数型インターフェース(引数と返値をテンプレート化できるパラメトリック多相)
*Stream API(コレクションコンテナ各要素への連続的なラムダ式適用)
*JavaScriptのコードを埋め込めるNashorn Javaスクリプトエンジンの搭載(Project Nashorn)
*型アノテーション(<code>@interface</code>で構造体化したアノテーションを定義、複数の注釈フィールドを持つ)
*反復アノテーション(バックグラウンドタスクのクラスをアドホック多相で任意日時稼働にスケジュールする)
*Date and Time API(日付時刻)
*静的結合 [[Java Native Interface]] ライブラリ
=== Java SE 9 (2017年9月21日) ===
ここからメジャーバージョンは一定の新機能蓄積を待たずに公開する毎年3月と9月の年2回定期リリース制に変更された<ref>{{Cite web|url=https://www.oracle.com/technetwork/jp/java/eol-135779-ja.html|title=Oracle Java SE サポート・ロードマップ|language=ja-jp|accessdate=2018-10-19}}</ref>。従来の長期サポート(LTS)が無くなり、原則的に半年間
*
* 言語仕様の細かな拡張(Project Coin)
*並
* Compact Stringの追加
* 「JShell」の搭載。コンソール形式でJavaコードを入力し実行結果を確認できる
196 ⟶ 120行目:
* XML catalogs(永続的URLへのマッピング)
*[[HiDPI]] Graphicsの導入(画像拡大縮小の改善)
*G1(shorter-response-timeガーベジコレクタ)
=== Java SE 10 (2018年3月20日) ===
JSR 383にて仕様規定<ref>[http://jcp.org/en/jsr/detail?id=383 JSR 383: Java™ SE 10 (18.3)]</ref>。ここから追加
* ローカル変数の[[型推論]]
*[[ルート証明書]]
*Unicode language-tag extensions(Unicode言語タグの
*ガーベジコレクタ・インターフェース(各種ガーベジコレクタの共存連携操作)
*G1(shorter-response-timeガーベジコレクタ)用パラレル機能
*ZGC(low-latencyガーベジコレクタ)第1回試作
=== Java SE 11 (2018年9月25日) ===
JSR 384にて仕様規定<ref>[http://jcp.org/en/jsr/detail?id=384 JSR 384: JavaTM SE 11 (18.9)]</ref>。Java開発環境として「Oracle JDK」と「[[OpenJDK]]」の二つが提供されるようになり、前者の商用利用は有償長期サポート(LTS)契約を結んだ顧客のみになった。Java EEのアップグレードがエクリプス財団による「Jakarta EE」に移譲されたので、JDKにEnterprise版連携モジュールが含まれなくなった。CORBAモジュールも外された。[[JavaFX|Java FX]]も取り除かれた。このバージョンは長期サポート(LTS)対象にされているが、上述の通り有償LTSである。
* Dynamic class-file
*
* HTTPクライアント実装
* Flight recorder(Javaプログラム実行トレース用の軽快な各種データ収集フレームワーク)
* Unicode 10.0.0のサポート
* ZGC(low-latencyガーベジコレクタ
=== Java SE 12 (2019年3月19日) ===
JSR 386にて仕様規定。アップデートで令和改元に向けたセキュリティ対策が施された。
* switch文を[[パターンマッチング]] 式スタイルに拡張・第1回試作
* JVM Constants API(クラスローディングに関連した仮想マシン内のクラス定数プールの操作)
*G1(shorter-response-timeガーベジコレクタ)用コレクション中断機能
*G1(shorter-response-timeガーベジコレクタ)用不要メモリ返却機能
*ZGC(low-latencyガーベジコレクタ)第3回試作
*Shenandoah(low-pause-timeガベージコレクタ)第1回試作
=== Java SE 13(2019年9月17日) ===
JSR 388にて仕様規定。「数百の小粒改良、数千のバグ修正」と宣伝された。
* ソケットAPIの
* switch文を[[パターンマッチング]] 式スタイルに拡張・第2回試作
*
*ZGC(low-latencyガーベジコレクタ)第4回試作
=== Java SE 14(2020年3月17日) ===
JSR 389にて仕様規定。「数百の小粒改良、数千のバグ修正」と宣伝された。
* Recordクラス(不変フィールド、標準アクセッサ、標準構築子を持つイミュータブルオブジェクト)第1回試作
* instanceofパターンマッチング(if文のinstanceof判定で代入変数も同時定義できる糖衣構文)第1回試作
* switch文を[[パターンマッチング]] 式スタイルに拡張・第3回試作
* Text Blocks([[文字列|文字列リテラル]] の複数行記述可能)第2回試作
* Foreign-Memory Access API (仮想マシンの外部メモリにも安全にアクセスできる)第1回試作
* ZGC(low-latencyガーベジコレクタ)第5回試作
=== Java SE 15(2020年9月15日) ===
JSR 390にて仕様規定。
*JEP-339:[https://openjdk.java.net/jeps/339 Edwards-Curve デジタル署名アルゴリズム]
*JEP-360:[https://openjdk.java.net/jeps/360 Sealedクラス・第1回試作](サブクラスを事前定義で固定化したクラス。オブジェクトの[[非交和]]=直和構造を表わす)
*[https://openjdk.java.net/jeps/371 JEP-371:Hiddenクラス](フレームワーク内限定の隠されたクラス。[[モンキーパッチ]]などに応用できる)
*JEP-373:[https://openjdk.java.net/jeps/373 データグラム・ソケットAPIの改良実装]
*JEP-375:[https://openjdk.java.net/jeps/375 instanceofパターンマッチング・第2回試作]
*[https://openjdk.java.net/jeps/377 JEP-377:ZGC(low-latencyガーベジコレクタ)第6回試作]
*[https://openjdk.java.net/jeps/378 JEP-378:Text Blocks・第3回試作]
*[https://openjdk.java.net/jeps/379 JEP-379:Shenandoah(low-pause-timeガベージコレクタ)第2回試作]
*JEP-383:[https://openjdk.java.net/jeps/383 Foreign-Memory Access API・第2回試作]
*JEP-384:[https://openjdk.java.net/jeps/384 Recordクラス・第2回試作](フィールドを不変にしたクラス。オブジェクトの[[直積集合|直積]]構造を表わす)
== 概要 ==
[[Java|Java言語]]では、[[Java Development Kit|JDK]]1.0以降、標準[[ライブラリ]]に[[クラス (コンピュータ)|クラス]]やパッケージが多数追加されただけでなく、いくつかの変更が行われてきた。J2SE 1.4以降、Java言語の進化は、[[Java Community Process]] (JCP)によって管理されてきた。このプロセスでは、Java Specification Requests(JSR)を使用してJavaプラットフォームへの追加や変更を提案・指定している。言語はJava言語仕様書(JLS)によって規定されており、JLSへの変更は[http://www.jcp.org/en/jsr/detail?id=901 JSR 901]によって管理されている。
言語の変更に加えて、[[Javaクラスライブラリ]]にも長年にわたって変更が加えられ、JDK 1.0の数百クラスからJ2SE 5では3,000クラスを超えるまでに成長した。 [[Swing]]や[[Java 2D|Java2D]]などの全く新しい[[アプリケーションプログラミングインタフェース|API]]が導入され、オリジナルのJDK 1.0のクラスやメソッドの多くが非推奨となっている。いくつかのプログラムでは、Javaプログラムを[[Javaプラットフォーム]]のあるバージョンから古いバージョンに変換することができる(例えば、Java 5.0を1.4にバックポートするなど)。
Java 11は、現在サポートされている長期サポート(LTS)バージョン(「オラクルの顧客は、Oracle Premier Supportを提供される」)である。オラクルは、「[[レガシーシステム|レガシー]]」Java 8 LTSについて、商用利用向けには2019年1月に最後の無料の「パブリック・アップデート」をリリースしたが、それ以外の場合は、少なくとも2020年12月までは、個人利用向けのパブリック・アップデートでJava 8をサポートする<ref name="Java8EOL">{{Cite web|url=https://www.oracle.com/technetwork/java/javase/eol-135779.html|title=Oracle Java SE Support Roadmap|quote=Java SE 8 is going through the End of Public Updates process for legacy releases. Oracle will continue to provide free public updates and auto updates of Java SE 8, until at least the end of December 2020 for Personal Users, and January 2019 for Commercial Users. Personal Users continue to get free Java SE 8 updates from Oracle at java.com (or via auto update)<!--, and Commercial Users continue to get free updates to Java SE 8 from OTN for free under the BCL license. Starting with the April 2019 scheduled quarterly critical patch update, Oracle Customers can access updates to Java SE 8 for commercial use from Oracle through My Oracle Support and via corporate auto update where applicable (Visit My.Oracle Support Note 1439822.1 - All Java SE Downloads on MOS – Requires Support Login). -->[..] Oracle does not plan to migrate desktops from Java SE 8 to later versions via the auto update feature.|accessdate=2019-02-08}}</ref>。Java 10は以前サポートされていたラピッドリリース版である。Java 10のサポートは、Java 11のサポートが開始されたのと同じ日、2018年9月に終了した。Java 7はパブリックサポートが終了し、Java 9はJava 10と現在のJava 11に取って代わられた短期のラピッドリリース版であったため、アップデートの受信が停止している。Java 11については、長期的なサポートはオラクルが一般向けに提供するものではなく、AdoptOpenJDKなどとして、より広範な[[OpenJDK]]コミュニティが作業を行うことが期待されている<ref name="OracleJava11LTS">{{Cite web|title=What does LTS mean for OpenJDK?|author=Reinhold|first=Mark|url=https://mail.openjdk.java.net/pipermail/jdk-dev/2018-August/001824.html|date=2018-08-17|accessdate=2018-08-28}}</ref>。
Java 14の一般提供は2020年3月17日に行われ<ref>{{Cite web|url=https://openjdk.java.net/projects/jdk/14/|title=JDK 14|website=openjdk.java.net|accessdate=2020-04-14}}</ref> 、Java 15にはアーリーアクセスビルドが含まれている。 <ref>{{Cite web|url=https://jdk.java.net/15/|title=JDK 15 Early-Access Builds|website=jdk.java.net|accessdate=2020-04-14}}</ref>
{| class="wikitable" style="margin-left:9px;"
|-
! バージョン
! リリース日
! 無料公開アップデート期限<ref name="auto9">{{Cite web|url=https://www.oracle.com/technetwork/java/java-se-support-roadmap.html|title=Oracle Java SE Support Roadmap|website=www.oracle.com}}</ref><ref>{{Cite web|url=https://adoptopenjdk.net/support.html#roadmap|title=Support | AdoptOpenJDK|website=adoptopenjdk.net}}</ref>
! 延長サポート期限
|-
| {{Version|o|JDK Beta}} || 1995 || {{dunno}} || {{dunno}}
|-
| {{Version|o|JDK 1.0}} || 1996年1月 ||{{dunno}} || {{dunno}}
|-
| {{Version|o|JDK 1.1}} || 1997年2月 ||{{dunno}} || {{dunno}}
|-
| {{Version|o|J2SE 1.2}} || 1998年12月 ||{{dunno}} || {{dunno}}
|-
| {{Version|o|J2SE 1.3}} || 2000年5月 ||{{dunno}} || {{dunno}}
|-
| {{Version|o|J2SE 1.4}} || 2002年2月 || 2008年10月 ||2013年2月
|-
| {{Version|o|J2SE 5.0}} || 2004年9月 || 2009年11月 ||2015年4月
|-
| {{Version|o|Java SE 6}} || {{date|2006年12月 }}|| 2013年4月 || 2018年12月
|-
| {{Version|o|Java SE 7}} || 2011年7月 ||{{date|2015年4月}}|| 2022年7月
|-
| {{Version|co|Java SE 8 (LTS)}} || 2014年3月 ||Oracle(商用) 2019年1月まで
Oracle(個人用) 2020年12月まで
AdoptOpenJDK 2026年5月以降も予定
Amazon Corretto 2023年6月までは保証<ref name="Corretto2018">{{cite web
| title = Introducing Amazon Corretto, a No-Cost Distribution of OpenJDK with Long-Term Support
| last = Gupta
| first = Arun
| url = https://aws.amazon.com/blogs/opensource/amazon-corretto-no-cost-distribution-openjdk-long-term-support/
| date = 2018-11-14
| accessdate = 2019-12-17}}</ref>
| 2030年12月
|-
| {{Version|o|Java SE 9}} || 2017年9月 || OpenJDK 2018年3月 || {{n/a}}
|-
| {{Version|o|Java SE 10}} || 2018年3月 || OpenJDK 2018年9月 || {{n/a}}
|-
| {{Version|co|Java SE 11 (LTS)}} || 2018年9月 || Amazon Corretto 2024年8月以降も予定<ref name="Corretto2018"></ref>
AdoptOpenJDK 2024年10月まで
| 2026年9月
|-
| {{Version|o|Java SE 12}} || 2019年3月 || OpenJDK 2019年9月 || {{n/a}}
|-
| {{Version|o|Java SE 13}} || 2019年9月 || OpenJDK 2020年3月 || {{n/a}}
|-
| {{Version|c|Java SE 14}} || 2020年3月 || OpenJDK 2020年9月 || {{n/a}}
|-
| {{Version|p|Java SE 15}} || 2020年9月 || OpenJDK 2021年3月 || {{n/a}}
|-
| {{Version|p|Java SE 16}} || 2021年3月 || OpenJDK 2021年9月 || {{n/a}}
|-
| {{Version|p|Java SE 17 (LTS)}} || 2021年9月 || {{TBA}} || {{TBA}}
|-
| colspan="4" | <small>{{Version|l|show=111101}}</small>
|}
== 参考文献 ==
{{Reflist}}
|