コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「Javaバージョン履歴」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
編集の要約なし
バージョン更新
 
(23人の利用者による、間の50版が非表示)
1行目: 1行目:
{{出典の明記|date=2021年6月}}
本稿では'''[[Java]]'''[[Javaプラットフォーム|プラットフォーム]]の基準である[[Java Platform, Standard Edition|スタンダード版]]のメジャーバージョン履歴を説明する。その他にも[[Jakarta EE|エンタープライズ版]]、[[Java Platform, Micro Edition|マイクロ版]]、[[Java Card|カード版]]といった周辺エディションが存在し、それぞれが個別にメジャーバージョン改訂を行っているが、いずれもスタンダード版改訂を基準にしそれに後発する時系列でリリースされている。


== バージョン一覧 ==
[[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]によって管理されている。
=== 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|url-status=dead}}</ref>。


* ファイル入出力
言語の変更に加えて、[[Javaクラスライブラリ]]にも長年にわたって変更が加えられ、JDK 1.0の数百クラスからJ2SE 5では3,000クラスを超えるまでに成長した。 [[Swing]]や[[Java 2D|Java2D]]などの全く新しい[[アプリケーションプログラミングインタフェース|API]]が導入され、オリジナルのJDK 1.0のクラスやメソッドの多くが非推奨となっている。いくつかのプログラムでは、Javaプログラムを[[Javaプラットフォーム]]のあるバージョンから古いバージョンに変換することができる(例えば、Java 5.0を1.4にバックポートするなど)。
* ネットワーク接続(TCPソケットとUDPソケット)
* データコレクション(Array、Vector、List、Set、Map)
* 数学演算
* アプレットとセキュリティ
*[[Abstract Window Toolkit]](グラフィカルユーザーインターフェースサポート)


=== JDK 1.1 (1997年2月19日) ===
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.&nbsp; 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>。
[[国際化と地域化|国際化]]対応され日本語版も追加された。


*[[リフレクション (情報工学)|リフレクション]](クラスメタデータ操作API)
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>
*Java Text(文章、暦、日付、数値などの国別書式)
*Input Method Framework(文章入力の国別書式)
*Java 2D(グラフィックサポート)


=== J2SE 1.2 (1998年12月8日)「Playground」 ===
Java開発チームは、2020年9月15日までにJDK 15を発表する予定である。 しかし、彼らはすでに次のバージョンのいくつかのアップデートを明らかにしている。 これまでのJDK 15を対象としたJEPは以下である。
大幅な技術刷新によりブランド名が「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|url-status=dead}}</ref>。翌年にエンタープライズ版「J2EE 1.2」とマイクロ版「J2ME 1.2」もリリースされた。

* [https://openjdk.java.net/jeps/371 JEP-371:非表示のクラス]
* [https://openjdk.java.net/jeps/372 JEP-372:Nashorn JavaScriptエンジンを削除]
* [https://openjdk.java.net/jeps/377 JEP-377:ZGC:スケーラブルな低レイテンシガベージコレクター(プロダクション)]
* [https://openjdk.java.net/jeps/378 JEP-378:テキストブロック]
* [https://openjdk.java.net/jeps/379 JEP-379:Shenandoah:少ない休止時間のガベージコレクター(プロダクション)]

{| class="wikitable" style="float:right; 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 &#124; 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>
|}
== バージョン履歴 ==
1996年の第一回公開のJavaプラットフォームは「''Java Development Kit''」通称「''JDK''」と呼ばれており、最初のバージョン数値は「1.0」に定められた。通称とバージョン値を合わせたものが製品名とされて「JDK 1.0」で市場導入されている。当初は開発チームの控えめにしたい意向で小数点第一位がメジャーバージョン値にされたが、これは不必要な謙遜という声もあった。

1998年の第三回メジャーバージョン公開である「1.2」では大幅な技術刷新をアピールするべく「''Java 2''」と次世代呼称にした。これは経営側の判断だったので開発側は小数点第一位の数値改訂を譲らなかった。製品仕様の確立で「''Development Kit''」は「''Platform''」に置き換えられた。マーケットの分化を示唆する「Standard」のエディション名も付けられた。こうして「''Java 2 Platform, Standard Edition''」の通称「''J2SE''」とバージョン値「1.2」を合わせた製品名「J2SE 1.2」で市場導入された。この次世代呼称と小数点第一位の混在名は意味が不明瞭で製品バージョンへの理解を妨げかねないと不評を買っている。この時はまだStandard版だけであったが、翌1999年にEnterprise版の「J2EE 1.2」とMicro版の「J2ME 1.2」が市場導入されて3エデイションになった。

2005年の第六回メジャーバージョン公開である「1.5」から整数部分がメジャーバージョン値にされて「5.0」になり、通称と合わせた製品名は「J2SE 5.0」になった。他のエディションは後発なので「J2EE 1.4」「J2ME 1.4」のままだった。この頃に「''Java Card Platform''」が正規のエディション認定されているが、バージョン体系は独自のままの「Java Card 2.2」であり、これは以降も継続された。

2006年の第七回メジャーバージョン公開で「''Java 2''」の次世代呼称が外されて「''Java''」になり、バージョン値からも小数点以下が外された。「''Java Platform, Standard Edition''」「''Java Platform, Enterprise Edition''」「''Java Platform, Mirco Edition''」の各通称と各バージョン値を合わせた製品名は「Java SE 6」「Java EE 5」「Java ME 5」になった。なお、マイナーバージョンアップの際には再び小数点以下が付けられた。この命名方式は現在まで続いている。

== JDK 1.0 (1996年1月23日) ==
最初のバージョン<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>。まだ国際化対応はされず英語版のみだった。

== 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]]([[ソフトウェアコンポーネント|ソフトウェアコンポート]]仕様とAPI)
*[[JDBC|Java Database Connectivity]](データベースAPI)
*[[Java Remote Method Invocation|RMI]](分散オブジェクトAPI)
*[[リフレクション (情報工学)|Java Reflection]](クラスメタデータ操作API)
*[[Abstract Window Toolkit|AWT]]のイベントモデル拡張

== J2SE 1.2 (1998年12月8日)「Playground」 ==
ここからコードネームが付けられるようになった<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>。


*<code>strictfp</code>キーワード(言語仕様、浮動小数点計算)
*<code>strictfp</code>キーワード(言語仕様、浮動小数点計算)
*仮想マシンに実行時コンパイラ(''Just-In-Time Compiler'')
*仮想マシンに実行時コンパイラ(''Just-In-Time Compiler'')
*Javaプラグイン(WEBブラウザへのアプレット実行環境挿入)
*Javaプラグイン(WEBブラウザへのアプレット実行環境挿入)
*[[Swing]](グラフィックユーザーインターフェース)
*Collection Framework(コレクションAPI)
*Security Framework(セキュリティAPI)
*Java Internet Description Language([[IDL (プログラミング言語)|IDL]]からJava CORBA用スタブ&スケルトンを生成)
*Java Internet Description Language([[IDL (プログラミング言語)|IDL]]からJava CORBA用スタブ&スケルトンを生成)
*Java Accessibility API(画面Reader、音声認識、点字端末などのユーザー補助機能)
*[[Swing]](グラフィカルAPI)
*Collection Framework(コレクションAPI)


== J2SE 1.3 (2000年5月8日)「Kestrel」 ==
=== 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>。
ここからメジャーバージョンのコードネームは鳥獣名、マイナーバージョンは昆虫名にするのが慣例になった<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|url-status=dead}}</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>。


* 仮想マシンに[[HotSpot|HotSpotエンジン]](動的再コンパイル技術と[[世代別ガベージコレクション]])
* 仮想マシンに[[HotSpot|HotSpotエンジン]](動的再コンパイル技術と[[世代別ガベージコレクション]])
*Java Platform Debugger Architecture(デバッガ・アーキテクチャ)
*Java Platform Debugger Architecture(デバッガ・アーキテクチャ)
*[[Java Naming and Directory Interface|Java Name and Directory Interface]](ネーミング&ディレクトリサービスAPI)
*[[Java Naming and Directory Interface|Java Name and Directory Interface]](ネーミング&ディレクトリサービスAPI)
*JavaSound(サウンドAPI)
*[[RMI-IIOP|RMI over IIOP]](RMIをIIOPプロトコル上でも使える仕様)
*[[RMI-IIOP|RMI over IIOP]](RMIをIIOPプロトコル上でも使える仕様)
*Java Sound(サウンドAPI)


== J2SE 1.4 (2002年2月6日)「Merlin」 ==
=== 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>。
このバージョンから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 |url-status=dead |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> キーワード(言語仕様、例外発生ディレクティブ)
*<code>assert</code> キーワード(言語仕様、デバッグ用ディレクティブ、任意条件でプログラム中断
*例外処理の連鎖格納(言語仕様)
*[[Java Web Start]]
*[[Java Web Start]]
*Regular Expression([[正規表現]]API)
*[[正規表現]]用API
*ロギング用API
*Non-blocking I/O API(非遮断ストリーム入出力API)
*New I/O(非遮断ストリーム入出力、バッファストリームAPI)
*[[ログ|Logging]](ログ取りAPI)
*Image I/O([[JPEG]]と[[Portable Network Graphics|PNG]]を使えるAPI)
*Image I/O([[JPEG]]と[[Portable Network Graphics|PNG]]を使えるAPI)
*Preferences(ツリー型のJava式セーブデータ収納庫API)
*Preferences(ツリー型のJava式セーブデータ収納庫API)
134行目: 57行目:
*Java Authentication and Authorization Service(認証&権限サービスAPI)
*Java Authentication and Authorization Service(認証&権限サービスAPI)


== J2SE 5.0 (2004年9月30日)「Tiger」 ==
=== 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>。
メジャーバージョン値が整数部分に変更された。言語仕様に大幅な拡張が加えられた<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 |url-status=dead |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>List<T></code>)
*[[ジェネリクス]](パラメトリッ多相を付加したデータコンテナクラス→ <code>List<T></code>)
* [[オートボクシング]]([[プリミティブ型|プリミティブ]]と[[プリミティブラッパークラ|ラッパークラ]]の自動変換による相互代入
*[[オートボクシング]]([[ボックス化]]プリミティブ値とラッパーインタンスの自動変換)
* [[列挙型]](<code>enum</code>キーワードで定数列挙の型を定義)
*[[列挙型]](<code>enum</code>キーワードで定数クラスを定義)
* 可変引数(最終引数の型名+3個のドットで自動配列 <code>void drawText(String... lines)</code>)
* 可変引数(引数の型名に3連ドットで配列渡しと解釈される→ <code>void drawText(String... lines)</code>)
*[[アノテーション]](<code>@</code>キーワードでクラスメタデータの各要素任意のタグワードと注釈を埋め込む)
*[[アノテーション]](<code>@</code>キーワードでクラスメタデータに注釈タグと注釈コメントを埋め込むアドホック多相
*拡張<code>for</code>文(クションコンテナから各要素を順々に取り出すのが便利になるループ文)
*拡張<code>for</code>文(対象リストの[[イテータ]]表現式になるfor文)
*静的インポート文(クラスの定数のフルパスを<code>import</code>で指定可能
*静的インポート文(クラス静的メンバのフルパスを<code>import</code>で指定できる
*[[Java Management Extensions]](MBeanを用いた[[依存性の注入]]による実行プログラム動的再構成の最適化)
*[[Java Management Extensions]](MBeanを用いた[[依存性の注入]]による実行プログラム動的再構成の最適化)
*メモリモデルの改善によるスレッド処理高速化


== Java SE 6 (2006年12月11日)「Mustang」 ==
=== Java SE 6 (2006年12月11日)「Mustang」 ===
ブランド名が「Java 2」から「Java」に戻されてプロパー名「Java Platform, Standard Edition」となり、通称が「J2SE」から「Java SE」になった。バージョン値から小数点以下が外された。なおマイナーバージョン更新では再び小数点以下が付けられた。他エディションも「Java EE 5」「Java ME 5」になった。仮想マシンを含めた既存機能の改善と洗練に力が注がれた。
仮想マシンを含めた既存機能の改善と洗練に力が注がれた。


* ジェネリクスの拡張。他言語の[[ジェネリックプログラミング]]と同等に整備した。
* Scripting for the Java Platform(スクリプト言語との連携サポート)
*Scripting for the Java Platform(スクリプト言語との連携サポート)
*Java Architecture for XML Binding(Java XMLアーキテクチャ)
*Java Architecture for XML Binding(Java XMLアーキテクチャ)
*Java API for XML Web Services
*Java API for XML Web Services(WEB向けのXML)
*Java Compiler API(Javaコンパイラへのディレクティブ的なAPI)
*Java Compiler API(Javaコンパイラへのディレクティブに特化したAPI)
*[[Unicode正規化]] API
*[[Unicode正規化]] API
*Plugging annotation(コル解析用途のアノテーション)
*差し込みアノテーションスタンス別、クラス派生別にアノテーションを埋め込めるアドホック多相
*[[Swing]]の高速化、[[Windows Aero|Windows]]用ルック&フィールの追加、Windows[[タスクトレイ]]表示
*[[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>
* Update10で、Java Quick Starter(アプリ起動高速化)Java Kernel(Java環境インストール高速化)を搭載<ref>{{Cite web|和書|url=https://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」 ==
=== Java SE 7 (2011年7月28日)「Dolphin」 ===
サン社を買収したオラクル社による初のメジャーバージョンリリースである。
サン社を買収したオラクル社による初のメジャーバージョンリリースである。


*invoke_dynamic API(クラスインスタンスとメソッドシグネチャの組み換えによる動的ディスパッチ)
*言語仕様の細かな拡張
*invoke_dynamic API(実装クラスとメソッドシグネチャの組み換えによる動的メソッド呼び出し)
*New File I/O Library(新しいファイル入出力ライブラリ)
*New File I/O Library(新しいファイル入出力ライブラリ)
*Concurrency Library(並処理系ライブラリ)
*Concurrency Library(並処理API)
*コレクションフレームワークへのティムソートの採用
*暗号化APIに[[楕円曲線暗号]]を導入
*暗号化APIに[[楕円曲線暗号]]を導入
*ネットワークAPIに[[Stream Control Transmission Protocol|Stream Control Transmissionプロトコル]]とSockets Directプロトコルを導入
*ネットワークAPIに[[Stream Control Transmission Protocol|Stream Control Transmissionプロトコル]]とSockets Directプロトコルを導入
*グラフィック関連の強化
*グラフィック関連の強化。Update2で[[JavaFX]]の導入
*Update2で、[[JavaFX]]の導入


== Java SE 8 (2014年3月18日) ==
=== Java SE 8 (2014年3月18日) ===
ここでコードネームが廃止された<ref>[http://jcp.org/en/jsr/detail?id=337 JSR 337: Java SE 8 Release Contents]</ref>。
ここでコードネームが廃止された<ref>[http://jcp.org/en/jsr/detail?id=337 JSR 337: Java SE 8 Release Contents]</ref>。長期サポート(LTS)リリース制度下の最終版である


*言語仕様に[[無名関数|ラムダ式]]の導入(引数 -> 関数式)
*言語仕様に[[無名関数|ラムダ式]]の導入(引数 関数式)
*言語仕様にメソッド参照の導入
*関数型インターフェース
*関数型インターフェース(引数と返値をテンプレート化できるパラメトリック多相)
*Stream API(コレクションコンテナ各要素への連続的なラムダ式適用)
*Stream API(コレクションコンテナ各要素への連続的なラムダ式適用)
*JavaScriptのコードを埋め込めるNashorn Javaスクリプトエンジンの搭載(Project Nashorn)
*JavaScriptのコードを埋め込めるNashorn Javaスクリプトエンジンの搭載(Project Nashorn)
*型アノテーション(<code>@interface</code>で構造体化したアノテーションを定義、複数の注釈フィールドを持つ)
*Annotation on Java types(型アノテーション)
*反復アノテーション(バックグラウンドタスクのクラスをアドホック多相で任意日時稼働にスケジュールする)
*Repeating annotations(反復アノテーション)
*Date and Time API(日付時刻)
*Date and Time API(日付時刻)
*静的結合 [[Java Native Interface]] ライブラリ
*静的結合 [[Java Native Interface]] ライブラリ


== Java SE 9 (2017年9月21日) ==
=== 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)が無くなり半年間限定になった。
ここからメジャーバージョンは一定の新機能蓄積を待たずに公開する毎年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)が無くなり、原則的に半年間サポートになった。


* 言語仕様に''package''を統合分類する「''module''」の導入(Project Jigsaw)
*''従来のパッケージ(''package'')の上にモジュール(''module'')を追加(''Project Jigsaw)
* 言語仕様の細かな拡張(Project Coin)
* 言語仕様の細かな拡張(Project Coin)
*並処理APIのアップデート、Flowク追加など
*並処理ライブラリ拡張
* Compact Stringの追加
* Compact Stringの追加
* 「JShell」の搭載。コンソール形式でJavaコードを入力し実行結果を確認できる
* 「JShell」の搭載。コンソール形式でJavaコードを入力し実行結果を確認できる
196行目: 117行目:
* XML catalogs(永続的URLへのマッピング)
* XML catalogs(永続的URLへのマッピング)
*[[HiDPI]] Graphicsの導入(画像拡大縮小の改善)
*[[HiDPI]] Graphicsの導入(画像拡大縮小の改善)
*G1(shorter-response-timeガーベジコレクタ)


== Java SE 10 (2018年3月20日) ==
=== 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>。ここから追加機能の大半は規範テクノロジ相当のJSR(仕様要求)ではなく、拡張テクノロジ相当のJEP(改提案)になった。
JSR 383にて仕様規定<ref>[http://jcp.org/en/jsr/detail?id=383 JSR 383: Java™ SE 10 (18.3)]</ref>。ここから追加要素の大半は、標準機能相当のJSR(仕様要求)ではなく、拡張機能扱いのJEP(改提案)になった。試作段階の機能がお試し用として追加されるようになった。


* ローカル変数の[[型推論]]
* ローカル変数の[[型推論]]
* ガーベジコレクタ関連
*[[ルート証明書]]
*[[ルート証明書]]
*Unicode language-tag extensions(Unicode言語タグの取り扱い
*Unicode language-tag extensions(Unicode言語タグの操作
*ガーベジコレクタ・インターフェース(各種ガーベジコレクタの共存連携操作)
*G1(shorter-response-timeガーベジコレクタ)用パラレル機能
*ZGC(low-latencyガーベジコレクタ)第1回試作


== Java SE 11 (2018年9月25日) ==
=== 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]]も取り除かれた。
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 constants(invoke_dynamic拡張、動的ロードされたクラス定数ブートストラップ呼出
* Dynamic class-file constants(拡張invoke_dynamicクラスローディングによるクラス静的メンバ動的バインディング
* [[無名関数|ラムダ式]]の型推論
*[[無名関数|ラムダ式]]の引数の型推論
* HTTPクライアント実装へのAPI
* HTTPクライアント実装API
* Flight recorder(Javaプログラム実行トレース用の軽快な各種データ収集フレームワーク)
* Flight recorder(Javaプログラム実行トレース用の軽快な各種データ収集フレームワーク)
* Unicode 10.0.0のサポート
* Unicode 10.0.0のサポート
* ガーベジコレクタ関連
* ZGC(low-latencyガーベジコレクタ)第2回試作


== Java SE 12 (2019年3月19日) ==
=== Java SE 12 (2019年3月19日) ===
JSR 386にて仕様規定。アップデートで令和改元に向けたセキュリティ対策が施された。
JSR 386にて仕様規定。アップデートで令和改元に向けたセキュリティ対策が施された。


* switch文を[[パターンマッチング]] 式スタイルに拡張・第1回試作
* ガーベジコレクタ関連
* JVM Constants API(クラスローディングに関連した仮想マシン内のクラス定数プールの操作)
* switch文の拡張
*G1(shorter-response-timeガーベジコレクタ)用コレクション中断機能
* JVM Constants API(主にクラスの動的ロードに関連した仮想マシン内の定数プールの操作)
*G1(shorter-response-timeガーベジコレクタ)用不要メモリ返却機能
*ZGC(low-latencyガーベジコレクタ)第3回試作
*Shenandoah(low-pause-timeガベージコレクタ)第1回試作


== Java SE 13(2019年9月17日) ==
=== Java SE 13(2019年9月17日) ===
JSR 388にて仕様規定。「数百の小粒改良、数千のバグ修正」と宣伝された。
JSR 388にて仕様規定。「数百の小粒改良、数千のバグ修正」と宣伝された。


* ソケットAPIの実装
* ソケットAPIの改良実装
* switch文を[[パターンマッチング]] 式スタイルに拡張・第2回試作
* switch文の拡張
* Text Blocks(文字列定義の複数行
*Text Blocks([[文字列|文字列リテラル]]の複数行記述可能第1回試作
*ZGC(low-latencyガーベジコレクタ)第4回試作


== Java SE 14(2020年3月17日) ==
=== Java SE 14(2020年3月17日) ===
JSR 389にて仕様規定。
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 SE 16 (2021年3月16日)===
JSR 391にて仕様規定<ref>[https://www.oracle.com/jp/corporate/pressrelease/jp20210323.html オラクル、Java 16を発表]</ref>。

*[https://openjdk.java.net/jeps/338 JEP 338: ベクトルAPI]
*[https://openjdk.java.net/jeps/347 JEP 347: C++14言語機能の有効化]
*[https://openjdk.java.net/jeps/357 JEP 357: MercurialからGitへの移行]
*[https://openjdk.java.net/jeps/369 JEP 369: GitHubへの移行]
*[https://openjdk.java.net/jeps/376 JEP 376: ZGC:並列スレッドスタック処理]
*[https://openjdk.java.net/jeps/380 JEP 380: UNIXドメイン・ソケット・チャネル]
*[https://openjdk.java.net/jeps/386 JEP 386: Alpine Linuxポート]
*[https://openjdk.java.net/jeps/387 JEP 387: Elastic Metaspace]
*[https://openjdk.java.net/jeps/388 JEP 388: Windows/Aarch64ポート]
*[https://openjdk.java.net/jeps/389 JEP 389: 外部リンカーAPI]
*[https://openjdk.java.net/jeps/390 JEP 390: 値ベース・クラスの警告]
*[https://openjdk.java.net/jeps/392 JEP 392: パッケージング・ツール]
*[https://openjdk.java.net/jeps/393 JEP 393: 外部メモリ・アクセスAPI]
*[https://openjdk.java.net/jeps/394 JEP 394: instanceofのパターン・マッチング]
*[https://openjdk.java.net/jeps/395 JEP 395: Records]
*[https://openjdk.java.net/jeps/396 JEP 396: JDK internalをデフォルトで強固にカプセル化]
*[https://openjdk.java.net/jeps/397 JEP 397: シールド・クラス(第2プビュー)]

===Java SE 17 (2021年9月14日) ===
JSR 392にて仕様規定<ref>[https://www.oracle.com/jp/news/announcement/java17-jp-2021-09-17/ オラクル、Java 17をリリース]</ref>。

*[https://openjdk.java.net/jeps/306 JEP 306: Always-Strict Floating-Point セマンティクスのリストア]
*[https://openjdk.java.net/jeps/356 JEP 356: 疑似乱数ジェネレーターの強化]
*[https://openjdk.java.net/jeps/382 JEP 382: 新しいmacOSレンダリング・パイプライン]
*[https://openjdk.java.net/jeps/391 JEP 391: macOS AArch64 Port]
*[https://openjdk.java.net/jeps/398 JEP 398: Applet APIの廃止]
*[https://openjdk.java.net/jeps/403 JEP 403: JDK内部の強力なカプセル化]
*[https://openjdk.java.net/jeps/406 JEP 406: スイッチのパターン・マッチング(プレビュー)]
*[https://openjdk.java.net/jeps/407 JEP 407: RMIアクティベーションの削除]
*[https://openjdk.java.net/jeps/409 JEP 409: シール・クラス]
*[https://openjdk.java.net/jeps/410 JEP 410: 試験的AOTおよびJITコンパイラの削除]
*[https://openjdk.java.net/jeps/411 JEP 411: Security Managerの削除に向けた非推奨]
*[https://openjdk.java.net/jeps/412 JEP 412: 外部関数およびメモリAPI(インキュベーター)]
*[https://openjdk.java.net/jeps/414 JEP 414: ベクトルAPI(セカンド・インキュベーター)]

===Java SE 18 (2022年3月22日) ===
JSR 393にて仕様規定<ref>[https://www.oracle.com/jp/news/announcement/oracle-releases-java-18-2022-03-23/ オラクル、Java 18を発表]</ref>。

*[https://openjdk.org/jeps/400 JEP 400: UTF-8(デフォルト)]
*[https://openjdk.org/jeps/408 JEP 408: Simple Web Server]
*[https://openjdk.org/jeps/413 JEP 413: Java APIドキュメントのEPコード・スニペット]
*[https://openjdk.org/jeps/416 JEP 416: メソッド・ハンドルによるCore Reflectionの再実装]
*[https://openjdk.org/jeps/417 JEP 417: Vector API(第3インキュベータ)]
*[https://openjdk.org/jeps/418 JEP 418: インターネット・アドレス解決SPI]
*[https://openjdk.org/jeps/419 JEP 419: 外部関数・メモリAPI(第2インキュベータ)]
*[https://openjdk.org/jeps/420 JEP 420: Switchのパターン・マッチング(第2プレビュー)]
*[https://openjdk.org/jeps/421 JEP 421: ファイナライズを非推奨とし削除に備える]

===Java SE 19 (2022年9月20日) ===
JSR 394にて仕様規定<ref>[https://www.oracle.com/jp/news/announcement/oracle-releases-java-19-2022-09-20/ オラクル、Java 19をリリース]</ref>。

*[https://openjdk.org/jeps/405 JEP 405: レコード・パターン(プレビュー)]
*[https://openjdk.org/jeps/422 JEP 422: Linux/RISC-V への移植]
*[https://openjdk.org/jeps/424 JEP 424: 外部関数・メモリAPI(プレビュー)]
*[https://openjdk.org/jeps/425 JEP 425: 仮想スレッド(プレビュー)]
*[https://openjdk.org/jeps/426 JEP 426: ベクトルAPI(第4インキュベーター)]
*[https://openjdk.org/jeps/427 JEP 427: switchのパターン・マッチング(第3プレビュー)]
*[https://openjdk.org/jeps/428 JEP 428: 構造化された並行性(インキュベーター)]

===Java SE 20 (2023年3月21日) ===
JSR 395にて仕様規定<ref>[https://www.oracle.com/jp/news/announcement/oracle-releases-java-20-2023-03-21/ オラクル、Java 20をリリース]</ref>。

*[https://openjdk.org/jeps/429 JEP 429: スコープ値(インキュベータ)]
*[https://openjdk.org/jeps/432 JEP 432: レコード・パターン(第2プレビュー)]
*[https://openjdk.org/jeps/433 JEP 433: Pattern Matching for Switch(第4プレビュー)]
*[https://openjdk.org/jeps/434 JEP 434: Foreign Function & Memory API(第2プレビュー)]
*[https://openjdk.org/jeps/436 JEP 436: 仮想スレッド(第2プレビュー)]
*[https://openjdk.org/jeps/437 JEP 437: 構造化された並行性(第2インキュベーター)]
*[https://openjdk.org/jeps/438 JEP 438: ベクトルAPI(第5インキュベーター)]

===Java SE 21 (2023年9月19日) ===
JSR 396にて仕様規定<ref>[https://www.oracle.com/jp/news/announcement/ocw-oracle-releases-java-21-2023-09-19/ オラクル、Java 21のリリースとサポート・ロードマップの延長を発表]</ref>。

*[https://openjdk.org/jeps/430 JEP 430: 文字列テンプレート(プレビュー)]
*[https://openjdk.org/jeps/434 JEP 434: Foreign Function & Memory API(第3プレビュー)]
*[https://openjdk.org/jeps/439 JEP 439: 世代別ZGC]
*[https://openjdk.org/jeps/440 JEP 440: レコード・パターン(第3プレビュー)]
*[https://openjdk.org/jeps/441 JEP 441: Pattern Matching for Switch]
*[https://openjdk.org/jeps/443 JEP 443: 無名のパターンと変数(プレビュー)]
*[https://openjdk.org/jeps/444 JEP 444: 仮想スレッド]
*[https://openjdk.org/jeps/445 JEP 445: 無名のクラスとインスタンス・メイン・メソッド(プレビュー)]
*[https://openjdk.org/jeps/446 JEP 446: スコープ値(プレビュー)]
*[https://openjdk.org/jeps/448 JEP 448: Vector API(第6インキュベーター)]
*[https://openjdk.org/jeps/453 JEP 453: 構造化された並行性(プレビュー)]

===Java SE 22 (2024年3月19日) ===
JSR 397にて仕様規定<ref>[https://www.oracle.com/jp/news/announcement/oracle-releases-java-22-2024-03-19/ オラクル、Java 22をリリース]</ref>。

*[https://openjdk.org/jeps/423 JEP 423: G1領域の固定]
*[https://openjdk.org/jeps/447 JEP 447:super(...)の前の文(プレビュー)]
*[https://openjdk.org/jeps/454 JEP 454: Foreign Function & Memory API]
*[https://openjdk.org/jeps/456 JEP 456: 無名変数とパターン]
*[https://openjdk.org/jeps/457 JEP 457: Class-File API (プレビュー)]
*[https://openjdk.org/jeps/458 JEP 458: マルチファイル・ソース・コード・プログラムの起動]
*[https://openjdk.org/jeps/459 JEP 459: 文字列テンプレート(第2プレビュー)]
*[https://openjdk.org/jeps/460 JEP 460: Vector API(第7インキュベーター)]
*[https://openjdk.org/jeps/461 JEP 461: Stream Gatherers (プレビュー)]
*[https://openjdk.org/jeps/462 JEP 462: 構造化された並行性 (第2プレビュー)]
*[https://openjdk.org/jeps/463 JEP 463: 暗黙的に宣言されたクラスとインスタンスのメイン・メソッド(第2プレビュー)]
*[https://openjdk.org/jeps/464 JEP 464: スコープ値(第2プレビュー)]

===Java SE 23 (2024年9月17日) ===
JSR 398にて仕様規定<ref>[https://www.oracle.com/jp/news/announcement/oracle-releases-java-23-2024-09-17/ オラクル、Java 23をリリース]</ref>。

*[https://openjdk.org/jeps/455 JEP 455: プリミティブ型のパターン、instanceof、switch(プレビュー)]
*[https://openjdk.org/jeps/466 JEP 466: Class-File API (第2プレビュー)]
*[https://openjdk.org/jeps/467 JEP 467: Markdownドキュメント・コメント]
*[https://openjdk.org/jeps/469 JEP 469: Vector API(第8インキュベーター)]
*[https://openjdk.org/jeps/471 JEP 471: sun.misc.unsafeのメモリアクセス・メソッドを削除を予定した非推奨に設定]
*[https://openjdk.org/jeps/473 JEP 473: Stream Gatherers (第2プレビュー)]
*[https://openjdk.org/jeps/474 JEP 474: ZGC: 世代別モードのデフォルト化]
*[https://openjdk.org/jeps/476 JEP 476: モジュール・インポート宣言(プレビュー)]
*[https://openjdk.org/jeps/477 JEP 477: 暗黙的に宣言されたクラスとインスタンスのメイン・メソッド(第3プレビュー)]
*[https://openjdk.org/jeps/480 JEP 480: 構造化された並行性 (第3プレビュー)]
*[https://openjdk.org/jeps/481 JEP 481: スコープ値(第3プレビュー)]
*[https://openjdk.org/jeps/482 JEP 482: 柔軟なコンストラクタ本体(第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、17、21は、現在サポートされている長期サポート(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.&nbsp; 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以降については、長期的なアップデートはオラクルが無償で提供するものではなく、より広範な[[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 21の一般提供は2023年9月19日に行われた<ref>{{Cite web|url=https://openjdk.org/projects/jdk/21/|title=JDK 21|website=openjdk.org|accessdate=2024-01-15}}</ref>。

== 各版リリース日/サポート期限一覧 ==
{| class="wikitable" style="margin-left:9px;"
|-
! バージョン
! リリース日
! colspan="2"|無料公開アップデート期限<ref name="OracleJavaRoadmap">{{Cite web|url=https://www.oracle.com/technetwork/java/java-se-support-roadmap.html|title=Oracle Java SE Support Roadmap|website=www.oracle.com|accessdate=2021-08-03}}</ref><ref>{{Cite web|url=https://adoptium.net/support.html#roadmap|title=Support &#124; Adoptium - Open source, prebuilt OpenJDK binaries|website=adoptium.net|accessdate=2021-08-03}}</ref>
! 延長サポート期限 (Oracleによる有償)<ref name="OracleJavaRoadmap"></ref>
|-
| {{Version|o|JDK Beta}} || 1995 || colspan="2"|{{dunno}} || {{dunno}}
|-
| {{Version|o|JDK 1.0}} || 1996年1月 ||colspan="2"|{{dunno}} || {{dunno}}
|-
| {{Version|o|JDK 1.1}} || 1997年2月 ||colspan="2"|{{dunno}} || {{dunno}}
|-
| {{Version|o|J2SE 1.2}} || 1998年12月 ||colspan="2"|{{dunno}} || {{dunno}}
|-
| {{Version|o|J2SE 1.3}} || 2000年5月 ||colspan="2"|{{dunno}} || {{dunno}}
|-
| {{Version|o|J2SE 1.4}} || 2002年2月 || colspan="2"|2008年10月 ||2013年2月
|-
| {{Version|o|J2SE 5.0}} || 2004年9月 || colspan="2"|2009年11月 ||2015年4月
|-
| {{Version|o|Java SE 6}} || {{date|2006年12月}}|| colspan="2"|2013年4月 || 2018年12月
|-
| {{Version|o|Java SE 7}} || 2011年7月 ||colspan="2"|{{date|2015年4月}}|| 2022年7月
|-
| rowspan="6" {{Version|co|Java SE 8 (LTS)}} || rowspan="6"|2014年3月 ||Oracle(商用) || 2019年1月まで || rowspan="6"|2030年12月
|-
|Oracle(個人用)||無期限
|-
|Eclipse Temurin || 最短で2026年11月<ref name="TemurinEOL">Adoptiumによると、アップストリームがメンテナンスされている限りはLTSリリースのバイナリのビルドを継続するとしている。{{cite web|title=Temurin™ Support | Adoptium|url=https://adoptium.net/support/#roadmap|accessdate=2024-06-26}}</ref>
|-
|Red Hat ||2026年11月<ref name="RedHatEOL">{{cite web|title=OpenJDK Life Cycle and Support Policy - Red Hat Customer Portal | AWS|url=https://access.redhat.com/articles/1299013|accessdate=2024-06-26}}</ref>
|-
|Amazon Corretto ||2026年7月<ref name="CorrettoEOL">{{cite web|title=よくある質問 - Amazon Corretto | AWS|url=https://aws.amazon.com/jp/corretto/faqs/#support|accessdate=2024-06-26}}</ref>
|-
|Azul Zulu || 2030年12月<ref name="AzulEOL">{{cite web|title=Azul Java Support Roadmap - Azul | Better Java Performance, Superior Java Support|url=https://www.azul.com/ja/azul-support-roadmap/|accessdate=2024-06-26}}</ref>
|-
| {{Version|o|Java SE 9}} || 2017年9月 || Oracle || 2018年3月 || {{n/a}}
|-
| {{Version|o|Java SE 10}} || 2018年3月 || Oracle || 2018年9月 || {{n/a}}
|-
| rowspan="5" {{Version|co|Java SE 11 (LTS)}} || rowspan="5"|2018年9月 || Oracle OpenJDK || 2019年9月 || rowspan="5"|2032年1月
|-
|Eclipse Temurin || 最短で2027年10月<ref name="TemurinEOL"></ref>
|-
|Red Hat ||2024年10月<ref name="RedHatEOL"></ref>
|-
|Amazon Corretto || 2027年10月<ref name="CorrettoEOL"></ref>
|-
|Azul Zulu || 2032年1月<ref name="AzulEOL"></ref>
|-
| {{Version|o|Java SE 12}} || 2019年3月 || Oracle OpenJDK || 2019年9月 || {{n/a}}
|-
| {{Version|o|Java SE 13}} || 2019年9月 || Oracle OpenJDK || 2020年3月 || {{n/a}}
|-
| {{Version|o|Java SE 14}} || 2020年3月 || Oracle OpenJDK || 2020年9月 || {{n/a}}
|-
| {{Version|o|Java SE 15}} || 2020年9月 || Oracle OpenJDK || 2021年3月 || {{n/a}}
|-
| {{Version|o|Java SE 16}} || 2021年3月 || Oracle OpenJDK || 2021年9月 || {{n/a}}
|-
| rowspan="5" {{Version|co|Java SE 17 (LTS)}} || rowspan="5"|2021年9月 || Oracle OpenJDK || 2026年9月 || rowspan="5"|2029年9月
|-
|Eclipse Temurin || 最短で2027年10月<ref name="TemurinEOL"></ref>
|-
|Red Hat ||2027年10月<ref name="RedHatEOL"></ref>
|-
|Amazon Corretto || 2029年10月<ref name="CorrettoEOL"></ref>
|-
|Azul Zulu || 2029年9月<ref name="AzulEOL"></ref>
|-
| {{Version|o|Java SE 18}} || 2022年3月 ||Oracle OpenJDK || 2022年9月 || {{n/a}}
|-
| {{Version|o|Java SE 19}} || 2022年9月 ||Oracle OpenJDK || 2023年3月 || {{n/a}}
|-
| {{Version|o|Java SE 20}} || 2023年3月 ||Oracle OpenJDK || 2023年9月 || {{n/a}}
|-
| rowspan="5" {{Version|co|Java SE 21(LTS)}} || rowspan="5"|2023年9月 || Oracle OpenJDK || 2028年9月 || rowspan="5"|2031年9月
|-
|Eclipse Temurin || 最短で2029年12月<ref name="TemurinEOL"></ref>
|-
|Red Hat ||2029年12月<ref name="RedHatEOL"></ref>
|-
|Amazon Corretto || 2030年10月<ref name="CorrettoEOL"></ref>
|-
|Azul Zulu || 2031年9月<ref name="AzulEOL"></ref>
|-
| {{Version|o|Java SE 22}} || 2024年3月 ||Oracle OpenJDK || 2024年9月 || {{n/a}}
|-
| {{Version|c|Java SE 23}} || 2024年9月 ||Oracle OpenJDK || 2025年3月 || {{n/a}}
|-
| {{Version|p|Java SE 24}} || 2025年3月 ||Oracle OpenJDK || 2025年9月 || {{n/a}}
|-
| colspan="5" | <small>{{Version|l|show=111101}}</small>
|}


== 脚注 ==
* Recordクラス(メンバ変数不変でコンストラクタと標準メソッドが自動定義されるイミュータブルオブジェクト)
* パターンマッチングinstanceof構文(if文のinstanceof判定で変数も同時定義できる糖衣構文)
* switch文のcase結果値を代入式に組み込める糖衣構文
* Text Blocks(文字列定義の複数行化)
* Foreign-Memory Access API (仮想マシンヒープの外部メモリにも安全にアクセスできる)
* Zガベージコレクタ
== 参考文献 ==
{{Reflist}}
{{Reflist}}



2024年9月18日 (水) 10:23時点における最新版

本稿ではJavaプラットフォームの基準であるスタンダード版のメジャーバージョン履歴を説明する。その他にもエンタープライズ版マイクロ版カード版といった周辺エディションが存在し、それぞれが個別にメジャーバージョン改訂を行っているが、いずれもスタンダード版改訂を基準にしそれに後発する時系列でリリースされている。

バージョン一覧

[編集]

JDK 1.0 (1996年1月23日)

[編集]

Javaプラットフォームの初回バージョンは、ブランド名「Java」プロダクト名「Development Kit」からプロパー名「Java Development Kit」とネーミングされ通称は「JDK」とされた。当初のメジャーバージョン値は小数点第一位にされた。通称にバージョン値を付けたものがリリース名になった。まだ国際化対応はされず英語版のみだった[1]

  • ファイル入出力
  • ネットワーク接続(TCPソケットとUDPソケット)
  • データコレクション(Array、Vector、List、Set、Map)
  • 数学演算
  • アプレットとセキュリティ
  • Abstract Window Toolkit(グラフィカルユーザーインターフェースサポート)

JDK 1.1 (1997年2月19日)

[編集]

国際化対応され日本語版も追加された。

  • リフレクション(クラスメタデータ操作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」になった。ここからコードネームが付けられるようになった[2]。翌年にエンタープライズ版「J2EE 1.2」とマイクロ版「J2ME 1.2」もリリースされた。

  • strictfpキーワード(言語仕様、浮動小数点計算)
  • 仮想マシンに実行時コンパイラ(Just-In-Time Compiler
  • Javaプラグイン(WEBブラウザへのアプレット実行環境挿入)
  • Swing(グラフィックユーザーインターフェース)
  • Collection Framework(コレクションAPI)
  • Security Framework(セキュリティAPI)
  • Java Internet Description Language(IDLからJava CORBA用スタブ&スケルトンを生成)
  • Java Accessibility API(画面Reader、音声認識、点字端末などのユーザー補助機能)

J2SE 1.3 (2000年5月8日)「Kestrel」

[編集]

ここからメジャーバージョンのコードネームは鳥獣名、マイナーバージョンは昆虫名にするのが慣例になった[3][4]

J2SE 1.4 (2002年2月6日)「Merlin」

[編集]

このバージョンからJavaコミュニティプロセス(Java Community Process)による仕様策定が開始された[5][6][7]

  • assert キーワード(言語仕様、デバッグ用ディレクティブ、任意条件でプログラム中断)
  • Java Web Start
  • 正規表現用API
  • ロギング用API
  • New I/O(非遮断ストリーム入出力、バッファストリームAPI)
  • Image I/O(JPEGPNGを使えるAPI)
  • Preferences(ツリー型のJava式セーブデータ収納庫API)
  • Java API for XML ProcessingXMLパーサ&マニュピレータAPI、XSLTフォーマットAPI)
  • Java Cryptography Extension(暗号化API)
  • Java Secure Socket Extension(TLS / SSL用API)
  • Java Authentication and Authorization Service(認証&権限サービスAPI)

J2SE 5.0 (2004年9月30日)「Tiger」

[編集]

メジャーバージョン値が整数部分に変更された。言語仕様に大幅な拡張が加えられた[8][9]。メモリモデル改善でマルチスレッドも軽量化した。他エディションは「J2EE 1.4」「J2ME 1.4」のままだった。この頃に「Java Card Platform」がエディション昇格し、バージョンは独自式のまま「Java Card 2.2」でリリースされた。

  • ジェネリクス(パラメトリック多相を付加したデータコンテナクラス→ List<T>
  • オートボクシングボックス化、プリミティブ値とラッパーインスタンスの自動変換)
  • 列挙型enumキーワードで定数クラスを定義)
  • 可変長引数(引数欄の型名に3連ドットで配列渡しと解釈される→ void drawText(String... lines)
  • アノテーション@キーワードでクラスメタデータに注釈タグと注釈コメントを埋め込むアドホック多相)
  • 拡張for文(対象リストのイテレータ表現式になるfor文)
  • 静的インポート文(クラス静的メンバのフルパスをimportで指定できる)
  • Java Management Extensions(MBeanを用いた依存性の注入による実行プログラムの動的再構成の最適化)

Java SE 6 (2006年12月11日)「Mustang」

[編集]

ブランド名が「Java 2」から「Java」に戻されてプロパー名「Java Platform, Standard Edition」となり、通称が「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 Services(WEB向けのXML)
  • Java Compiler API(Javaコンパイラへのディレクティブに特化したAPI)
  • Unicode正規化 API
  • 差し込みアノテーション(インスタンス別、クラス派生別にアノテーションを埋め込めるアドホック多相)
  • Swingの高速化、Windows用ルック&フィールの追加、Windowsタスクトレイ表示
  • Update10で、Java Quick Starter(アプリ起動高速化)Java Kernel(Java環境インストール高速化)を搭載[10]

Java SE 7 (2011年7月28日)「Dolphin」

[編集]

サン社を買収したオラクル社による初のメジャーバージョンリリースである。

  • invoke_dynamic API(クラスインスタンスとメソッドシグネチャの組み換えによる動的ディスパッチ)
  • New File I/O Library(新しいファイル入出力ライブラリ)
  • Concurrency Library(並行処理API)
  • 暗号化APIに楕円曲線暗号を導入
  • ネットワークAPIにStream Control TransmissionプロトコルとSockets Directプロトコルを導入
  • グラフィック関連の強化。Update2でJavaFXの導入

Java SE 8 (2014年3月18日)

[編集]

ここでコードネームが廃止された[11]。長期サポート(LTS)リリース制度下の最終版である。

  • 言語仕様にラムダ式の導入(引数 → 関数式)
  • 言語仕様にメソッド参照の導入
  • 関数型インターフェース(引数と返値をテンプレート化できるパラメトリック多相)
  • Stream API(コレクションコンテナ各要素への連続的なラムダ式適用)
  • JavaScriptのコードを埋め込めるNashorn Javaスクリプトエンジンの搭載(Project Nashorn)
  • 型アノテーション(@interfaceで構造体化したアノテーションを定義、複数の注釈フィールドを持つ)
  • 反復アノテーション(バックグラウンドタスクのクラスをアドホック多相で任意日時稼働にスケジュールする)
  • Date and Time API(日付時刻)
  • 静的結合 Java Native Interface ライブラリ

Java SE 9 (2017年9月21日)

[編集]

ここからメジャーバージョンは一定の新機能蓄積を待たずに公開する毎年3月と9月の年2回定期リリース制に変更された[12]。従来の長期サポート(LTS)が無くなり、原則的に半年間サポートになった。

  • 従来のパッケージ(package)の上にモジュール(module)を追加(Project Jigsaw)
  • 言語仕様の細かな拡張(Project Coin)
  • 並行処理ライブラリの拡張
  • Compact Stringの追加
  • 「JShell」の搭載。コンソール形式でJavaコードを入力し実行結果を確認できる
  • 「The Java Linker」の搭載。ユーザー環境に最適なモジュールと仮想マシンモードを自動選択実行する
  • 仮想マシンに前方コンパイル(Ahead-Of-Time Compilation)の導入
  • XML catalogs(永続的URLへのマッピング)
  • HiDPI Graphicsの導入(画像拡大縮小の改善)
  • G1(shorter-response-timeガーベジコレクタ)

Java SE 10 (2018年3月20日)

[編集]

JSR 383にて仕様規定[13]。ここから追加要素の大半は、標準機能相当のJSR(仕様要求)ではなく、拡張機能扱いのJEP(改善提案)になった。試作段階の機能がお試し用として追加されるようになった。

  • ローカル変数の型推論
  • ルート証明書
  • Unicode language-tag extensions(Unicode言語タグの操作)
  • ガーベジコレクタ・インターフェース(各種ガーベジコレクタの共存連携操作)
  • G1(shorter-response-timeガーベジコレクタ)用パラレル機能
  • ZGC(low-latencyガーベジコレクタ)第1回試作

Java SE 11 (2018年9月25日)

[編集]

JSR 384にて仕様規定[14]。Java開発環境として「Oracle JDK」と「OpenJDK」の二つが提供されるようになり、前者の商用利用は有償長期サポート(LTS)契約を結んだ顧客のみになった。Java EEのアップグレードがエクリプス財団による「Jakarta EE」に移譲されたので、JDKにEnterprise版連携モジュールが含まれなくなった。CORBAモジュールも外された。Java FXも取り除かれた。このバージョンは長期サポート(LTS)対象にされているが、上述の通り有償LTSである。

  • Dynamic class-file constants(拡張invoke_dynamic、クラスローディングによるクラス静的メンバの動的バインディング)
  • ラムダ式の引数の型推論
  • HTTPクライアント実装用API
  • Flight recorder(Javaプログラム実行トレース用の軽快な各種データ収集フレームワーク)
  • Unicode 10.0.0のサポート
  • ZGC(low-latencyガーベジコレクタ)第2回試作

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回試作
  • Text Blocks(文字列リテラルの複数行記述可能)第1回試作
  • 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にて仕様規定。

Java SE 16 (2021年3月16日)

[編集]

JSR 391にて仕様規定[15]

Java SE 17 (2021年9月14日)

[編集]

JSR 392にて仕様規定[16]

Java SE 18 (2022年3月22日)

[編集]

JSR 393にて仕様規定[17]

Java SE 19 (2022年9月20日)

[編集]

JSR 394にて仕様規定[18]

Java SE 20 (2023年3月21日)

[編集]

JSR 395にて仕様規定[19]

Java SE 21 (2023年9月19日)

[編集]

JSR 396にて仕様規定[20]

Java SE 22 (2024年3月19日)

[編集]

JSR 397にて仕様規定[21]

Java SE 23 (2024年9月17日)

[編集]

JSR 398にて仕様規定[22]

概要

[編集]

Java言語では、JDK1.0以降、標準ライブラリクラスやパッケージが多数追加されただけでなく、いくつかの変更が行われてきた。J2SE 1.4以降、Java言語の進化は、Java Community Process (JCP)によって管理されてきた。このプロセスでは、Java Specification Requests(JSR)を使用してJavaプラットフォームへの追加や変更を提案・指定している。言語はJava言語仕様書(JLS)によって規定されており、JLSへの変更はJSR 901によって管理されている。

言語の変更に加えて、Javaクラスライブラリにも長年にわたって変更が加えられ、JDK 1.0の数百クラスからJ2SE 5では3,000クラスを超えるまでに成長した。 SwingJava2Dなどの全く新しいAPIが導入され、オリジナルのJDK 1.0のクラスやメソッドの多くが非推奨となっている。いくつかのプログラムでは、JavaプログラムをJavaプラットフォームのあるバージョンから古いバージョンに変換することができる(例えば、Java 5.0を1.4にバックポートするなど)。

Java 11、17、21は、現在サポートされている長期サポート(LTS)バージョン(「オラクルの顧客は、Oracle Premier Supportを提供される」)である。オラクルは、「レガシー」Java 8 LTSについて、商用利用向けには2019年1月に最後の無料の「パブリック・アップデート」をリリースしたが、それ以外の場合は、少なくとも2020年12月までは、個人利用向けのパブリック・アップデートでJava 8をサポートする[23]。Java 10は以前サポートされていたラピッドリリース版である。Java 10のサポートは、Java 11のサポートが開始されたのと同じ日、2018年9月に終了した。Java 7はパブリックサポートが終了し、Java 9はJava 10と現在のJava 11に取って代わられた短期のラピッドリリース版であったため、アップデートの受信が停止している。Java 11以降については、長期的なアップデートはオラクルが無償で提供するものではなく、より広範なOpenJDKコミュニティが作業を行うことが期待されている[24]

Java 21の一般提供は2023年9月19日に行われた[25]

各版リリース日/サポート期限一覧

[編集]
バージョン リリース日 無料公開アップデート期限[26][27] 延長サポート期限 (Oracleによる有償)[26]
サポート終了:JDK Beta 1995 ? ?
サポート終了:JDK 1.0 1996年1月 ? ?
サポート終了:JDK 1.1 1997年2月 ? ?
サポート終了:J2SE 1.2 1998年12月 ? ?
サポート終了:J2SE 1.3 2000年5月 ? ?
サポート終了:J2SE 1.4 2002年2月 2008年10月 2013年2月
サポート終了:J2SE 5.0 2004年9月 2009年11月 2015年4月
サポート終了:Java SE 6 2006年12月 2013年4月 2018年12月
サポート終了:Java SE 7 2011年7月 2015年4月 2022年7月
サポート中:Java SE 8 (LTS) 2014年3月 Oracle(商用) 2019年1月まで 2030年12月
Oracle(個人用) 無期限
Eclipse Temurin 最短で2026年11月[28]
Red Hat 2026年11月[29]
Amazon Corretto 2026年7月[30]
Azul Zulu 2030年12月[31]
サポート終了:Java SE 9 2017年9月 Oracle 2018年3月
サポート終了:Java SE 10 2018年3月 Oracle 2018年9月
サポート中:Java SE 11 (LTS) 2018年9月 Oracle OpenJDK 2019年9月 2032年1月
Eclipse Temurin 最短で2027年10月[28]
Red Hat 2024年10月[29]
Amazon Corretto 2027年10月[30]
Azul Zulu 2032年1月[31]
サポート終了:Java SE 12 2019年3月 Oracle OpenJDK 2019年9月
サポート終了:Java SE 13 2019年9月 Oracle OpenJDK 2020年3月
サポート終了:Java SE 14 2020年3月 Oracle OpenJDK 2020年9月
サポート終了:Java SE 15 2020年9月 Oracle OpenJDK 2021年3月
サポート終了:Java SE 16 2021年3月 Oracle OpenJDK 2021年9月
サポート中:Java SE 17 (LTS) 2021年9月 Oracle OpenJDK 2026年9月 2029年9月
Eclipse Temurin 最短で2027年10月[28]
Red Hat 2027年10月[29]
Amazon Corretto 2029年10月[30]
Azul Zulu 2029年9月[31]
サポート終了:Java SE 18 2022年3月 Oracle OpenJDK 2022年9月
サポート終了:Java SE 19 2022年9月 Oracle OpenJDK 2023年3月
サポート終了:Java SE 20 2023年3月 Oracle OpenJDK 2023年9月
サポート中:Java SE 21(LTS) 2023年9月 Oracle OpenJDK 2028年9月 2031年9月
Eclipse Temurin 最短で2029年12月[28]
Red Hat 2029年12月[29]
Amazon Corretto 2030年10月[30]
Azul Zulu 2031年9月[31]
サポート終了:Java SE 22 2024年3月 Oracle OpenJDK 2024年9月
現行バージョン:Java SE 23 2024年9月 Oracle OpenJDK 2025年3月
将来のリリース:Java SE 24 2025年3月 Oracle OpenJDK 2025年9月
凡例
サポート終了
サポート中
現行バージョン
最新プレビュー版
将来のリリース

脚注

[編集]
  1. ^ "JAVASOFT SHIPS JAVA 1.0" (Press release) (英語). Sun Microsystems. 2008年6月25日時点のオリジナルよりアーカイブ。2006年7月8日閲覧
  2. ^ "SUN DELIVERS NEXT VERSION OF THE JAVA PLATFORM" (Press release) (英語). Sun Microsystems. 2008年5月6日時点のオリジナルよりアーカイブ。2006年7月8日閲覧
  3. ^ "SUN MICROSYSTEMS RELEASES FASTEST CLIENT-SIDE JAVA PLATFORM TO DATE" (Press release) (英語). Sun Microsystems. 2008年5月16日時点のオリジナルよりアーカイブ。2006年7月8日閲覧
  4. ^ JavaTM 2 SDK, Standard Edition, version 1.3 の新機能および機能拡張の概要”. 2019年3月4日閲覧。
  5. ^ JSR 59
  6. ^ "SUN ANNOUNCES LATEST VERSION OF JAVA 2 PLATFORM STANDARD EDITION" (Press release) (英語). Sun Microsystems. 2008年9月6日時点のオリジナルよりアーカイブ。2006年7月8日閲覧
  7. ^ JavaTM 2 SDK, Standard Edition, version 1.4 の新機能および機能拡張の概要”. 2019年3月4日閲覧。
  8. ^ "Sun Ships New Version of Java Platform" (Press release) (英語). Sun Microsystems. 2005年2月15日時点のオリジナルよりアーカイブ。2006年7月8日閲覧
  9. ^ J2SE(TM) 5.0 の新機能”. 2006年7月8日閲覧。
  10. ^ 「Java SE 6 Update 10」公開、動作速度を高速化”. 2008年12月3日閲覧。
  11. ^ JSR 337: Java SE 8 Release Contents
  12. ^ Oracle Java SE サポート・ロードマップ”. 2018年10月19日閲覧。
  13. ^ JSR 383: Java™ SE 10 (18.3)
  14. ^ JSR 384: JavaTM SE 11 (18.9)
  15. ^ オラクル、Java 16を発表
  16. ^ オラクル、Java 17をリリース
  17. ^ オラクル、Java 18を発表
  18. ^ オラクル、Java 19をリリース
  19. ^ オラクル、Java 20をリリース
  20. ^ オラクル、Java 21のリリースとサポート・ロードマップの延長を発表
  21. ^ オラクル、Java 22をリリース
  22. ^ オラクル、Java 23をリリース
  23. ^ Oracle Java SE Support Roadmap”. 2019年2月8日閲覧。 “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)[..] Oracle does not plan to migrate desktops from Java SE 8 to later versions via the auto update feature.”
  24. ^ Reinhold (2018年8月17日). “What does LTS mean for OpenJDK?”. 2018年8月28日閲覧。
  25. ^ JDK 21”. openjdk.org. 2024年1月15日閲覧。
  26. ^ a b Oracle Java SE Support Roadmap”. www.oracle.com. 2021年8月3日閲覧。
  27. ^ Support | Adoptium - Open source, prebuilt OpenJDK binaries”. adoptium.net. 2021年8月3日閲覧。
  28. ^ a b c d Adoptiumによると、アップストリームがメンテナンスされている限りはLTSリリースのバイナリのビルドを継続するとしている。Temurin™ Support”. 2024年6月26日閲覧。
  29. ^ a b c d OpenJDK Life Cycle and Support Policy - Red Hat Customer Portal”. 2024年6月26日閲覧。
  30. ^ a b c d よくある質問 - Amazon Corretto”. 2024年6月26日閲覧。
  31. ^ a b c d Azul Java Support Roadmap - Azul”. 2024年6月26日閲覧。

外部リンク

[編集]