JDK、JRE 和 JVM 的區別

你好,有抱負的 Java 開發者!很高興能夠與你一起踏上這個編程之旅。作為你友善的鄰居電腦科學老師,我在這裡要為你揭開 Java 開發工具常令人困惑的世界。所以,拿起一杯咖啡(或者茶,如果你喜歡的话),讓我們一起深入 JDK、JRE 和 JVM 的迷人領域!

Java - JDK vs JRE vs JVM

什麼是 JDK?

JDK 是 Java 開發工具包的縮寫,它是 Java 開發者的超級英雄工具箱。把它想像成你創建 Java 應用程序的可靠瑞士軍刀。JDK 包含開發、編譯和運行 Java 程序所需的一切。

JDK 的關鍵組件

  1. Java 編譯器 (javac):這個神奇的工具將您可讀的 Java 代碼轉換為 Java 虛擬機可以理解的字节碼。

  2. Java 運行時環境 (JRE):是的,JDK 包含 JRE!我們稍後會進一步了解。

  3. 開發工具:這些就像是我們超級英雄的助手,包括調試器和文檔工具。

讓我們看看使用 JDK 編譯和運行 Java 程序的簡單示例:

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}

要編譯此程序,您將使用 Java 編譯器(javac)像這樣:

javac HelloWorld.java

這會創建一個包含字节碼的 HelloWorld.class 文件。要運行它,您將使用:

java HelloWorld

瞧!你會在控制台上看到 "Hello, World!"。

什麼是 JRE?

JRE,或者說 Java 運行時環境,就像是你 Java 程序生活和繁榮的舒適家。它為執行 Java 應用程序提供了必要的運行時環境。

JRE 的關鍵組件

  1. Java 虛擬機 (JVM):JRE 的核心,我們稍後會更詳細地探索。

  2. Java 類庫:一組預編寫的代碼,您的 Java 程序可以使用。

  3. Java 類加載器:這個組件負責加載、鏈接和初始化 Java 類和接口。

如果你只是運行 Java 應用程序而不是開發它們,那麼你只需要 JRE。這就像擁有 DVD 播放器(JRE)來觀看電影(Java 程序),而不需要製作電影的設備(JDK)。

什麼是 JVM?

Java 虛擬機(JVM)是Java "一次编写,到处运行" 哲學的神奇引擎。它是一個抽象的計算機,為執行 Java 字節碼提供運行時環境。

JVM 的關鍵特性

  1. 平台獨立性:JVM 作為您的 Java 程序和底層操作系統之間的橋樑。

  2. 內存管理:JVM 處理內存分配和釋放(垃圾回收)。

  3. 安全性:它為運行 Java 應用程序提供了一個安全的環境。

以下是 JVM 工作原理的簡化視圖:

[Your Java Code] -> [Java Compiler] -> [Bytecode] -> [JVM] -> [Machine Code]

JVM 解析字節碼,並在運行時將其轉換為特定於機器的指令。

JDK、JRE 和 JVM 的區別

現在我們已經見過我們的三位 Java 火槍手,讓我們看看它們是如何一起工作以及它們之間的差異:

特性 JDK JRE JVM
目的 開發 執行 運行時環境
包含 JRE + 開發工具 JVM + 圖書館 -
使用者 開發者 終端用戶 JRE
包含編譯器

這樣想:

  • JDK 是你建立 Java 應用程序的完整工作坊。
  • JRE 是展示和使用這些應用程序的展示廳。
  • JVM 是幕後推動一切的引擎。

Java 控制語句

控制語句是您 Java 程序的交通信號,指導執行流程。讓我們看看一些示例:

If-Else 語句

int age = 18;
if (age >= 18) {
System.out.println("You can vote!");
} else {
System.out.println("Sorry, you're too young to vote.");
}

此代碼檢查一個人是否年齡足以投票。這就像民主俱樂部的保鏢一樣!

For 迴圈

for (int i = 1; i <= 5; i++) {
System.out.println("Count: " + i);
}

這個迴圈就像一個健身教練,讓你從 1 到 5 種數你的重複次數。

面向對象編程

面向對象編程(OOP)是 Java 的支柱。它就像玩 LEGO 积木,每塊積木(對象)都有自己的屬性和行為。

類和對象示例

public class Dog {
String name;
String breed;

public void bark() {
System.out.println(name + " says Woof!");
}

public static void main(String[] args) {
Dog myDog = new Dog();
myDog.name = "Buddy";
myDog.breed = "Golden Retriever";
myDog.bark();
}
}

在這個示例中,我們創建了一個 Dog 類(我們的 LEGO 藍圖)及其實例(我們的實際 LEGO 創作)。bark() 方法讓我們的狗發出了聲音!

Java 內置類

Java 提供了許多內置類,使開發人員的生活變得更加輕鬆。讓我們看看一些:

String 類

String greeting = "Hello, World!";
System.out.println(greeting.length());  // 輸出:13
System.out.println(greeting.toUpperCase());  // 輸出:HELLO, WORLD!

String 類就像是文本操作的瑞士軍刀。

ArrayList 類

import java.util.ArrayList;

ArrayList<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println(fruits);  // 輸出:[Apple, Banana, Cherry]

ArrayList 就像是一個神奇的可擴展數組。它會隨著你添加或刪除元素而增長和收縮。

Java 檔案處理

Java 中的檔案處理讓你可以與電腦上的檔案進行工作。這就像是你數據的圖書館管理員!

import java.io.FileWriter;
import java.io.IOException;

public class FileWriteExample {
public static void main(String[] args) {
try {
FileWriter writer = new FileWriter("output.txt");
writer.write("Hello, File!");
writer.close();
System.out.println("Successfully wrote to the file.");
} catch (IOException e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}

此代碼創建了一個名為 "output.txt" 的新檔案,並將 "Hello, File!" 寫入其中。這就像給未來的自己留了一張便條!

總結來說,理解 JDK、JRE 和 JVM 之間的區別對任何 Java 開發者來說都是至關重要的。它們構成了您建立 Java 程序技術的基礎。請記住,JDK 是您的工作坊,JRE 是您的展示廳,而 JVM 是幕後推動一切的力量。編程愉快,願您的 Java 之旅充滿樂趣和學習!

Credits: Image by storyset