Java基礎(chǔ)入門(mén)之JDK、JRE、JVM關(guān)系詳解及開(kāi)發(fā)流程
1. JDK, JRE, JVM 的關(guān)系(核心重點(diǎn))
它們是 包含關(guān)系,從下到上層層嵌套,共同支撐Java程序的運(yùn)行與開(kāi)發(fā)。
- JVM (Java Virtual Machine):Java虛擬機(jī)
- 是Java程序的“運(yùn)行引擎”,負(fù)責(zé)將字節(jié)碼翻譯成底層系統(tǒng)可執(zhí)行的機(jī)器碼。
- 核心作用是屏蔽操作系統(tǒng)差異,實(shí)現(xiàn)“一次編寫(xiě),到處運(yùn)行”(Write Once, Run Anywhere)。
- 單獨(dú)存在無(wú)法運(yùn)行程序,因?yàn)樗鄙俸诵念?lèi)庫(kù)(如
java.lang包)。
- JRE (Java Runtime Environment):Java運(yùn)行環(huán)境
- 公式:
JRE = JVM + 核心類(lèi)庫(kù) (Libs) - 作用:提供運(yùn)行Java程序所需的基礎(chǔ)環(huán)境,包括JVM和標(biāo)準(zhǔn)類(lèi)庫(kù)。
- 適用場(chǎng)景:僅需要運(yùn)行已編譯的Java程序(如運(yùn)行Minecraft客戶(hù)端)。
- 公式:
- JDK (Java Development Kit):Java開(kāi)發(fā)工具包
- 公式:
JDK = JRE + 開(kāi)發(fā)工具 (javac, java, jdb等) - 作用:為開(kāi)發(fā)者提供編譯、調(diào)試、文檔生成等工具,是開(kāi)發(fā)Java程序的必備環(huán)境。
- 公式:
2. Java 開(kāi)發(fā)步驟
Java是半編譯半解釋型語(yǔ)言,標(biāo)準(zhǔn)開(kāi)發(fā)流程分為三步,通過(guò)mermaid流程圖直觀展示:

- 編寫(xiě) (Write):
- 創(chuàng)建
.java源文件(如HelloWorld.java),編寫(xiě)人類(lèi)可讀的Java代碼。
- 創(chuàng)建
- 編譯 (Compile):
- 使用
javac命令將源代碼編譯為.class字節(jié)碼文件(如javac HelloWorld.java)。 - 字節(jié)碼是JVM可識(shí)別的中間代碼,與操作系統(tǒng)無(wú)關(guān)。
- 使用
- 運(yùn)行 (Run):
- 使用
java命令啟動(dòng)JVM并加載字節(jié)碼(如java HelloWorld,注意不加.class后綴)。 - JVM通過(guò)解釋器或JIT(Just-In-Time)編譯器將字節(jié)碼轉(zhuǎn)換為本地機(jī)器碼執(zhí)行。
- 使用
3. 注釋 (Comments)
注釋是給程序員看的說(shuō)明,Java編譯器會(huì)忽略。共有三種類(lèi)型:
單行注釋:
//// 這是一個(gè)單行注釋?zhuān)瑑H限一行 int a = 10;
多行注釋:
/* ... *//* 這是一個(gè)多行注釋 可以跨行書(shū)寫(xiě) 不會(huì)被編譯執(zhí)行 */
文檔注釋:
/** ... */(重要)- 通常用于類(lèi)、方法、變量上方,可通過(guò)
javadoc命令生成HTML文檔。
/** * 這是一個(gè)文檔注釋 * @author 作者名 * @version 1.0 */ public class Demo { }- 通常用于類(lèi)、方法、變量上方,可通過(guò)
4. Java 語(yǔ)言的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 跨平臺(tái)性:JVM屏蔽底層差異,實(shí)現(xiàn)“一次編寫(xiě),到處運(yùn)行”。
- 面向?qū)ο?/strong>:支持封裝、繼承、多態(tài),適合開(kāi)發(fā)大型企業(yè)級(jí)系統(tǒng)。
- 健壯性:強(qiáng)類(lèi)型機(jī)制、異常處理、自動(dòng)垃圾回收(GC),減少內(nèi)存泄漏風(fēng)險(xiǎn)。
- 生態(tài)強(qiáng)大:擁有Spring、大數(shù)據(jù)框架(如Hadoop)、海量開(kāi)源庫(kù),功能覆蓋全面。
- 多線(xiàn)程支持:內(nèi)置多線(xiàn)程機(jī)制,易于開(kāi)發(fā)高并發(fā)應(yīng)用。
缺點(diǎn)
- 語(yǔ)法繁瑣:相比Python/Go,需編寫(xiě)更多“樣板代碼”(如Getter/Setter,可通過(guò)Lombok插件緩解)。
- 啟動(dòng)慢:JVM冷啟動(dòng)較慢,不適合輕量級(jí)腳本或Serverless場(chǎng)景。
- 內(nèi)存占用高:Java應(yīng)用通常比C++應(yīng)用占用更多內(nèi)存。
5. JVM 的核心原理(補(bǔ)充)
JVM運(yùn)行時(shí)將內(nèi)存劃分為不同區(qū)域,核心區(qū)域包括:

- 堆 (Heap):
- 存放所有
new出來(lái)的對(duì)象實(shí)例,是GC的主要工作區(qū)域。
- 存放所有
- 棧 (Stack):
- 存放局部變量和方法調(diào)用,方法執(zhí)行完畢后棧內(nèi)存自動(dòng)釋放。
- 方法區(qū) (Method Area):
- 存放類(lèi)的元數(shù)據(jù)、常量池、靜態(tài)變量等信息。
總結(jié)
Java的跨平臺(tái)性依賴(lài)于JVM的“翻譯”能力——JVM針對(duì)不同操作系統(tǒng)提供對(duì)應(yīng)版本,將統(tǒng)一的.class字節(jié)碼轉(zhuǎn)換為本地機(jī)器碼。理解JDK、JRE、JVM的關(guān)系,以及Java開(kāi)發(fā)流程和JVM內(nèi)存結(jié)構(gòu),是掌握J(rèn)ava基礎(chǔ)的關(guān)鍵。這些知識(shí)不僅幫助初學(xué)者建立系統(tǒng)認(rèn)知,也為后續(xù)學(xué)習(xí)高級(jí)特性(如GC調(diào)優(yōu)、多線(xiàn)程)打下堅(jiān)實(shí)基礎(chǔ)。
到此這篇關(guān)于Java基礎(chǔ)入門(mén)之JDK、JRE、JVM關(guān)系詳解及開(kāi)發(fā)流程的文章就介紹到這了,更多相關(guān)JDK、JRE、JVM關(guān)系詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java調(diào)用DeepSeek實(shí)現(xiàn)多輪對(duì)話(huà)功能
對(duì)于廣大Java開(kāi)發(fā)者而言,DeepSeek這一先進(jìn)的人工智能技術(shù),猶如一把鑰匙,為我們打開(kāi)了提升開(kāi)發(fā)效率與創(chuàng)新能力的新大門(mén),本文給大家介紹了Java調(diào)用DeepSeek實(shí)現(xiàn)多輪對(duì)話(huà)功能,需要的朋友可以參考下2025-03-03
maven項(xiàng)目打jar包并包含所有依賴(lài)詳細(xì)教程
maven打包生成的普通jar包,只包含該工程下源碼編譯結(jié)果,不包含依賴(lài)內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于maven項(xiàng)目打jar包并包含所有依賴(lài)的相關(guān)資料,需要的朋友可以參考下2023-05-05
MyBatisPlus自定義JsonTypeHandler實(shí)現(xiàn)自動(dòng)轉(zhuǎn)化JSON問(wèn)題
這篇文章主要介紹了MyBatisPlus自定義JsonTypeHandler實(shí)現(xiàn)自動(dòng)轉(zhuǎn)化JSON問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
javaweb啟動(dòng)時(shí)啟動(dòng)socket服務(wù)端代碼實(shí)現(xiàn)
這篇文章主要介紹了javaweb啟動(dòng)時(shí)啟動(dòng)socket服務(wù)端代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Mybatis 如何批量刪除數(shù)據(jù)的實(shí)現(xiàn)示例
這篇文章主要介紹了Mybatis 如何批量刪除數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Spring Boot JPA如何把ORM統(tǒng)一起來(lái)
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 規(guī)范的基礎(chǔ)上封裝的一套JPA應(yīng)用框架,可使開(kāi)發(fā)者用極簡(jiǎn)的代碼即可實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問(wèn)和操作,本文給大家詳細(xì)介紹了Spring Boot JPA如何把ORM統(tǒng)一起來(lái),感興趣的朋友一起看看吧2018-04-04
使用IDEA啟動(dòng)項(xiàng)目build時(shí)出現(xiàn)OOM相關(guān)異常的解決
這篇文章主要介紹了使用IDEA啟動(dòng)項(xiàng)目build時(shí)出現(xiàn)OOM相關(guān)異常的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-06-06
Java實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字小游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
Java設(shè)計(jì)模式之單例模式Singleton Pattern詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之單例模式Singleton Pattern詳解,一些常用的工具類(lèi)、線(xiàn)程池、緩存,數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)連接池、賬戶(hù)登錄系統(tǒng)、配置文件等程序中可能只允許我們創(chuàng)建一個(gè)對(duì)象,這就需要單例模式,需要的朋友可以參考下2023-12-12

