Java SE のバージョン毎の変更点などを纏めています。
Last active
December 3, 2015 02:14
-
-
Save minazou67/5159d8868bfb474bdb75 to your computer and use it in GitHub Desktop.
Notes the Java SE
2002年2月6日にリリース。コードネームは Merlin。2008年10月にEOL。
「Java Community Process (JCP)」のもとで開発された初めての Java プラットフォーム。
J2SE 1.4 では、言語仕様が大幅に拡張され、多数の新機能が追加された。
- 信頼性
- 保守性
- スケーラビリティ
- パフォーマンス
- 配備
- JSR 005: XML Parsing (XML 解析 )
- JSR 010: Preferences API (環境設定 API)
- JSR 031: XML Data Binding (XML データバインディング)
- JSR 041: A Simple Assertion Facility (単純なアサーション機能)
- JSR 047: Logging API (ロギング API)
- JSR 051: New IO APIs (新しい IO の API)
- JSR 054: JDBC 3.0
- JSR 055: Certificate Path API (証明書パス API)
- JSR 056: Java Network Launching API (ネットワーク起動 API)
- JSR 057: Long Term Persistence for JavaBeans 1.0 (JavaBeans の長期持続性)
- JSR 010: 軽量なクロスプラットフォームの環境設定 API (
java.util.prefs
パッケージ) の追加 - JSR 041: 単純なアサーション機能の追加
- JSR 051: 新しい IO の API (
java.nio
パッケージ) を提供 (バッファ管理、文字セットサポート、正規表現マッチング等) - JSR 057: JavaBeans の長期的な持続性をサポートするための API の追加
- 連鎖例外機能 (例外チェーン機能) を提供
- JSR 055: 証明書パス (証明書チェーン) を扱うためのクラスとインタフェースを提供
- JSR 056: JNLP のリファレンス実装として Java Web Start を提供
- 以下のセキュリティ機能を標準ライブラリに統合
- JCE (Java Cryptography Extension)
- JSSE (Java Secure Socket Extension)
- JAAS (Java Authentication and Authorization Service)
- TCP および UDP ベースのアプリケーションで IPv6 をサポート
- JPDA (Java Platform Debugger Architecture) の機能拡張
- 高速デバッグ機能のサポート (デバッグ時でも HotSpot テクノロジを活用)
- HotSwap (デバッガの制御のもとに修正クラスを更新)
- Instance Filters (インスタンスフィルタ機能を提供しイベントを制限可能)
- 他言語デバッグのサポート
- VMDeathRequests (JVM が終了したときに通知要求が可能)
- javadoc ツールの大幅な改善 (新規タグ、新規オプション、HTML 出力制御の強化、Doclet API の改善等)
- CORBA 用の新規ツール (orbd、servertool) の提供と既存ツール (idlj、rmic) の改善
- JSR 005: XML 処理用の API の追加
- JSR 031: XML データバインディング機能の追加
- JSR 047: 標準のロギング API (
java.util.logging
パッケージ) を提供 - JSR 054: JDBC 3.0 をサポート
- Java Image I/O API (
javax.imageio
パッケージ) を提供 - Java Print Service API (
javax.print
パッケージ) を提供 - Java 2D API、Reflection API のパフォーマンスを大幅に改善
- 多数の新機能 (新しい drag & drop アーキテクチャや新規フォーカスモデル等) と Look & Feel を Swing へ追加
- Unicode 3.0 をサポート
- Collections Framework の機能拡張 (LinkedHashMap、IdentityHashMap の追加等)
- 正規表現 (
java.util.regex
パッケージ) をサポート
2004年9月30日にリリース。コードネームは Tiger。2009年10月にEOL。
J2SE 5.0 では、言語仕様が大幅に拡張され、多数の新機能が追加された。
- 信頼性、可用性、保守性 - 監視と管理
- パフォーマンスとスケーラビリティ
- 開発容易性
- デスクトップクライアント
- JSR 003: Java Management Extensions (JMX) Specification (Java 仮想マシン管理の仕様)
- JSR 013: Decimal Arithmetic Enhancement (小数点演算の強化)
- JSR 014: Add Generic Types To The Java Programming Language (総称型の追加)
- JSR 028: Java SASL Specification (Java の SASL 仕様)
- JSR 114: JDBC Rowset Implementations (JDBC 行セット実装)
- JSR 133: Revise Java memory model (Java のメモリモデルの見直し)
- JSR 160: Java Management Extensions (JMX) Remote API (Java 仮想マシン管理のリモート API)
- JSR 163: Java Platform Profiling Architecture (Java プラットフォームのプロファイリング·アーキテクチャ)
- JSR 166: Concurrency Utilities (並行処理ユーティリティ)
- JSR 174: Monitoring and Management specification for the Java Virtual Machine
(Java 仮想マシン用の監視および管理の仕様) - JSR 175: A Metadata Facility for the Java Programming Language
(Java プログラミング言語用のメタデータ機能) - JSR 200: Network Transfer Format for Java Archives
(Java アーカイブ用のネットワーク転送フォーマット) - JSR 201: Extending the Java Programming Language with Enumeration, Autoboxing, Extended for loops and Static import
(列挙型、オートボクシング、拡張 for 文、静的インポートによる拡張) - JSR 204: Unicode Supplementary Character Support (Unicode 補足文字のサポート)
- JSR 206: Java API for XML Processing (JAXP) 1.3 (XML データ処理用の Java API)
- JSR 013: BigDecimal クラスの強化による小数点演算の強化 (固定精度の浮動小数点計算をサポート)
- JSR 014: 総称型 (Generics) の追加による、コンパイラのタイプセーフ検証の強化 (キャスト作業の省略)
- JSR 175: アノテーション (注釈) によるメタデータ機能の追加 (ボイラープレートコードの自動生成が可能)
- JSR 201: 列挙型 (enum)、オートボクシング・アンボクシング 、拡張 for 文、静的インポート、可変長引数による拡張
- JSR 204: Unicode 4.0 および補助文字のサポート
- JSR 028: Java SASL API で SASL (Simple Authentication and Security Layer) 用のクラスとインタフェースを定義
- LDAP サービスプロバイダは、Java SASL API を使用し、SASL 認証をサポート
- JSR 200: JAR ファイルを高圧縮できる新しい Pack200 形式をサポート (JAR ファイルのダウンロードサイズを大幅に削減)
- 多数の AWT の拡張とバグの修正
- デスクトップ上のマウスの位置を判断可能
- 新規作成ウィンドウのデフォルト位置を指定可能
- Swing 用の新しい Look & Feel を提供 (Synth、Ocean)
- 注釈処理用のコマンドラインツール (Annotation Processing Tool) を提供
- JSR 163: 新しい Java プラットフォームのプロファイリング·アーキテクチャを提供
- Java VM Profiling Interface (JVMPI) が非推奨となり、代わりに新しい Java VM Tool Interface (JVMTI) を提供
- JSR 174: Java VM の状態を監視・管理するための機能を提供
- 総称型、オートボクシング (基本データ型とラッパクラスの自動相互変換)、拡張 for 文の導入に伴うコレクションの拡張
java.lang.ProcessBuilder
クラスを提供 (より簡単な方法でサブプロセスを起動可能)- printf スタイルの
java.util.Formatter
クラスとインタフェースを提供 - 複数の Java VM でバイトコードを共有 (アプリケーションの起動時間とサイズを軽減)
- J2SE 1.4 と同様に JDBC 3.0 をサポート
- JSR 114: 5 種類の RowSet インタフェースの標準実装を提供
- JSR 133: Java のメモリモデルを見直し、メモリフットプリントを改善し起動時間を短縮
- JSR 166: 並行処理ユーティリティを提供
- 非同期実行、スレッドプール、ブロッキングキュー、ロック、セマフォ、アトミック変数などの機能を提供
java.util.concurrent
パッケージの追加java.lang
パッケージの System、Thread、ThreadLocal クラスの機能拡張- JSR 206: JAXP 1.3 のサポート (XML データ処理用の Java API を提供)
2006年12月11日にリリース。コードネームは Mustang。2013年2月にEOL。
名称が J2SE から Java SE に変更され、バージョン番号から小数点以下が削除された。
Java SE 6 では大幅な言語仕様の変更はないが、多数の新機能の追加や管理機能の強化、安定性の向上などが行われた。
- 互換性
- 開発容易性
- 診断機能、監視と管理
- エンタープライズデスクトップ
- XML & Web サービス
- 透明性
- JSR 105: XML Digital-Signature APIs (XML デジタル署名 API)
- JSR 173: Streaming API for XML (StAX) (XML のストリーミング API)
- JSR 181: Web-Services Metadata (Web サービス·メタデータ)
- JSR 199: Java Compiler API (Java コンパイラ API)
- JSR 202: Java Class-File Specification Update (Java クラスファイルの仕様更新)
- JSR 221: JDBC 4.0
- JSR 222: Java Architecture for XML Binding (JAXB) 2.0
- JSR 223: Scripting for the Java Platform (Java プラットフォームのスクリプティング)
- JSR 224: Java API for XML-Based Web Services (JAX-WS) 2.0
- JSR 250: Common Annotations (標準アノテーション)
- JSR 269: Pluggable Annotation-Processing API (プラグイン可能な注釈処理 API)
- JSR 003: Java Management Extensions (JMX)
- JSR 160: Java Management Extensions (JMX) Remote API 1.0
- JSR 206: Java API for XML Processing 1.4 (XML データ処理用の Java API)
- JAXB 2.0 のサポート (Java オブジェクトと XML のバインディング機能)
- JAX-WS 2.0 のサポート (JAX-RPC に替わる Web サービスの新規 API 仕様)
- StAX 1.0 のサポート (JAXB 2.0 でも使用されている XML パーサ)
- XML デジタル署名のサポート (JAX-WS 2.0 でも使用されている XML ドキュメントに対するデジタル署名)
- 特定のスクリプト言語に依存しない汎用的なスクリプティング・フレームワーク
- JavaScript のスクリプトエンジン (Java で実装された Mozilla Rhino) を標準でバンドル
- Java プログラム内で各種スクリプトを実行可能
- スクリプト言語から Java 内部にアクセスすることが可能
- JDBC 4.0 のサポート
- JDBC ドライバの自動ロード
- EoD 機能 (アノテーションと Generics) の導入
- SQL 例外クラスの詳細化
- Java DB(Apache Derby)を JDK にバンドル
- パフォーマンスの大幅な改善
- システムトレイのサポート
- アプリケーション起動時のスプラッシュ・スクリーン表示が可能
- 関連付けられたアプリケーションの起動が可能
- Java Plug-in や Java Web Start の機能改善 (ダウンロードやキャッシングの機能強化)
- Swing のマルチスレッド処理をサポートする SwingWorker を提供
- Windows Aero (Windows Vista) の Look and Feel をサポート
- 和暦ロケールを含む新しいロケールのサポート
- Unicode 正規化 API の追加 (
java.text.Normalizer
クラスの追加) - 国際化ドメイン名対応 (ドメイン名に非 ASCII 文字を使用可能、
java.net.IDN
クラスの追加) - リソース・バンドルの強化 (再起動せずにリソース・バンドルの再読み込みが可能)
- OutOfMemoryError の詳細な情報が取得可能に
- JMX API の拡張 (Generics の完全対応、ユーザー定義の MXBean のサポート、監視サービスの複合型サポート)
- Java Platform Debugger Architecture (JPDA) の改善 (動作中の JVM へアタッチ可能に)
- JConsole などの複数の管理ツールが試験的な位置付けから標準へ
- JConsole ツールの拡張機能 (プラグインサポート、動的接続機能等)
- Java VisualVM が Update 7 からバンドル (単体の管理ツールで提供されてきた機能をまとめて提供)
- アノテーション処理の標準 API を提供 (
javax.annotation.processing
パッケージを追加) - Java プログラムからソースコードのコンパイルが可能となる Compiler API を提供 (
javax.tools
パッケージを追加) java.net.NetworkInterface
クラスにMAC アドレスなどのネットワーク・パラメータを取得する API を追加- Cookie の管理のためのデフォルトの実装 (
java.net.CookieManager
クラス) を提供 - 軽量 HTTP サーバをバンドル (
com.sun.net.httpserver
パッケージ) - 暗号化方式として AES128、AES256、RC4-HMAC をサポート
java.util.Arrays
クラスの拡張 (配列のコピーメソッド追加など)java.io.File
クラスの拡張 (ディスク領域の取得やアクセス権限の設定など)- コアライブラリの改善 (String クラスへの isEmpty メソッドの追加等)
- G1GC 方式のガベージ・コレクションを実験的に導入 (Update 14)
- Java Kernel
- アプレットなどからの JRE のインストール時間を短縮
- JRE を複数のパートに分割し、インストールとダウンロードを並列化
- Java Quick Starter
- 複数の Java VM でバイトコードを共有しアプリケーションの起動時間を短縮
- バイトコードのキャッシュを行うプロセスを事前に動作させてアプリケーションの起動時間を短縮
- Java Web App でも使用可能
- Deployment Toolkit
- アプレットと Java Web Start アプリケーション用の JavaScript ライブラリ
- ブラウザの種類にかかわらず統一した記述法でアプレットを埋めこむことが可能
- JRE がインストールされていなければ自動でインストール
- Nimbus Look & Feel
- Swing 用の新しい Look & Feel
- 静的なビットマップではなくすべて Java 2D ベクトル・グラフィックスで描画
- 高度なカスタマイズに対応しており、独自のスキンを作成可能
- 次世代 Java Plug-in
- 完全に再設計されたアーキテクチャー (サポートする全ての Web ブラウザで挙動を統一)
- アプレットを Web ブラウザと異なるプロセスで実行 (Web ブラウザへの影響を除外)
- 組み込みの JNLP サポート (アプレットを JNLP ファイルから直接起動可能)
- Direct3D のサポート
- OpenGL をサポートしている環境では OpenGL パイプラインで高速化
- Windows では Direct3D ベースの Java2D パイプラインで高速化
- Swing コンポーネントの透過処理、傾き処理などの 2D 描画に対してハードウェアアクセラレーション機能を使用
2011年7月28日にリリース。コードネームは Dolphin。2015年4月にEOL予定。
Java SE 7 では、Project Coin による多数の言語仕様の改善や新規ファイルシステム API の提供、動的言語のサポート強化などが行われた。また、Java SE 7 からリファレンス実装が Sun JDK から OpenJDK へ変更された。
- 互換性
- 生産性
- パフォーマンス
- 普遍性
- 統合
- 新規ファイルシステム API を提供 (
java.nio.file
パッケージを追加) - 新しいディレクトリ、ファイル表現インターフェース
java.nio.file.Path
を提供 - ファイル属性、権限の取得・設定 API を提供 (
java.nio.file.attribute
パッケージを追加) - ディレクトリツリーの走査用 API を提供 (
java.nio.file.FileVisitor
インタフェースと実装クラスの提供) - 非同期 IO のサポート (
java.nio.channels
パッケージに新しい非同期チャネルを追加) - シンボリックリンクをサポート (
java.nio.file.Files
ユーティリティクラスで提供) - ファイルシステムの変更通知が可能 (
java.nio.file.WatchService
インタフェースの提供) - zip をファイルシステムとして処理可能
- Java 仮想マシンにおける動的型付け言語のサポート強化
- 動的型付け言語が高速に動作するバイトコード命令を追加
- 動的言語サポート API (
java.lang.invoke
パッケージ) を追加 - 新しい動的リンクメカニズムを提供
- 静的な型情報がなくてもメソッド呼び出しの実行が可能
- JIT コンパイラの最適化の恩恵を享受
- Java SE 8 でサポート予定のラムダ式での使用も想定
- Binary Literals (「0b」または「0B」を接頭辞にすることで 2 進数を表現)
- 数値リテラルにアンダースコアを利用可能 (可読性を向上)
- switch 文の case ラベルに文字列を使用可能
- コンストラクタ呼び出し時の型推論をサポート (ダイヤモンド演算子)
- リソース管理用構文の追加 (try-with-resources)
- 例外のマルチキャッチと再スローについての改善
- 可変長引数メソッド呼び出しの警告の抑制 (メソッド呼び出し側ではなく宣言側に警告を出力するように変更)
- JSR 114: JDBC Rowsets (JDBC 行セット)
- JSR 221: JDBC 4.0
- JSR 224: Java API for XML Web Services (XML Web サービス用の Java API)
- JSR 269: Pluggable Annotation-Processing API (プラグイン可能な注釈処理 API)
- JSR 901: Java Language Specification (Java言語仕様)
- JSR 924: Java Virtual Machine Specification (Java仮想マシン仕様)
- Project Coin
- Stream Control Transmission Protocol (SCTP) のサポート
- Sockets Direct Protocol (SDP) のサポート
- Transport Layer Security (TLS) 1.2 のサポート
- JLayer クラスを提供 (レイヤー機能が追加)
- Nimbus Look & Feel のパッケージを
javax.swing.plaf.nimbus
へ変更 - 透明度を持つウィンドウや矩形以外の形状のウィンドウのサポート
- 重量コンポーネント(AWTなど)と軽量コンポーネント(Swingなど)の限定的な組合せを正式にサポート
- JDK に Java Plug-in ツールである HtmlConverter ツールがバンドルされなくなった。
- keytool ツールと jarsigner ツールが更新されセキュリティが強化された。
- javadoc ツールが更新され、生成されたページのスタイルを制御するスタイル・マークアップ・クラスを使用可能
- Java Flight Recorder と Java Mission Control を提供 (Update 40)
- JSR 166y: Fork/Join フレームワーク (並行処理によるマルチコアの有効活用をサポート)
- 従来の Concurrency Utilities より粒度の細かいタスクの並行処理が可能
- Unicode 6.0 のサポート
- ロケールの拡張 (BCP47、UTR35 のサポート)
- ISO 4217 通貨コードの拡張をサポート
- クラスローダの機能強化 (デッドロック問題の解消)
- JDBC 4.1 (try-with-resources 文を使用した JDBC リソースの自動解放など)
- 便利なユーティリティクラス
java.util.Objects
を提供 - JAXP、JAXB、JAX-WS のアップグレード
- Java FX 2.0 が JDK 及び JRE にバンドル
- G1GC 方式のガベージ・コレクションのサポート (Update 4)
2014年3月18日にリリース。コードネームやテーマは存在しない。2017年3月にEOL予定。
Java SE 8 では、ラムダ式の導入や新しい JavaScript エンジンの導入、JavaFX の統合などが行われた。また、Compact プロファイルの導入により、Java SE プラットフォームをサブセット形式で提供可能になった。
- 型アノテーションにより、宣言部に限らず、型が使用される任意の場所にアノテーションを適用可能
java.lang.annotation.ElementType
にTYPE_PARAMETER
(型パラメータ宣言) とTYPE_USE
(型使用箇所) を追加- 型チェック・フレームワークをコンパイラのプラグインとして使用し、アノテーションが付加された型のチェックが可能
- ISO 8601 に準拠した全く新しい日付と時間の API (
java.time
パッケージ) を追加 - 日付、時間、日時を扱うクラスをそれぞれ別クラスで提供
- 日付演算用の簡単でスレッドセーフ (immutable) なクラスを提供
- Local (タイムゾーンなし)、Offset (UTCからの時差だけを管理)、Zoned (タイムゾーンあり) の3種類の系統のクラスを提供
- 日付と時間のための新しいフォーマッタクラス (
java.time.format.DateTimeFormatter
) もスレッドセーフ (immutable)
- 単一メソッドのインタフェースのインスタンス生成を簡単に書くための新しいシンタックス (簡易記法)
- ラムダ式を使うと、従来よりも短いコードで、処理の流れが明瞭なコードを記述することが可能
- 関数型インターフェースの導入
- 仮想拡張メソッド (インタフェースのデフォルト実装) の導入
- メソッド参照、コンストラクタ参照の導入
- 既存のメソッドやコンストラクタをラムダ式のように使用することが可能
- 関数型インターフェースの変数に既存のメソッドやコンストラクタを代入可能
- より明確な型情報をコンパイラーに提供できる
- Java 8 のラムダ式はクロージャではない (レキシカルスコープを伴わない)
- JSR 114: JDBC Rowsets (JDBC 行セット)
- JSR 160: JMX Remote API (JMX リモート API)
- JSR 173: Streaming API for XML (XML のストリーミング API)
- JSR 199: Java Compiler API (Java コンパイラ API)
- JSR 206: Java API for XML Processing (XML データ処理用の Java API)
- JSR 221: JDBC 4.0
- JSR 269: Pluggable Annotation-Processing API (プラグイン可能な注釈処理 API)
@Repeatable
アノテーションにより、1つの要素に同じ型の複数の注釈を付加することが可能に- リフレクションによるメソッドやコンストラクタの引数情報 (引数名等) の取得が可能に
java.lang.reflect.Parameter
クラス、java.lang.reflect.Executable
クラスを提供javac
コマンドに-parameters
オプションを指定して仮パラメータ名を保管可能- 要素のストリームに対する関数型スタイルの操作をサポートする Stream API が追加 (コレクションのバルク処理が可能に)
- Optional 型の導入
- T 型の値を一つだけ保持できる immutable なコンテナクラス
- 基本データ型用の OptionalInt、OptionalDouble、OptionalLong クラスも提供
- null の可能性のある値をラップすることにより null チェックの冗長な記述を除外可能
- 符号付き整数を符号なし整数として取り扱うメソッドをラッパークラス (Integer、Long クラス等)に追加
- GUI フレームワークとして JavaFX 8 が統合
- DatePicker コントロール、TreeTableView コントロールなどの新しい UI コントロールを提供
- 3D Graphics の機能追加 (3D シェイプ、カメラ、ライト、サブシーン、アンチエイリアス等)
- WebView クラスの HTML5 対応強化
- ARM プラットフォームに対応
- マルチタッチデバイス対応 (JavaFX 2.2 でサポート済み)
- HiDPI ディスプレイをサポート
- Nashorn エンジンを起動するための jjs コマンドを提供
- java コマンドにより JavaFX アプリケーションが起動可能
- javadoc の実行時に生成されるファイル内の問題チェックが可能に
- クラスの依存関係を解析するための jdeps コマンドライン・ツールを提供
- Java Mission Control 5.4 を提供 (細密なデータ分析を可能にする先進的な監視および管理機能を提供)
- Compact プロファイルの導入
- Java SE プラットフォームをサブセット形式で提供可能
- compact1 (11MB)、compact2 (15MB)、compact3 (21MB) の 3 種類のプロファイルが存在
- Base64 のエンコーディング/デコーディングを標準でサポート
- JDBC-ODBC ブリッジが廃止
java.util.concurrent
パッケージの更新 (キャッシュ指向の機能拡張やパフォーマンス改善など)java.util.Arrays
に配列をパラレルにソートするメソッド (parallelSort) が追加- Unicode 6.2.0 のサポート
- 高エントロピー乱数生成のサポートが拡張
- IP アドレスレベルに基づいた HTTP URL パーミッション機能を提供
- Nashorn JavaScript エンジンの導入 (「ECMAScript-262 Edition 5.1」に対応した高性能な JavaScript エンジン)
- Hotspot と JRockit の統合 (Permanent 領域が廃止され Heap 領域へ統合)
- Project Jigsaw (モジュール化) の前準備
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment