首頁 > Java > java教程 > 主體

Java 生態系概述

PHPz
發布: 2024-08-21 06:20:32
原創
1000 人瀏覽過

目錄

  1. 簡介
  2. JVM(Java 虛擬機器)
    • JVM 的架構
      • 類別載入器
      • JVM記憶體
        • 方法區
        • 堆疊區
        • 程式計數器(PC)註冊
        • 原生方法堆疊
      • 執行引擎
        • 翻譯
        • 即時(JIT)編譯器
        • 垃圾收集器
  3. JRE(Java 執行環境)
    • JRE 的關鍵組件
      • 執行任務
      • 類別庫
      • Java 原生介面 (JNI)
      • 安全管理員
  4. JDK(Java 開發工具包)
    • JDK的核心特性
      • javac(Java編譯器)
      • java(Java 應用程式啟動器)
      • jdb(Java 偵錯器)
      • jar(Java歸檔工具)
      • javadoc(Java 文檔產生器)
  5. JVM、JRE 和 JDK:有什麼區別?
  6. JDK、JRE、JVM 層次結構

介紹

Java 生態系統是圍繞和支援 Java 程式語言的廣泛的工具、技術、程式庫和框架。它包含開發、部署和管理 Java 應用程式所需的一切。圍繞JDK、JRE、JVM

JVM(Java 開發工具包)

JVM 就像一個翻譯器,讓您的電腦執行 Java 程式和編譯成 Java 位元組碼的其他語言。它將程式碼翻譯成您的電腦硬體可以理解和執行的程式碼。

JVM 的架構

Java Ecosystem Overview

類別載入器

  1. 載入中
    將 .class 檔案載入到記憶體中。定位、載入和連結類別檔案(Java 字節碼)以供執行。

  2. 連結

    • 驗證:驗證字節碼。
    • 準備工作:為靜態變數分配內存,並將內存初始化為預設值。
    • 解決方案:將符號引用解析為直接引用。
  3. 初始化
    初始化是 JVM 準備使用類別或介面的最後一步。此步驟發生在類別載入(到記憶體中)並連結之後。

JVM記憶體

  1. 方法區
    方法區 存放方法、變數、執行時間常數池、方法代碼等類別級資料。

    雷雷

    定義Person類別時,方法區儲存Person類別的結構,包括方法(setName)和欄位(name),以及執行時間常數池,其中包含方法名稱和常數值等參考。 # 🎜🎜#

  2. 堆是分配運行時記憶體物件的地方。堆在所有執行緒之間共享,是垃圾收集過程發生的地方。

    雷雷

    當你建立一個新的Person物件時,它會被分配在堆上。

  3. 堆疊區 堆疊區域儲存幀,其中包含局部變數、操作數堆疊以及對正在執行的類別的運行時常數池的參考。每個線程都有自己的堆疊。

    雷雷

    每次呼叫 someMethod 時,都會將一個新幀推送到堆疊區域。該框架包括局部變數(a、b 和 sum)、用於中間計算的操作數堆疊以及對運行時常數池中方法的類別的參考。

  4. 節目計數器(PC)註冊 PC包含目前正在執行的JVM指令的位址。每個線程都有自己的PC暫存器。

  5. 原生方法堆疊 與Java堆疊類似,但用於本機方法。

執行引擎

  1. 翻譯 解譯器讀取Java字節碼並逐行執行,將每個字節碼指令轉換為CPU可以執行的機器級指令序列。

  2. 即時(JIT)編譯器 在運作時將字節碼轉換為本機機器碼以提高效能。

  3. 垃圾收集器 垃圾收集器負責自動管理 JVM 中的記憶體。它識別並釋放不再使用的內存,將其釋放以用於新物件。

JRE

JRE是一個軟體包,提供運行Java應用程式所需的環境。它旨在在機器上執行 Java 字節碼,使其成為 Java 的「一次編寫,隨處運行」(WORA) 原則的重要組成部分。

&& && &&Schlüsselkomponenten des JRE

  1. Ausführung & Aufgaben
    Die JRE erleichtert die Ausführung von Java-Anwendungen durch die Bereitstellung der JVM und der erforderlichen Bibliotheken und Ressourcen. Die JRE stellt sicher, dass die JVM über &alles, was benötigt wird, um diese Aufgaben auf jeder Plattform auszuführen. Stellen Sie sich die JRE als das komplette Paket vor, das die JVM umfasst &führt&die&schweren&Hebearbeiten,&und&andere&Komponenten&die&die&Ausführung&von&Java&Anwendungen unterstützen.

  2. Klassen- und Bibliotheken
    JRE umfasst einen Satz Standard-Java-Klassenbibliotheken, die wiederverwendbaren Code für die Ausführung allgemeiner Aufgaben wie Datenstrukturen und E/A bereitstellen. &Netzwerk,&Parallelität,&und&mehr.

  3. Java&Native&Interface&(JNI)
    JNI ermöglicht es Java-Anwendungen, mit nativem Code zu interagieren, der in Sprachen wie C oder C++ geschrieben ist. Diese Funktion ist unerlässlich für die Integration plattformspezifischer Anwendungen. &Funktionen&oder&Verwendung vorhandener nativer Bibliotheken.

  4. Sicherheit&Manager&
    Der „Security“-Manager setzt „Sicherheitsrichtlinien“ für „Java-Anwendungen“ durch und schränkt Aktionen wie „Dateizugriff“, „Netzwerkverbindungen“ und „potenziell“ ein. &unsicherer&Code.

&& && &&JDK&(Java&Development&Kit)

JDK ist ein Tool, mit dem Entwickler Java-Anwendungen schreiben, kompilieren, debuggen und ausführen können. Es ist eine Obermenge von JRE #&und&enthält&zusätzliche&Tools&für die Java-Entwicklung.

&& && &&Kernfeatures&des&JDK

  • javac&(Java&Compiler)
    javac wird zum Konvertieren von Java-Quellcode (.java-Dateien) in Bytecode (.class-Dateien) verwendet. Dieser Bytecode wird dann ausgeführt. #&by&der&Java&Virtual&Machine&(JVM).

  • Java&(Java&Application&Launcher)
    Der Java-Befehl startet eine Java-Anwendung. Er lädt die erforderlichen Klassendateien, interpretiert den Bytecode und startet die Anwendung.

  • jdb&(Java&Debugger)
    jdb ist der Befehlszeilen-Debugger für Java-Programme und ermöglicht es Ihnen, Java-Anwendungen zur Laufzeit zu prüfen und zu debuggen.

  • jar&(Java&Archive&Tool)
    jar&tool&pakete&mehrere&Dateien&in&eine&einzelne&Archivdatei,&normalerweise&mit&einer&.jar&Erweiterung.&Diese JAR-Dateien&werden&zur&Verteilung&verwendet &Java&Anwendungen&und&Bibliotheken.

  • javadoc&(Java&Dokumentation&Generator)
    javadoc&erzeugt&HTML&Dokumentation&aus&Java-Quellcode,&verwendet&die&speziellen&/**&*/&Kommentare&bekannte&als&doc&Kommentare.

JVM vs JVE vs JDK, what's the difference?

Feature/Aspect JVM JRE JDK
Purpose Executes Java bytecode Provides the environment to run Java applications Provides tools to develop, compile, debug, and run Java applications
Includes JVM itself, which includes class loader, bytecode verifier, and execution engine JVM + Core libraries (like java.lang, java.util, etc.), and other runtime components JRE + Development tools (like javac, jdb, jar, etc.), documentation
Components - Class Loader
- Bytecode Verifier
- Execution Engine (Interpreter, JIT)
- JVM
- Core Java libraries
- Java Plug-in
- Java Web Start
- JRE
- Java Compiler (javac)
- JAR Tool (jar)
- Debugger (jdb)
- Documentation Generator (javadoc)
- Other development tools
Main Functionality Executes Java bytecode, enabling platform independence Provides the minimum requirements to run Java applications Allows developers to write, compile, and debug Java code
Who Uses It? End-users running Java applications End-users running Java applications Java developers writing and compiling Java applications
Installation Size Smallest Larger than JVM but smaller than JDK Largest (includes JRE and development tools)
Developer Tools No No Yes (includes compiler, debugger, profiler, etc.)
Required to Run Java Programs Yes Yes No (but needed to create Java programs)
Platform Independence Provides platform independence by abstracting the underlying hardware Yes, because it includes the JVM Yes, it includes everything from JRE
Examples of Usage - Running any Java application (e.g., desktop applications, servers) - Running Java applications in production or end-user environments - Writing and compiling Java code
- Packaging applications
- Debugging
Availability Part of JRE and JDK Standalone or part of JDK Standalone package

JDK, JRE, JVM hierarchy

JDK (Java Development Kit)
│
├── JRE (Java Runtime Environment)
│   │
│   ├── JVM (Java Virtual Machine)
│   │   ├── Class Loader
│   │   ├── Bytecode Verifier
│   │   ├── Execution Engine
│   │   │   ├── Interpreter
│   │   │   ├── Just-In-Time (JIT) Compiler
│   │   │   └── Garbage Collector
│   │   └── Runtime Libraries (core libraries like java.lang, java.util, etc.)
│   │
│   └── Java APIs (Core libraries and additional libraries)
│
├── Development Tools (like javac, jdb, jar, javadoc, etc.)
└── Documentation (API docs, guides)
登入後複製

以上是Java 生態系概述的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!