JAVA全バージョンの特徴、これだけ見れば十分! JAVA 1.0 - JAVA 17] をご覧ください。
バージョン間の機能を把握しようと思ったのですが、最新の機能説明がなくて検索できなかったので、書いてみようと思います。たいしたことは書いてませんが。
PS:絶対にウェブ上で最も包括的で完全なものです!もしそうでなければ、プライベートチャットで追加してください!ハハハ。
20GのJAVA学習教材を無料で共有!継続的に更新しています。
バックエンドをたどって、"JAVAラーニングリソース"と返信すると入手できます。
JDKバージョン1.0
1996-01-23 オーク(Oak)
初期バージョン、偉大なマイルストーンであるが、純粋にインタプリタとして動作し、外部のJITを使用し、パフォーマンスが悪く、動作が遅い。
JDKバージョン1.1
1997-02-19
- JDBC (Java DataBase Connectivity)。
- 内部クラスのサポート ;
- RMI (Remote Method Invocation) ;
- リフレクション;
- Java Beanです。
JDKバージョン1.2
1998-12-08 プレイグラウンド
- コレクションフレーム ;
- JIT (Just In Time) コンパイラ;
- パッケージ化されたJavaファイルにデジタル署名を付与します。
- Swing 1.0、ドラッグアンドドロップ、Java2DクラスライブラリなどのJFC(Java Foundation Classes)。
- Javaプラグイン。
- JDBCにおけるローラブルリザルトセット、BLOB、CLOB、バルクアップデート、ユーザー定義型の導入。
- Appletにサウンドサポートを追加する。
JDKバージョン1.3
2000-05-08 ケストレル (ケストレル)
<ブロッククオート- Java Sound APIです。
- jarファイルのインデックスです。
- Java の様々な面で最適化および拡張が行われています。
JDKバージョン1.4
2002-02-13 マーリン (ファルコン)
<ブロッククオート- XMLの処理。
- Java印刷サービス ;
- ロギングAPI。
- Java Web Start。
- JDBC 3.0 API。
- アサーション;
- Preferences API。
- 連鎖的な例外処理。
- IPV6に対応。
- 正規表現に対応。
- Imgae I/O APIを紹介します。
<スパン ジャバ5
2004-09-30 タイガー(老虎)
<ブロッククオート- パネル
- ループを強化すると、反復的なメソッドを使用できます。
- オートボックスとオートアンボックス。
- タイプセーフな列挙。
- 変数パラメータ;
- 静的な紹介 ;
- メタデータ(アノテーション)。
- インストルメンテーション
<スパン ジャバ6
2006-12-11 マスタング
- スクリプト言語への対応。
- JDBC 4.0 API。
- Java コンパイラ API。
- プラガブルアノテーション。
- Native PKI (Public Key Infrastructure)、Java GSS (Generic Security Service)、Kerberos、LDAP (Lightweight Directory Access Protocol)のサポートを追加しました。
- ウェブサービスを継承する。
<スパン ジャバ7
2011-07-28 ドルフィン(Dolphin)
<ブロッククオート- switchブロックでは、分岐条件として文字列を使用することができます。
- ジェネリックオブジェクト作成時に型推論を適用する。
- 1つのステートメントブロック内で複数の例外をキャッチする。
- 動的言語への対応
- try-with-resources(1つのブロックで複数の例外をキャッチする)のサポート。
- Java NIO.2開発キットをご紹介します。
- 数値型はバイナリ文字列で表現でき、文字列表現にアンダースコアを付加することができる。
- Diamond型構文(ジェネリックオブジェクト作成時に型推論を適用)。
- NULL 値の自動処理。
<スパン ジャバ8
2014-03-18
ラムダ式 - ラムダでは、関数をメソッドの引数として渡すことができます(関数は、引数としてメソッドに渡されます。
メソッドのリファレンス - メソッド参照は、既存のJavaクラスやオブジェクト(インスタンス)のメソッドやコンストラクタを直接参照するための非常に便利な構文を提供します。ラムダと組み合わせて使用することで、メソッド参照は言語をよりコンパクトかつ簡潔に構成し、冗長なコードを削減することができます。
既定の方法 - デフォルトメソッドとは、インターフェース内に実装を持つメソッドのことです。
新ツール - 新しいコンパイルツール、例えば Nashorn engine jjs やクラス依存性パーサ jdeps などです。
ストリームAPI -新しく追加された Stream API (java.util.stream) は、Java に真の関数型プログラミングスタイルをもたらします。
日付時刻API - 日付と時刻の取り扱いを強化します。
オプションのクラス - Optionalクラスは、すでにJava 8のクラスライブラリの一部であり、ヌルポインター例外を解決するために使用されます。
JavaScriptエンジン「Nashorn - Java 8は新しいNashorn javascriptエンジンを提供し、JVM上で特定のjavascriptアプリケーションを実行することができるようになりました。
詳細なリファレンスです。 http://www.runoob.com/java/java8-new-features.html
<スパン ジャバ9
2017-09-22
- モジュール方式 : モジュールとはパッケージの入れ物のことで、Java9の大きな変更点の1つがモジュールシステムの導入です(Jigsawプロジェクト)。
- REPL (JShell) : インタラクティブなプログラミング環境。
- HTTP 2 クライアント : HTTP/2規格は、HTTPプロトコルの最新バージョンで、新しいHTTPClient APIは、WebSocketとHTTP2ストリームをサポートし、サーバープッシュ機能も備えています。
- Javadocの改善 : Javadoc は API ドキュメント内の検索をサポートするようになりました。また、Javadoc の出力が HTML5 に準拠するようになりました。
- マルチバージョン対応JARパッケージ : マルチバージョン互換JAR機能は、特定のバージョンのJava環境でのみ動作するライブラリアプリケーションを作成する際に、使用するクラスのバージョンを選択できるようにするものです。
- コレクションファクトリーメソッド : List、Set、Map インターフェースの新しい静的ファクトリーメソッドは、これらのコレクションのイミュータブルなインスタンスを作成します。
- プライベートインターフェースメソッド : インターフェイスでプライベートなprivateメソッドを使用します。privateアクセス修飾子を用いて、インターフェース内にプライベートメソッドを記述することができる。
- プロセスAPI : OSのプロセスを制御・管理するためのAPIが改良されました。ProcessHandle とそのネストされたインターフェイス Info は、ローカルプロセスの PID を取得するためにネイティブコードを使用しなければならないというジレンマから開発者が逃れることを可能にします。
- ストリームAPIの改良 : 改良された Stream API は、ストリーム処理を容易にし、コレクターを使用して複雑なクエリを記述するための便利なメソッドを追加します。
- try-with-resourcesの改良 : final または final 変数に相当するリソースが既にある場合、try-with-resources 文で新しい変数を宣言する代わりに、その変数を使用することができます。
- 非推奨アノテーション @Deprecated を改善しました。 : Deprecatedアノテーションは、Java APIの状態をマークし、マークされたAPIが削除されること、または壊れていることを示すことができます。
- ダイヤモンド・オペレーターの改善 : 匿名クラスは、ダイヤモンド演算子を使用できます。
- Optionalクラスの改善 Optional: java.util.Optionalは多くの新しい便利なメソッドを追加し、Optionalは直接ストリームに変換することができます。
- マルチレゾリューション画像API : Multi-resolution Image API を定義することで、開発者は異なる解像度の画像を簡単に操作・表示することができます。
- CompletableFuture APIの改良 CompletableFutureクラスの非同期機構により、ProcessHandle.onExitメソッドの終了時に処理を実行することができます。
- 軽量なJSON API : 軽量なJSON APIが組み込まれている
- Reactive Streams API : Java 9 でレスポンシブ・プログラミングをサポートするために、新しい Responsive Streams API が導入されました。
- 詳しくはリファレンスをご覧ください。 http://www.runoob.com/java/java9-new-features.html
<スパン ジャバ10
2018-03-20
公式サイトの公開情報によると、重要な機能は以下の12項目です。
<ブロッククオート- JEP286 var ローカル変数の型推論を行う。
- JEP296 これにより、Mercurial が管理する多くの JDK リポジトリが単一のリポジトリに統合され、開発・管理プロセスが簡素化されます。
- JEP304 を、統一されたガベージコレクション・インターフェースで実現しました。
- JEP307 G1ガベージコレクタ用の並列完全ガベージコレクションで、並列処理を実装し、最悪レイテンシを改善します。
- JEP310 アプリケーションクラスデータ共有(AppCDS)は、プロセス間で共通のクラスメタデータを共有することで、メモリフットプリントと起動時間を削減します。
- JEP312 ThreadLocalハンドシェイクの相互作用。グローバルJVMセーフポイントに行くことなく、スレッド上のコールバックを実行する。最適化は、すべてのスレッドまたは全くないのではなく、単一のスレッドのみを停止することができます。
- JEP313 JDKに付属しているjavahツールを削除します。代わりにjavac -hを使うことができます。
- JEP314 Unicode言語タグの拡張子を追加して使用します。
- JEP317 Graal社のJavaベースコンパイラは、Javaコードをネイティブコードにプリコンパイルし、ヒープメモリの使用量をユーザー指定の予備メモリデバイスに割り当てることで、パフォーマンスを向上させることができます。
- JEP318 OpenJDKでは、ルート証明機関の証明書のデフォルトセットを提供しています。OpenJDKが開発者にとって使いやすくなるように、現在のOracleが提供するJava SEのルート証明書をオープンソース化します。
- JEP322 は、リリースバージョンの時間ベースの定義、すなわち上記のリリースサイクルです。バージョン番号は、 \$FEATURE.\$INTERIM.\$UPDATE.\$PATCH で、それぞれメジャーリリース、中間リリース、アップグレードパッケージ、 パッチリリースとなります。
<スパン ジャバ11
2018-09-25
今回、翻訳された新機能は
<ブロッククオート- 181:ネストベース・アクセス・コントロール
- 309:動的なクラスファイル定数
- 315:Aarch64組込みの改善
- 318:ノーアクションガベージコレクタ
- 320:JavaEEとCORBAモジュールの排除
- 321:HTTPクライアント(標準)
- 323:ローカル変数のシンタックスλパラメータ
- 324:Curve25519とCurve448のキープロトコル
- 327:ユニコード10
- 328:フライトレコーダー
- 329:ChaCha20とPoly1305の暗号化アルゴリズム
- 330:列のソースコード・プログラムを起動する
- 331:低オーバーヘッドのヒープ解析
- 332:トランスポート・レイヤー・セキュリティ(TLS) 1.3
- 333:Action:スケーラブルで低レイテンシーのガベージコレクタ(実験的)
- 335:NashornのJavaScriptエンジンに対抗して
- 336:Pack200のツールやAPIに対して
<スパン ジャバ12
2019-03-19
機能的なリリースとして、JDK 12には、合計8つの新しいJEPが含まれています。
<ブロッククオート-
189: シェナンドー 低休止時間ガベージコレクタ(実験的) : Javaスレッドの実行中に退避を行うことでダウンタイムを短縮するShenandoahというガベージコレクタを追加します。
-
230: マイクロベンチマークスイート : 開発者が簡単にJDKの性能をテストし、既存のJava Microbenchmark Harness (JMH) をベースに新しいベンチマークを作成できるように、新しいマイクロベンチマークのセットを追加しました。
-
325: エクスプレッションの切り替え(プレビュー) : switch文を拡張して、日常のコードを簡略化するための文や式として使用できるようにします。
-
334: JVM定数API : キークラス・ファイルおよびランタイム・アーチファクトの名目上の記述、特に定数のプールからロードできる定数をモデル化するための API を導入します。
-
340: AArch64ポートが2つではなく、1つ : arm64 ポートに関連するすべてのソースコードを削除し、32 ビットの ARM ポートと 64 ビットの aarch64 ポートを維持します。
-
341: デフォルトCDSアーカイブ : デフォルトでクラスデータ共有(CDS)アーカイブを生成します。
-
344: G1の混合コレクションを中止する。 : G1ガベージコレクタが一時停止目標を超えた場合、ガベージコレクション処理を中止します。
-
346: G1からの未使用コミットメントメモリの即時返却 : G1ガベージコレクタで、Javaヒープメモリが解放されたら、自動的にOSに返却するように改善。
オリジナルのアドレスです。 http://openjdk.java.net/projects/jdk/12/
JDK 11がLTS(Long Term Support)バージョンであることは分かっているのだから、その選択はどうなのか?(どうせJDK 8がまだ主流なんだし、本当に迷ってるのかな?)
12と11のどちらを使うべきですか。 https://blog.csdn.net/csdnnews/article/details/83753246
<スパン ジャワ13
2019-09-17
新機能を追加しました。
<ブロッククオート- 350 ダイナミックCDSアーカイブス は、Javaアプリケーションの実行終了時にクラスの動的アーカイブを可能にするためにappCDSを拡張します。アーカイブされたクラスには、デフォルトのベースレベルCDS(クラスデータ共有)アーカイブに存在しない、ロードされたすべてのアプリケーションクラスとライブラリが含まれます。このエミュレーションにより、AppCDSの使い勝手を向上させる。
- 351 ZGC:未使用メモリのアンコミット ZGCが強化されました。以前のバージョンでは、javaはGC後にシステムメモリをOSに解放しませんでした。それは、リリースのたびにjvmのメモリをリサイズすることになり、多少の消費があったからです。ソフトウェアの進化に伴い、多くの場合、メモリはより高価なリソースであることがわかったので、未使用メモリをOSに戻す必要がありました。この機能はデフォルトで有効です。この機能は-xx:-zuncommitパラメータで無効にできます。注意:最新メモリパラメータが最大メモリパラメータより大きく設定されていると、この機能は自動的に無効化されます。
- 353 レガシーソケットAPIの再実装 このリリースでは、java.net.socket および java.net.serversocket API の基礎となる実装を置き換えるために、新しい実装が使用される予定です。古い API は新バージョンでも削除されておらず、システムプロパティ "jdk.net.useplansocketimpl"を設定することで使用することができます。ただし、デフォルトの実装は最新版です。
- 354 スイッチ式(プレビュー) switchを拡張し、ステートメントとしても式としても使用できるようにし、両方の形式を従来のケース...:ラベル(通し番号付き)または新しいケース...->ラベル(落とし込みなし)で使用できるようにし、switch式から値を生成するための新しいステートメントを追加しています。これらの変更により、日常のコーディングが簡素化され、スイッチでパターン・マッチを使用するための準備ができます。この機能は、jdk 13 のプレビュー言語機能です。
- 355 テキストブロック(プレビュー) Java 言語にテキストブロックを追加します。テキストブロックは、ほとんどのエスケープシーケンスの必要性を回避し、予測可能な方法で自動的に文字列をフォーマットし、必要なときに開発者がフォーマットを制御できるようにする複数行の文字列テキストです。これは jdk 13 のプレビュー言語機能です。
また、JDK8には2019年1月の期限があり、それを過ぎるとオラクルはパッチなどのアップデートを提供しなくなります。関係者によると、JDK9の締切日は2018年3月、JDK10の締切バージョンは2018年9月と、もっと長くなる可能性があるとのことです。(詳細はこちらへ。 http://www.oracle.com/technetwork/java/javase/eol-135779.html?ssSourceSiteId=otncn ) JDK 9、JDK 10ともに短期リリースなので、安定した長期リリースはJAVA 11 (LTS - Long Term Support) バージョンになると思われます。
<スパン ジャバ14
2020-03-17
- 305 instanceofのパターンマッチング(プレビュー) instanceofのパターンマッチング (プレビュー)
- 343 パッケージングツール(インキュベータ) パッケージングツール(インキュベータ)
- 345 G1用NUMAアウェア・メモリ・アロケーション G1におけるNUMAメモリ割り当ての最適化
- 349 JFRイベントストリーミング JFRイベントストリーミング
- 352 不揮発性マップドバイトバッファ 非原子のバイトバッファマッピング
- 358 ヘルプ NullPointerExceptions とても役に立つヌルポインター例外
- 359 記録(プレビュー) 記録(プレビュー)
- 361 スイッチング式(標準) スイッチング表現(標準)
- 362 SolarisおよびSPARCポートの非推奨化 Solaris と S PARC のポートを非推奨とする。
- 363 CMS (Concurrent Mark Sweep) ガベージコレクタの削除 CMS(同時マークスイープ)ガベージコレクタの削除
- 364 macOSのZGC MacOS版ZGC
- 365 Windows版ZGC Windows版ZGC
- 366 ParallelScavenge + SerialOld GCの組み合わせの非推奨 ParallelScavenge + SerialOld GCの組み合わせを非推奨とする
- 367 Pack200 ツールおよび API の削除 Pack200 ツールおよび API を削除する
- 368 テキストブロック(2回目プレビュー) テキストブロック(2回目プレビュー)
- 370 外部メモリアクセスAPI (Incubator) 外部メモリAPI (Incubator)
<スパン ジャバ15
2020-09-15
- 339 エドワードカーブ電子署名アルゴリズム(EdDSA) モンゴメリ曲線とツイストエドワード曲線による署名アルゴリズム
- 360 封印されたクラス(プレビュー) 封印されたクラス(プレビュー)
- 371 隠しクラス 非表示のクラス
- 372 Nashorn JavaScript エンジンを削除する nasornのJavaScriptエンジンを削除する
- 373 従来のDatagramSocket APIの再実装 レガシーデータグラムソケットAPIの再実装
- 374 偏ったロックの無効化と非推奨 Biased Locking の無効化と非推奨
- 375 instanceofのパターンマッチング(第2回プレビュー) instanceofのパターンマッチング (2回目のプレビュー)
- 377 ZGC: スケーラブルで低レイテンシーのガベージコレクタ ZGC:スケーラブルな低遅延ガベージコレクタ
- 378 テキストブロック テキストブロック
- 379 シェナンドー 低休止時間ガベージコレクタ シェナンドー 低休止時間ガベージコレクタ
- 381 SolarisとSPARCのポートを削除する SolarisとSPARCのポートを削除する
- 383 外部メモリアクセスAPI (第2インキュベータ) 外部メモリアクセスAPI (セカンドインキュベータ)
- 384 記録(第2回プレビュー) 記録(2回目のプレビュー)
- 385 削除のためのRMIアクティベーションの非推奨 RMIアクティベーションの削除を提案する
ジャバ16
2021-03-16
来るぞ来るぞ、今月中に!!!発売!!!!!!!!!!!!!!!!!!!!!!!?
<ブロッククオート- 338 ベクターAPI(インキュベーター) ベクターAPI(インキュベータ)
- 347 C++14の言語機能を有効にする C++ 14の言語機能を有効にする
- 357 MercurialからGitへの移行 MercurialからGitへの移行
- 369 GitHubへの移行 GitHubに移行する
- 376 ZGC:スレッド-スタック同時処理 ZGC:スレッド-スタック同時処理
- 380 ユニックスドメインソケットチャネル ユニックスドメインソケットチャネル
- 386 アルパインLinuxポート アルパインリナックスポート
- 387 エラスティック・メタスペース エラスティック メタスペース
- 388 Windows/AArch64 ポート Windows / AArch64ポート
- 389 外部リンカAPI (インキュベータ) 外部リンカーAPI (Incubator)
- 390 バリューベース・クラスに関する警告 バリューベース・クラスに関する警告
- 392 パッケージングツール パッケージングツール
- 393 外部メモリアクセスAPI (サードインキュベータ) 海外メモリアクセスAPI(サードインキュベータ)
- 394 instanceofのパターンマッチング instanceofのパターンマッチング
- 395 記録 記録
- 396 JDKの内部をデフォルトで強力にカプセル化する JDKの内部をデフォルトで強力にカプセル化する
- 397 シールドクラス (2回目のプレビュー) 封印されたクラス(2回目のプレビュー)
ジャバ17
2021-09-14
- 306 常に厳密な浮動小数点演算のセマンティクスを復元する 常に厳密な浮動小数点演算のセマンティクスに戻す
- 356 擬似乱数生成器の強化 強化された擬似乱数生成器
- 382 新しいmacOSレンダリングパイプライン 新しいmacOSレンダリングパイプライン
- 391 macOS/AArch64 ポート JDKをmacOS/AArch64に移植する。
- 398 削除のためのアプレットAPIの非推奨 削除のためのアプレットAPIに同意しない
- 403 JDK内部の強力なカプセル化 JDK内部の強力なカプセル化
- 406 スイッチのパターンマッチング(プレビュー) switchのパターンマッチング(プレビュー)
- 407 RMIアクティベーションの解除 RMIアクティベーションの解除
- 409 封印されたクラス 封印されたクラス
- 410 エクスペリメンタルAOTとJITコンパイラの削除 実験用AOTとJITコンパイラの削除
- 411 削除のため、セキュリティ・マネージャーを非推奨とする セキュリティマネージャーの削除を依頼する
- 412 外部関数とメモリAPI(インキュベータ) 外部関数とメモリAPI (Incubator)
- 414 ベクターAPI(第二インキュベータ) ベクターAPI(セカンドインキュベータ)
- 415 コンテキスト固有のデシリアライズフィルタ コンテキスト依存のデシリアライズフィルタ
Java 17は現在Rampdown Phase Oneにあり、すべての機能的な特徴は凍結されています。つまり、Java 17の新機能は決まっていて、新しいJEP(JDK Enhancement Proposals)は追加されないということです
あと2ヶ月、Java17を迎えよう! (内側OS:もう懲りない!!)
関連
-
xxx は型に解決できない エラー解決
-
SLF4J: クラスパスが複数の SLF4J バインディングを含んでいる Error
-
エラー: jdkのバージョンの問題により、クエリへの参照が曖昧になる
-
mvn -v error: main class not found or couldn't be loaded org.codehaus.plexus.classworlds.launcher.
-
Java 文字クラスとメソッド
-
リクエストのエンティティが大きすぎる問題の解決
-
エラー コンストラクタ worker(int, String, float) は未定義です。
-
[Java] jdk1.7 trustAnchors パラメータは空であってはならない
-
JAXBContextImpl を com.sun.xml.bind.v2.runtime.JAXBContextImpl にキャストできない com.sun.xml.internal.bind.api.JAXBRICoにキャストできない。
-
IDEAが新しいプロジェクトを実行すると、Error running 'XXXApplication' と表示されます。XXXAppのコマンドラインを短くしてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Map<String,Boolean> 型をインスタンス化できません。
-
Javaでエラーが発生しました。非静的フィールドへの静的な参照を作成できません。
-
Springの構成でエラーなくIntelliJのアイデア、アセンブリオブジェクトは、自動配線できませんでした。
-
JAVAMail TLS配信の注意点
-
互換性のない型です。ArrayList<ArrayList<Integer>>はList<List<Integer>>に変換できない。
-
org.apache.tools.zip を使用した Zip 圧縮・解凍
-
エラー:ResultSetが閉じた後の操作は許可されません。
-
Java の詳細です。Listはadd(null)できる?
-
Linux (Centos) に Java jdk をインストールしてテストするとエラーが出る - bash: java: command not found
-
com.fasterxml.jackson.core.JsonParseException: 認識できないトークン 'xxx' があります。