コンテンツにスキップ

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

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

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
編集の要約なし
Javaより移動
タグ: サイズの大幅な増減 ビジュアルエディター
77行目: 77行目:
| colspan="4" | <small>{{Version|l|show=111101}}</small>
| 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>キーワード(言語仕様、浮動小数点計算)
*仮想マシンに実行時コンパイラ(''Just-In-Time Compiler'')
*Javaプラグイン(WEBブラウザへのアプレット実行環境挿入)
*Java Internet Description Language([[IDL (プログラミング言語)|IDL]]からJava CORBA用スタブ&スケルトンを生成)
*[[Swing]](グラフィカルAPI)
*Collection Framework(コレクションAPI)

==== 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>。

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

==== 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]]
*Regular Expression([[正規表現]]API)
*Non-blocking I/O API(非遮断ストリーム入出力API)
*[[ログ|Logging]](ログ取りAPI)
*Image I/O([[JPEG]]と[[Portable Network Graphics|PNG]]を使えるAPI)
*Preferences(ツリー型のJava式セーブデータ収納庫API)
*[[Java API for XML Processing]]([[Extensible Markup Language|XML]]パーサ&マニュピレータAPI、[[XSL Transformations|XSLT]]フォーマットAPI)
*Java Cryptography Extension(暗号化API)
*Java Secure Socket Extension([[Transport Layer Security|TLS / SSL]]用API)
*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>。

*[[ジェネリクス]](コレクションコンテナに収納要素の型指定が可能 <code>List<T></code>)
* [[オートボクシング]]([[プリミティブ型|プリミティブ]]と[[プリミティブラッパークラス|ラッパークラス]]の自動変換による相互代入)
* [[列挙型]](<code>enum</code>キーワードで定数列挙の型を定義)
* 可変引数(最終引数の型名+3個のドットで自動配列化 <code>void drawText(String... lines)</code>)
*[[アノテーション]](<code>@</code>キーワードで、クラスメタデータの各要素に任意のタグワードと注釈を埋め込む)
*拡張<code>for</code>文(コレクションコンテナから各要素を順々に取り出すのが便利になるループ文)
*静的インポート文(他クラスの定数のフルパスを<code>import</code>で指定可能)
*[[Java Management Extensions]](MBeanを用いた[[依存性の注入]]による実行プログラム動的再構成の最適化)
*メモリモデルの改善によるスレッド処理高速化

==== Java SE 6 (2006年12月11日)「Mustang」 ====
仮想マシンを含めた既存機能の改善と洗練に力が注がれた。

* Scripting for the Java Platform(スクリプト言語との連携サポート)
*Java Architecture for XML Binding(Java XMLアーキテクチャ)
*Java API for XML Web Services
*Java Compiler API(Javaコンパイラへのディレクティブ的なAPI)
*[[Unicode正規化]] API
*Plugging annotation(コンパイル解析用途のアノテーション)
*[[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>。

*言語仕様に[[無名関数|ラムダ式]]の導入(引数 -> 関数式)
*関数型インターフェース
*Stream API(コレクションコンテナ各要素への連続的なラムダ式適用)
*JavaScriptのコードを埋め込めるNashorn Javaスクリプトエンジンの搭載(Project Nashorn)
*Annotation on Java types(型アノテーション)
*Repeating annotations(反復アノテーション)
*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)が無くなり半年間限定になった。

* 言語仕様に''package''を統合分類する「''module''」の導入(Project Jigsaw)
* 言語仕様の細かな拡張(Project Coin)
*並列処理APIのアップデート、Flowクラスの追加など
* Compact Stringの追加
* 「JShell」の搭載。コンソール形式でJavaコードを入力し実行結果を確認できる
* 「The Java Linker」の搭載。ユーザー環境に最適なモジュールと仮想マシンモードを自動選択実行する
*仮想マシンに前方コンパイル(''Ahead-Of-Time Compilation'')の導入
* XML catalogs(永続的URLへのマッピング)
*[[HiDPI]] Graphicsの導入(画像拡大縮小の改善)

==== 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(改良提案)になった。

* ローカル変数の[[型推論]]
* ガーベジコレクタ関連
*[[ルート証明書]]
*Unicode language-tag extensions(Unicode言語タグの取り扱い)

==== 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]]も取り除かれた。

* Dynamic class-file constants(invoke_dynamic拡張、動的ロードされたクラスへの定数ブートストラップ呼出)
* [[無名関数|ラムダ式]]への型推論
* HTTPクライアント実装へのAPI
* Flight recorder(Javaプログラム実行トレース用の軽快な各種データ収集フレームワーク)
* Unicode 10.0.0のサポート
* ガーベジコレクタ関連

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

* ガーベジコレクタ関連
* switch文の拡張
* JVM Constants API(主にクラスの動的ロードに関連した仮想マシン内の定数プールの操作)

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

* ソケットAPIの再実装
* switch文の拡張
* Text Blocks(文字列定義の複数行化)

==== Java SE 14(2020年3月17日) ====
JSR 389にて仕様規定。

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

2020年4月17日 (金) 14:08時点における版

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

Java 14の一般提供は2020年3月17日に行われ[3] 、Java 15にはアーリーアクセスビルドが含まれている。 [4]

Java開発チームは、2020年9月15日までにJDK 15を発表する予定である。 しかし、彼らはすでに次のバージョンのいくつかのアップデートを明らかにしている。 これまでのJDK 15を対象としたJEPは以下である。

バージョン リリース日 無料公開アップデート期限[5][6] 延長サポート期限
サポート終了: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月

Oracle(個人使用)の場合は2020年12月

AdoptOpenJDKの場合は2026年5月以上

Amazon Correttoの場合は少なくとも2023年6月[7]

2030年12月
サポート終了:Java SE 9 2017年9月 OpenJDK 2018年3月
サポート終了:Java SE 10 2018年3月 OpenJDK 2018年9月
サポート中:Java SE 11 (LTS) 2018年9月 Amazon Correttoは2024年8月以降[7]

AdoptOpenJDKは2024年10月

2026年9月
サポート終了:Java SE 12 2019年3月 OpenJDK 2019年9月
サポート終了:Java SE 13 2019年9月 OpenJDK 2020年3月
現行バージョン:Java SE 14 2020年3月 OpenJDK 2020年9月
将来のリリース:Java SE 15 2020年9月 OpenJDK 2021年3月
将来のリリース:Java SE 16 2021年3月 OpenJDK 2021年9月
将来のリリース:Java SE 17 (LTS) 2021年9月 未公表 未公表
凡例
サポート終了
サポート中
現行バージョン
最新プレビュー版
将来のリリース

バージョン履歴

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日)

最初のバージョン[8]。まだ国際化対応はされず英語版のみだった。

JDK 1.1 (1997年2月19日)

国際化対応され日本語版も追加された[9]

J2SE 1.2 (1998年12月8日)「Playground」

ここからコードネームが付けられるようになった[10]

  • strictfpキーワード(言語仕様、浮動小数点計算)
  • 仮想マシンに実行時コンパイラ(Just-In-Time Compiler
  • Javaプラグイン(WEBブラウザへのアプレット実行環境挿入)
  • Java Internet Description Language(IDLからJava CORBA用スタブ&スケルトンを生成)
  • Swing(グラフィカルAPI)
  • Collection Framework(コレクションAPI)

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

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

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

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

  • assert キーワード(言語仕様、例外発生ディレクティブ)
  • 例外処理の連鎖格納(言語仕様)
  • Java Web Start
  • Regular Expression(正規表現API)
  • Non-blocking I/O API(非遮断ストリーム入出力API)
  • Logging(ログ取り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」

言語仕様に大幅な拡張が加えられた[16][17]

  • ジェネリクス(コレクションコンテナに収納要素の型指定が可能 List<T>
  • オートボクシングプリミティブラッパークラスの自動変換による相互代入)
  • 列挙型enumキーワードで定数列挙の型を定義)
  • 可変引数(最終引数の型名+3個のドットで自動配列化 void drawText(String... lines)
  • アノテーション@キーワードで、クラスメタデータの各要素に任意のタグワードと注釈を埋め込む)
  • 拡張for文(コレクションコンテナから各要素を順々に取り出すのが便利になるループ文)
  • 静的インポート文(他クラスの定数のフルパスをimportで指定可能)
  • Java Management Extensions(MBeanを用いた依存性の注入による実行プログラム動的再構成の最適化)
  • メモリモデルの改善によるスレッド処理高速化

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

仮想マシンを含めた既存機能の改善と洗練に力が注がれた。

  • Scripting for the Java Platform(スクリプト言語との連携サポート)
  • Java Architecture for XML Binding(Java XMLアーキテクチャ)
  • Java API for XML Web Services
  • Java Compiler API(Javaコンパイラへのディレクティブ的なAPI)
  • Unicode正規化 API
  • Plugging annotation(コンパイル解析用途のアノテーション)
  • Swingの高速化、Windows用ルック&フィールの追加、Windowsタスクトレイ表示
  • Update10で、Java Quick Starter(アプリ起動高速化)Java Kernel(Java環境インストール高速化)を搭載[18]

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

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

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

Java SE 8 (2014年3月18日)

ここでコードネームが廃止された[19]

  • 言語仕様にラムダ式の導入(引数 -> 関数式)
  • 関数型インターフェース
  • Stream API(コレクションコンテナ各要素への連続的なラムダ式適用)
  • JavaScriptのコードを埋め込めるNashorn Javaスクリプトエンジンの搭載(Project Nashorn)
  • Annotation on Java types(型アノテーション)
  • Repeating annotations(反復アノテーション)
  • Date and Time API(日付時刻)
  • 静的結合 Java Native Interface ライブラリ

Java SE 9 (2017年9月21日)

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

  • 言語仕様にpackageを統合分類する「module」の導入(Project Jigsaw)
  • 言語仕様の細かな拡張(Project Coin)
  • 並列処理APIのアップデート、Flowクラスの追加など
  • Compact Stringの追加
  • 「JShell」の搭載。コンソール形式でJavaコードを入力し実行結果を確認できる
  • 「The Java Linker」の搭載。ユーザー環境に最適なモジュールと仮想マシンモードを自動選択実行する
  • 仮想マシンに前方コンパイル(Ahead-Of-Time Compilation)の導入
  • XML catalogs(永続的URLへのマッピング)
  • HiDPI Graphicsの導入(画像拡大縮小の改善)

Java SE 10 (2018年3月20日)

JSR 383にて仕様規定[21]。ここから追加機能の大半は規範テクノロジ相当のJSR(仕様要求)ではなく、拡張テクノロジ相当のJEP(改良提案)になった。

  • ローカル変数の型推論
  • ガーベジコレクタ関連
  • ルート証明書
  • Unicode language-tag extensions(Unicode言語タグの取り扱い)

Java SE 11 (2018年9月25日)

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

  • Dynamic class-file constants(invoke_dynamic拡張、動的ロードされたクラスへの定数ブートストラップ呼出)
  • ラムダ式への型推論
  • HTTPクライアント実装へのAPI
  • Flight recorder(Javaプログラム実行トレース用の軽快な各種データ収集フレームワーク)
  • Unicode 10.0.0のサポート
  • ガーベジコレクタ関連

Java SE 12 (2019年3月19日)

JSR 386にて仕様規定。アップデートで令和改元に向けたセキュリティ対策が施された。

  • ガーベジコレクタ関連
  • switch文の拡張
  • JVM Constants API(主にクラスの動的ロードに関連した仮想マシン内の定数プールの操作)

Java SE 13(2019年9月17日)

JSR 388にて仕様規定。「数百の小粒改良、数千のバグ修正」と宣伝された。

  • ソケットAPIの再実装
  • switch文の拡張
  • Text Blocks(文字列定義の複数行化)

Java SE 14(2020年3月17日)

JSR 389にて仕様規定。

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

参考文献

  1. ^ 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.”
  2. ^ Reinhold (2018年8月17日). “What does LTS mean for OpenJDK?”. 2018年8月28日閲覧。
  3. ^ JDK 14”. openjdk.java.net. 2020年4月14日閲覧。
  4. ^ JDK 15 Early-Access Builds”. jdk.java.net. 2020年4月14日閲覧。
  5. ^ Oracle Java SE Support Roadmap”. www.oracle.com. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  6. ^ Support | AdoptOpenJDK”. adoptopenjdk.net. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  7. ^ a b Gupta, Arun (2018年11月14日). “Introducing Amazon Corretto, a No-Cost Distribution of OpenJDK with Long-Term Support”. 2019年12月17日閲覧。
  8. ^ "JAVASOFT SHIPS JAVA 1.0" (Press release) (英語). Sun Microsystems. 2008年6月25日時点のオリジナルよりアーカイブ。2006年7月8日閲覧 {{cite press release2}}: 不明な引数|deadlinkdate=は無視されます。 (説明)
  9. ^ "SUN SHIPS JDK 1.1 -- JAVABEANS INCLUDED" (Press release) (英語). Sun Microsystems. 2008年5月6日時点のオリジナルよりアーカイブ。2006年7月8日閲覧 {{cite press release2}}: 不明な引数|deadlinkdate=は無視されます。 (説明)
  10. ^ "SUN DELIVERS NEXT VERSION OF THE JAVA PLATFORM" (Press release) (英語). Sun Microsystems. 2008年5月6日時点のオリジナルよりアーカイブ。2006年7月8日閲覧 {{cite press release2}}: 不明な引数|deadlinkdate=は無視されます。 (説明)
  11. ^ "SUN MICROSYSTEMS RELEASES FASTEST CLIENT-SIDE JAVA PLATFORM TO DATE" (Press release) (英語). Sun Microsystems. 2008年5月16日時点のオリジナルよりアーカイブ。2006年7月8日閲覧 {{cite press release2}}: 不明な引数|deadlinkdate=は無視されます。 (説明)
  12. ^ JavaTM 2 SDK, Standard Edition, version 1.3 の新機能および機能拡張の概要”. 2019年3月4日閲覧。
  13. ^ JSR 59
  14. ^ "SUN ANNOUNCES LATEST VERSION OF JAVA 2 PLATFORM STANDARD EDITION" (Press release) (英語). Sun Microsystems. 2008年9月6日時点のオリジナルよりアーカイブ。2006年7月8日閲覧 {{cite press release2}}: 不明な引数|deadlinkdate=は無視されます。 (説明)
  15. ^ JavaTM 2 SDK, Standard Edition, version 1.4 の新機能および機能拡張の概要”. 2019年3月4日閲覧。
  16. ^ "Sun Ships New Version of Java Platform" (Press release) (英語). Sun Microsystems. 2005年2月15日時点のオリジナルよりアーカイブ。2006年7月8日閲覧 {{cite press release2}}: 不明な引数|deadlinkdate=は無視されます。 (説明)
  17. ^ J2SE(TM) 5.0 の新機能”. 2006年7月8日閲覧。
  18. ^ 「Java SE 6 Update 10」公開、動作速度を高速化”. 2008年12月3日閲覧。
  19. ^ JSR 337: Java SE 8 Release Contents
  20. ^ Oracle Java SE サポート・ロードマップ”. 2018年10月19日閲覧。
  21. ^ JSR 383: Java™ SE 10 (18.3)
  22. ^ JSR 384: JavaTM SE 11 (18.9)

外部リンク