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

削除された内容 追加された内容
編集の要約なし
Javaより移動
タグ: サイズの大幅な増減 ビジュアルエディター
77行目:
| 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}}