JDK1.0 から JDK20 までについて語る | JD Cloud テクニカル チーム

1 はじめに

最近、グループでは読書コーナー活動を行っています。私たちのグループは「JVM 仮想マシンの徹底理解」を選びました。この本はプログラマなら誰でも知っている本だと思いますが、何日も経つと中身の知識も曖昧になってきます。今回の冒頭では、これまでざっと読んだことのあるJDKの開発履歴とJVM仮想マシンファミリーからスタートしましたが、今回は関連情報を確認し、JDKの各バージョンの進化の過程で起こった逸話を集めてみました。興味深いことに、以下は JDK 開発の歴史に関する概要です。

2. JDKの各バージョンの特徴と逸話

  • JDKのバージョン進化と各バージョンの特徴

◦JDK 1.0(1996):

▪Java 言語、Java クラス ライブラリ、および Java 仮想マシンが含まれます。グラフィカル ユーザー インターフェイス (GUI)、データベース接続 (JDBC) およびその他の機能をサポートします。

「Oak」は Java 言語の前身であり、「Oak」という名前が他社で使用されていたため、Java の開発者である Sun Corporation は 1995 年にその名前を「Java」に変更することを決定しました。名前の由来は喫茶店にあると言われています。当時、Java 言語を設計する際、創業チームのメンバーがコーヒーを買いにコーヒーショップに行った際、そのコーヒーショップの名前が「Java Coffee」であることに気づき、新しい言語として「Java」を使用することにしました。名前。

◦JDK 1.1(1997-2):

▪内部クラス、JavaBeans、リモート メソッド呼び出し (RMI) などの機能が増加しました。

JDK 1.2 / Java 2(1998-12):

▪Swing コンポーネント、リフレクション メカニズムと動的プロキシ、コレクション フレームワーク、Java 2D および Java 3D グラフィックスなどの機能が導入されました。

これは、Java SE の最初の実際の商用リリースです。このバージョンでは、Java 名前空間 (ネームスペース) などの機能が導入され、Java アプリケーションをより適切に編成および管理できるようになります。この段階では、Classic VM、HotSpot VM、Exact VM の 3 つの仮想マシンがあり、そのうち HotSpot は 1999 年 4 月に誕生しました。

◦JDK 1.3(2000-5):

▪Javaプラットフォームの機能追加、基盤となるクラスライブラリ、AWTやSwingユーザーインターフェースの強化など。

当時、Sun は、Java の地位を転覆しようとして .NET Framework を立ち上げた Microsoft からの深刻な挑戦に直面していました。そこで、Sun Corporation は Java の開発を加速し、競争力を強化することを決定しました。

JDK 1.4LST(2002-2):

▪Java Management Extensions (JMX)、NIO (New I/O) と呼ばれる新しい I/O API、アサーション、組み込み XML パーサー (SAX および DOM) などの導入。

これは、Java SE で最も多機能なリリースの 1 つです。このバージョンでは、NIO や XML パーサーなどの新機能が導入され、Java プログラムのパフォーマンスとスケーラビリティが向上します。

JDK 5.0 / Java 1.5(2004-9):

▪ジェネリック、列挙型、自動ボックス化およびボックス化解除、アノテーション、同時プログラミング API などの機能が導入されました。

これは、Java SE の中で最も機能が豊富なリリースの 1 つです。このバージョンでは、ジェネリックス、タイプセーフな列挙、自動ボックス化/アンボックス化、アノテーションなどの新機能が導入され、Java プログラムの記述がより簡潔かつ合理化されます。

このバージョンから、Sun は謙虚な「JDK 1.x」という命名方法を廃止し、製品のバージョン番号を「JDK x」に変更しました。Sun がこのようなことを行う理由は、JDK 5.0 以降、Java プラットフォームのリリース計画では毎年バージョンをリリースすることになっているためです。バージョン番号の混乱を避け、Java プラットフォームの迅速な反復と更新をより適切に伝えるために、新しいというネーミング方式を採用しています。

◦JDK6(2006-12):

▪JDBC 4.0 API、Java 監視および管理コンソール (JConsole)、動的言語のサポートの強化、GUI ツールキット (Swing) の改善、Java Web Start の改善、パフォーマンスとセキュリティの向上、およびその他の機能が導入されました。

JDK のアップデートではメジャー バージョンを 2 年間リリースする開発スピードを維持できず、JDK 6 のライフサイクルが異常に長くなっています。Java 6 は、次の理由から銀行やその他のシステムで広く使用されています。

高い安定性: Java 6 は比較的成熟した安定したバージョンであり、長年の実践とテストを経て広く認知され検証されており、金融業界の安定性要件を満たしています。Java 7 や Java 8 などの新しいバージョンでは、より多くの機能や最適化が行われていますが、これらの機能はすべての銀行で必要とされるわけではなく、新しいバージョンの安定性については一定期間の検証と検査も必要です。

強力な制御性: 銀行やその他のシステムでは、ソフトウェアの制御性に対する要求が非常に高く、ソフトウェアが安定して動作し、保守性が良好であることを保証する必要があります。この点で、Java 6 には新しい機能や更新が比較的少ないため、保守と制御が比較的簡単です。

コストに関する考慮事項: 一部の大規模な教育機関では、最新の Java バージョンへのアップグレードに費用がかかる場合があります。たとえば、既存のコードやアプリケーションの変更、再テスト、監査などが必要になります。さらに、多くのレガシー システムでは依然として Java 6 が実行されており、新しいバージョンにアップグレードするにはリスクと利点を再評価する必要があり、追加のコストと投資も必要になります。

つまり、Java 6 は、安定性、制御性、コストの観点から、銀行やその他のシステムで広く使用されています。しかし、時間の経過と新しいバージョンの導入に伴い、銀行などのシステムも、ビジネス ニーズを満たし、業務効率を向上させるために、より高度な Java バージョンに徐々にアップグレードする必要があります。

また、Java 7やJava 8ではさらなる新機能や最適化がもたらされていますが、銀行などのシステムにおいて新バージョンへのアップグレードにはコードの書き換えやテスト、セキュリティの再評価など多大なコストが必要となることが理由の1つです。銀行などの企業は Java 6 を開発プラットフォームとして使用しています。

◦JDK 7(2011-7):

▪switch ステートメントの文字列表現形式、バイナリ リテラル、下線付き数値表記、Try with Resources ステートメントなどの機能が導入されました。

JDK 7の開発中、サンは技術競争、ビジネス競争に次々と巻き込まれ、株価はピーク時の3%にまで下落し、JDK 7の開発を計画通りに進めることができなくなった。 。JDK 7の長期チケットバウンスの問題をできるだけ早く終わらせるために、OracleはSun買収後すぐに「プランB」の導入を発表しました。これは、JDK 7の正式バージョンを確保するためにJDK 7のターゲットを大幅に削減しました。 2011 年 7 月 28 日に予定通りリリースできます。

JDK 8LST(2014-3):

◦ Lambda 式、Stream API、Date/Time API、インターフェイスのデフォルト メソッド、メソッド参照、反復アノテーション、オプション クラス、Nashorn JavaScript エンジンなどの機能を導入しました。

これは Java SE の最も重要なバージョンの 1 つであり、Lambda 式、Stream API、Default メソッド、DateTime API などの新機能が導入されており、Java プログラムの作成と開発の効率が大幅に向上します。当初は 2013 年 9 月にリリースされる予定でしたが、最終的には 2014 年 3 月 18 日までスキップされました。JDK 8 以降、Oracle は JEP (JDK Enhancement Proposals) を使用して、JDK の新しいバージョンのリリース範囲に含まれる機能を定義および管理できるようにしました。

JDK 9(2017-9):

モジュラーシステム、JShell、HTTP/2 クライアント、サーバーサイド API などの機能が導入されました。

リリースリズムの変更: 今後、JDK は毎年3 月9 月にメジャー バージョンをリリースし、JDK の6 つのメジャー バージョンごとに、LTS バージョンのみが長期サポート(Long Term Support、LTS) バージョンとして指定されます。 JDK は3年間サポートとアップデートを受けることができ、JDK 8 と JDK 11 は LTS バージョンになります。次は JDK 17 で、2021 年にリリースされる予定です。

◦JDK 10(2018-3):

▪ローカル変数の型推論、Javadoc およびその他の機能の改善が導入されました。

2018 年 3 月 27 日、Android Java 侵害訴訟の最終判決があり、裁判所はGoogle がOracleに総額88億ドルを賠償する判決を下しました。2009年の Oracle による Sun 買収の費用はわずか74億ドルであったことは知られています。 Oracle の法務部門による数回の魔法の作戦の後、訴訟での補償金により Sun の買収は無償と同じものになりました。

JDK 11LST(2018-9):

▪HTTP クライアント API (HTTP クライアント API)、Nest-Based Access Control (Nest-Based Access Control)、Flight Recorder (フライト レコーダー)、Epsilon GC (Epsilon ガベージ コレクター) の改良版 ZGC (Z Garbage Collector) などの機能を導入しました。

これは、Java SE の長期サポート版の最新バージョンであり、HTTP クライアント、Lambda パラメータのローカル変数構文、ZGC など、重要な実用的価値を持つ新機能が導入されています。2018 年 10 月、前回の JavaOne2018 がサンフランシスコで開催され、1996 年に Java とともに生まれ Java とともに育ったこの開発者向けの年次イベントは終了しました。さらに、Java Mission Control (Java Mission Control (JMC) は、Java アプリケーションの監視、管理、分析のために Oracle Corporation によって開発されたツールです。) 開発チームも 6 月に Oracle によって解散されました。

◦ JDK 12 (2019 年 3 月):

▪Switch 式のプレビュー機能、マイクロベンチマーク テスト スイートなどの機能を導入しました。

2019年2月、JDK 12のリリース前夜、Oracleは以前の発表どおり6か月後にOpenJDKの前バージョンのメンテナンスを放棄し、RedHatはOracleからOpenJDK 8とOpenJDK 11の管理権と権利を引き継ぎました。同時にメンテナンス業務も行います。

◦ JDK 13 (2019 年 9 月):

▪テキストブロックのプレビュー機能やダイナミックCDSアーカイブなどの機能を導入しました。

◦ JDK 14 LST (2020 年 3 月):

▪インスタンスパターンマッチングのプレビュー機能、不揮発性メモリのサポートなどの機能を導入しました。

◦ JDK 15 (2020 年 9 月):

▪シールドクラスプレビュー機能やEdwards-Curveデジタル署名アルゴリズムなどの機能を導入しました。

◦ JDK 16 (2021 年 3 月):

▪レコードプレビュー機能やベクターAPIなどの機能を導入しました。

JDK 17LST (2021 年 9 月):

▪パターンマッチングやシールクラスなどの正式機能を導入した長期サポート版。

◦ JDK 18 (2022 年 3 月):

▪シンプルな Web サーバーを導入し、Java API ドキュメントへのコード スニペットの追加をサポートし、UTF-8 を Java API のデフォルト文字セットにします。

◦JDK 19 (2022 年 9 月):

▪構造化された同時 API を導入して、マルチスレッド プログラミングを簡素化し、仮想スレッドをサポートします。

◦JDK 20 LST (2023 年 3 月):

▪録画モード、スイッチモードマッチングなどを導入。

3. 市場で現在使用されている JDK バージョン

New Relic は最近、数百万のオンライン アプリケーションからデータを収集し、現在の運用環境で最も使用されている JDK バージョン、JDK ベンダー、コンテナなどに関する最も人気のあるデータをカウントする「Java Ecosystem Status Report 2023」をリリースしました。

現在市場に出ているアプリケーションの 56% 以上が JDK 11 を使用しています。対照的に、Java 8 の使用は 2020 年の 84% から現在は約 32% に減少しています。どちらも JDK 11 の 2 つの LTS バージョンにアップグレードされています。 JDK17。

JDK メーカーの中でも、Amazon は過去 2 年間で 22% から 31% と比較的大きな増加を見せており、これは現在市場に出ているすべての JDK メーカーの中で最も高い割合です。

4. まとめ

OK、上記はこれまでのすべての JDK バージョンと関連機能の簡単な紹介です。もともと、各バージョンの機能のマインド マップが編集され、詳細な関連紹介が含まれていましたが、これをすべて記事に含めると、長いですね、実は私たちが使用している JDK はまだ JDK8 です。少し前に、JDK の調査を通じて、JDK9 のモジュール化と JDK19 の仮想スレッドについても研究し、実際のデモを使用しました関連する分析については、次の記事で紹介する予定です。

ps:脳マップの写真は記事の最後に添付してあります~

著者: Jingdong Technology Song Huichao

出典: JD Cloud 開発者コミュニティの複製。出典を示してください。

産業情報技術省: 未登録のアプリにネットワーク アクセス サービスを提供しない Go 1.21 が正式リリース Linus がコードを個人的にレビュー、Bcachefs ファイル システム ドライバーに関する「内紛」を鎮めることを期待 ByteDance が パブリック DNS サービスを開始 7-Zip 公式Web サイトは Baidu によって悪意のある Web サイトとして識別されました Google、AI コード エディターをリリース: Project IDX 清華レポート: Wenxin Yiyan が中国で確固たる地位を確立、ChatGPT Vim プロジェクトを超え、将来の 瞑想ソフトウェアが発売される予定、 ChatGPT は「中国初の Linux」によって設立されました「人」の1日あたりのコストは約70万米ドル、OpenAIは破産寸前になる可能性がある
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4090830/blog/10095890