Java仮想マシン

Java仮想マシン-最初のJavaについて


注:Java仮想マシンを学びたい理由については、この記事を確認できます。

Java仮想マシンを学ぶ理由


Javaテクノロジーシステム

大まかに言って、Java仮想マシンで実行されるClojure、JR​​uby、Groovyなどの言語と関連プログラムは、Javaテクノロジーシステムに属しています。従来の意味でのみ見ると、Sunの公式Javaテクノロジシステムには次のコンポーネントが含まれています。

  • Javaプログラミング言語
  • さまざまなハードウェアプラットフォーム上のJava仮想マシン
  • クラスファイルフォーマット
  • Java APIライブラリ
  • 商用組織およびオープンソースコミュニティのサードパーティJavaライブラリ

Javaプログラミング言語、Java仮想マシン、Java APIクラスライブラリの3つの部分をまとめてJDK(Java Development Kit)と呼ぶことができます。JDKは、Javaプログラム開発をサポートするための最小の環境です。次の内容では、便宜を説明するために、一部の場所では、Javaテクノロジシステム全体がJDKに置き換えられます。また、JavaSE APIサブセットの2つの部分と、Java APIクラスライブラリのJava仮想マシンを総称してJRE(Javaランタイム環境)と呼びます。JREは、Javaプログラムの実行をサポートする標準環境です。(「Java仮想マシンの詳細な理解」1.2)


テクノロジーが提供する分野、またはJavaテクノロジーが関係する主要なビジネス領域に従って分割されている場合、Javaテクノロジーシステムは4つのプラットフォームに分割できます。

  • Java Card:小さなメモリデバイス(スマートカードなど)で実行されるJavaアプレット(アプレット)をサポートするプラットフォーム。
  • Java ME(Micro Edition):モバイル端末(携帯電話、PDA)で実行されるJavaプログラムをサポートし、Java APIを効率化し、モバイル端末のサポートを追加するプラットフォーム。このバージョンは、以前はJ2MEと呼ばれていました。
  • Java SE(Standard Edition):デスクトップレベルのアプリケーション(Windowsでのアプリケーションなど)のJavaプラットフォームをサポートし、完全なJavaコアAPIを提供します。このバージョンは、以前はJ2SEと呼ばれていました。
  • Java EE(Enterprise Edition):多層アーキテクチャを使用するエンタープライズアプリケーション(ERPやCRMアプリケーションなど)をサポートするJavaプラットフォーム。JavaSE APIの提供に加えて、多くの拡張[3]と関連するデプロイメントを提供しますはい、このバージョンは以前はJ2EEと呼ばれていました。(「Java仮想マシンの詳細な理解」1.2)

ジャワの歴史

  • 1995年5月23日、Oak言語はJavaに名前が変更され、Java 1.0がSunWorld会議で正式にリリースされました。Java言語は、スローガン「Write Once、RunAnywhere」を最初に提案しました。
  • 1996年1月23日、JDK 1.0がリリースされ、Java言語には最初の公式バージョンの動作環境がありました。JDK 1.0は、純粋に解釈されたJava仮想マシン実装(Sun Classic VM)を提供します。JDKバージョン1.0の代表的なテクノロジには
    、Java仮想マシン、アプレット、AWTなどがあります。
  • 最初のjavaoneカンファレンスは、1996年5月に初めて開催されました。
  • 1997年にjava1.1がリリースされたjarファイル形式のJDBC javaBeansリフレクション内部クラスが登場
  • 1998年、1.2javaは方向を分け始めました。デスクトップアプリケーション開発用のJ2SE(Java 2 Platform、Standard Edition)、エンタープライズレベルの開発用のJ2EE(Java 2 Platform、Enterprise Edition)、および携帯電話などのモバイル端末用のJ2ME(Java 2 Platform、Micro Edition)。このバージョンには、EJB、Javaプラグイン、Java IDL、Swingなど、多くの代表的なテクノロジがあり、このバージョンの
    Java仮想マシンは、初めて組み込まれたJIT(ジャストインタイム)コンパイラだけでなく、コレクションコレクションクラス。
  • HotSpot仮想マシンは1999年に導入されました。
  • 2000年に1.3がリリースされ、新しいタイマーAPIと数学演算が提供されました
  • その後、約2年ごとにリリースされます。バージョンは2002年にリリースされ、基本的に成熟しています。主流のアプリケーション(Spring、Hibernate、Strutsなど)は、JDK 1.4で直接実行することも、JDK 1.4で実行できるバージョンを引き続きリリースすることもできます。JDK 1.4は、正規表現、例外チェーン、NIO、ログクラス、XMLパーサー、XSLTコンバーターなど、多くの新しい技術機能もリリースしました。
  • 2002年、Microsoft.NET Frameworkがリリースされました。C#とJavaの戦いが始まります。
  • 2004年には、1.5の自動ボクシング、ジェネリックス、動的注釈、列挙、可変長パラメーター、およびトラバーサルループ(foreachループ)が登場しました。java.util.concurrentなどの並行パッケージが提供されます。
  • 2006年に1.6が登場し、SunはJDK 1.2から8年間存在していたJ2EE、J2SE、およびJ2ME命名メソッドを終了し、Java SE 6、Java EE 6、およびJava ME 6の命名メソッドを有効にしました。JDK 1.6の改善点には、動的言語サポートの提供(組み込みのMozilla JavaScript Rhinoエンジンを介して実装)、コンパイルAPIの提供、およびマイクロHTTPサーバーAPIが含まれます。同時に、このバージョンでは、ロックと同期、ガベージコレクション、クラスロードなど、Java仮想マシン内で多くの改善が行われ、アルゴリズムの他の側面が大幅に変更されました。
  • 2006年、javaがオープンソースであることが発表されました。
  • 2009年に1.7でリリースされ、途中で多くの経験を積み、サンカンパニーを買収しました。1.7で完了するはずのラムダ式は1.8まで待機します。

Java仮想マシン開発

  • [注]:java -versionと入力して、現在のデフォルトの仮想マシンの

    Javaバージョン「1.7.0_79」

    Java(TM)SEランタイム環境(ビルド1.7.0_79-b15)

    Java HotSpot(TM) 64ビットサーバーVM(ビルド24.79- b02、混合モード)

Sun Classic VMは1.0で始まり、1.4で終わります

この仮想マシンは、純粋なインタープリターのみを使用してJavaコードを実行できます。JITコンパイラーを使用する場合は、プラグインする必要があります。ただし、JITコンパイラーがプラグインされている場合、JITコンパイラーは仮想マシンの実行システムを完全に引き継ぎ、インタープリターは機能しなくなります。インタープリターとコンパイラーは一緒に動作できないため、コンパイラーを使用して実行する場合、その実行頻度にコンパイルの値があるかどうかに関係なく、コンパイラーはすべてのメソッドとすべてのコード行をコンパイルする必要があります。プログラムの応答時間のプレッシャーに基づいて、これらのコンパイラーはコンパイルに少し時間がかかる最適化テクノロジーをあえて適用しないため、この段階の仮想マシンはJITコンパイラーを使用してローカルコードを出力し、実行効率も従来のC / C ++プログラムと同様です現時点では、大きなギャップがあり、「Java言語は非常に遅い」というイメージがユーザーの頭に浮かび上がりました。

正確なVM

java1.2その実行システムには、最新の高性能仮想マシンのプロトタイプ(2レベルのリアルタイムコンパイラー、コンパイラーとインタープリターの混合作業モードなど)がすでにありますが、間もなく終了します。


HotSpot VM

最初の2つのホットスポットコード検出技術の利点を組み合わせます。ExactVMは彼をやったことはありません。そう。


BEA JRockit / IBM J9 VM

JRockit VMは、「世界最速のJava仮想マシン」と呼ばれていましたが、JRockitにはパーサー実装が含まれておらず、すべてのコードはインスタントコンパイラによってコンパイルおよび実行されます。さらに、JRockitのガベージコレクターとMissionControlサービススイートの実装も、多くのJava仮想マシンの中でトップレベルにあります。


Oracleは2008年と2009年にそれぞれBEAとSunを買収したため、OracleにはJRockit VMとHotSpot VMの2つの優れたJava仮想マシンもあります。オラクルは、これらの2つの仮想マシンの統合を近い将来(JDK 8がリリースされる頃に)完了させ、その利点を補完すると発表しました。統合方法は基本的にHotSpotに基づいており、JRockitのガベージコレクターやMissionControlサービスの使用、HotSpotのJITコンパイラーや混合ランタイムシステムの使用など、JRockitの優れた機能を移植しています。


この記事のすべてのコンテンツは、「Java仮想マシンの詳細な理解」からのものです。

21件の元の記事を公開 24 件を獲得 表示回数20,000回以上

おすすめ

転載: blog.csdn.net/qq_30332665/article/details/75140562