第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

JVM 介紹

1. 前言

本節(jié)內(nèi)容主要是介紹 JVM 的定義、意義以及虛擬機(jī)的發(fā)展歷程,是本套課程的基礎(chǔ)知識(shí)部分,也是我們初次握手JVM 的章節(jié)。本節(jié)主要知識(shí)點(diǎn)如下:

  • 了解 JVM 的定義,這是我們了解 JVM 概念的基礎(chǔ),為本節(jié)的重點(diǎn)之一;

  • 了解 JVM 存在的價(jià)值及意義,從使用層面了解 JVM 存在的意義,也是本節(jié)課程的重點(diǎn)內(nèi)容;

  • 了解 JVM 整體結(jié)構(gòu),該結(jié)構(gòu)圖是從宏觀層面,介紹的虛擬機(jī)的整體結(jié)構(gòu)模塊,后續(xù)會(huì)對(duì)每個(gè)模塊進(jìn)行細(xì)致的介紹與講解,此處可視作了解內(nèi)容,為后續(xù)內(nèi)容的學(xué)習(xí)奠定基礎(chǔ);

  • 了解如何查看自己所使用的 JVM 版本,安裝完成 JDK 的學(xué)習(xí)者,都可以進(jìn)行查看;

  • 了解 JVM ,JRE 和 JDK 三者直接的區(qū)別,這是學(xué)習(xí) JVM 前需要掌握的基礎(chǔ)知識(shí)。

    本節(jié)內(nèi)容是我們初次了解 JVM,從概念的角度去了解 JVM,為我們后續(xù)章節(jié)內(nèi)容的學(xué)習(xí)打下了良好的基礎(chǔ)。

2. JVM 定義

定義: JVM (Java Virtual Machine 簡(jiǎn)稱 JVM),亦可稱之為 Java 虛擬機(jī)。它是運(yùn)行所有 Java 程序的抽象計(jì)算機(jī),是 Java 語(yǔ)言的運(yùn)行環(huán)境,它是 Java 最具吸引力的特性之一。

圖片描述

虛擬機(jī):從字面意義上來(lái)理解,虛擬機(jī)是一個(gè)虛擬化出來(lái)的計(jì)算機(jī)。

舉個(gè)例子:我們經(jīng)常在 Windows 操作系統(tǒng)上安裝 Linux 的虛擬機(jī),然后在 Linux 虛擬機(jī)上進(jìn)行 Shell 腳本的編寫練習(xí),那么從這個(gè)角度上來(lái)說, Linux 虛擬機(jī)就類似于 JVM ,不同的是 Linux 虛擬機(jī)支撐了 Shell 腳本的運(yùn)行環(huán)境,而 JVM 支撐了 Java 語(yǔ)言的運(yùn)行。

JVM 是一種抽象化的計(jì)算機(jī),通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。Java 虛擬機(jī)有自己完善的硬體架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。Java 虛擬機(jī)屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使得 Java 程序只需生成在 Java 虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。

3. JVM 的作用

JVM 是 Java 語(yǔ)言的一大關(guān)鍵亮點(diǎn),對(duì)于 JVM 的作用,我們這里介紹兩個(gè)主要的作用,來(lái)體現(xiàn) JVM 的價(jià)值所在。

  • 跨平臺(tái)性:Java 語(yǔ)言之所以有跨平臺(tái)的優(yōu)點(diǎn),完全是 JVM 的功勞,跨平臺(tái)性是 JVM 存在的最大的亮點(diǎn)。

    以上一個(gè)知識(shí)點(diǎn)部分所舉出例子來(lái)說,Windows 操作系統(tǒng)安裝上 JVM 之后,可以支持 Java 程序的運(yùn)行; Linux 操作系統(tǒng)安裝上 JVM 之后,可以支持 Java 程序的運(yùn)行;同理,Unix 操作系統(tǒng)等等所有我們熟悉的操作系統(tǒng),安裝上 JVM 之后,都可以支持 Java 程序的運(yùn)行。

這大大提升了 Java 語(yǔ)言的平臺(tái)靈活性,能夠在眾多語(yǔ)言爭(zhēng)鳴的時(shí)代,脫穎而出。

  • 優(yōu)秀的垃圾回收機(jī)制: Java 語(yǔ)言的誕生,極大的降低了軟件開發(fā)人員的學(xué)習(xí)難度,除了 Java 面向?qū)ο缶幊痰奶匦阅軌蚪档蛯W(xué)習(xí)難度以外,還有一個(gè)比較重要的點(diǎn),就是在進(jìn)行 Java 編程的時(shí)候,可以更少的去考慮垃圾回收機(jī)制。

    學(xué)習(xí)過 C 語(yǔ)言的技術(shù)人員都能夠體會(huì)這一點(diǎn),因?yàn)?C 語(yǔ)言編程過程中,要通過代碼手動(dòng)實(shí)現(xiàn)內(nèi)存垃圾的回收與空間釋放,這提升了編程的難度,因?yàn)榭紤]內(nèi)存空間釋放,更多的會(huì)涉及到底層的知識(shí),這是非常高的一個(gè)門檻。從 JVM 的角度來(lái)說,JVM 擁有自己的垃圾回收機(jī)制,為開發(fā)人員分擔(dān)了部分工作。

Tips:JVM 在 Java 語(yǔ)言中占據(jù)了非常重要的地位,學(xué)習(xí) JVM 是 Java 技術(shù)人員必須要做的事情,目前企業(yè)對(duì)于 Java 從業(yè)者對(duì) JVM 的掌握程度要求非常高,是重點(diǎn)學(xué)習(xí)內(nèi)容。

4. 查看自己的 JVM

我們知道,如果需要運(yùn)行 Java 程序,必須要安裝 JDK,這說明 JDK 中就包含了支持 Java 語(yǔ)言運(yùn)行的JVM ,我們來(lái)看下如何查看本機(jī)的 JVM 信息。

無(wú)論是 Windows 操作系統(tǒng)還是 Linux 操作系統(tǒng),正確安裝 JDK 并且配置好環(huán)境變量后,在命令行輸入如下命令進(jìn)行查看:

java -version

以本人的機(jī)器為例,可以看到如下的執(zhí)行結(jié)果:

C:\Users\Wayne.WangTJ>java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

我們仔細(xì)看下最后一句執(zhí)行結(jié)果,Java HotSpot? 64-Bit Server VM (build 25.191-b12, mixed mode),這就是我的電腦中 Jvm 虛擬機(jī)操作系統(tǒng)的版本。 當(dāng)然了,安裝不同的版本,結(jié)果是有所區(qū)別的。

5. JVM,JRE 和 JDK 聯(lián)系

三者的定義:我們先來(lái)明確下三者的定義,然后說明三者的聯(lián)系與區(qū)別。

  • JDK:全稱 java development kit ,開發(fā)工具包,面向我們的開發(fā)者,為開發(fā)者提供開發(fā)類庫(kù),他是 java 的核心。JDK 包含了JRE,一堆工具類(javac、java)以及 Java 的基礎(chǔ)類庫(kù)(Object,string);
  • JRE:全稱 java runtime environment。包含了JVM 實(shí)現(xiàn)和需要的類庫(kù)。JRE 是一個(gè)運(yùn)行環(huán)境,并非開發(fā)工具;
  • JVM:它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。JVM 有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。Java 語(yǔ)言最重要的特點(diǎn)就是跨平臺(tái)運(yùn)行。使用 JVM 就是為了實(shí)現(xiàn)跨平臺(tái)。

如下圖所示,我們可以看到 JDK 包含 JRE,JRE 包含 JVM,我們繼續(xù)來(lái)看下邊的講解,徹底了解三者之間的聯(lián)系與區(qū)別。

圖片描述

三者的區(qū)別

  • JDK 和 JRE 的區(qū)別: JDK 是開發(fā)工具包,包含了JRE;JRE 是運(yùn)行環(huán)境,不提供開發(fā)工具包。
  • JRE 和 JVM 的區(qū)別: JRE 包含了JVM,JRE=JVM+lib。JRE 為 class 文件提供了運(yùn)行的環(huán)境,但是需要 JVM 進(jìn)行 class 文件的翻譯,JVM 將翻譯好的文件傳給 os 系統(tǒng)或者是 CPU 映射指令集,才能夠最終完成運(yùn)行。

三者的聯(lián)系:三者互相配合不可分割。

JVM 不能夠單獨(dú)的搞定 class 文件,解釋 class 的時(shí)候,JVM (安裝路徑\Java\jre1.8.0_144\bin)需要調(diào)用我們所需要的類庫(kù)(安裝路徑\Java\jre1.8.0_144\lib)?;\統(tǒng)的來(lái)說,JVM + lib = JRE。而 JDK 是基于 JRE 基礎(chǔ)之上進(jìn)行的。

總體來(lái)說,我們利用 JDK 開發(fā)了屬于我們自己的程序,通過 JDK 的 javac 工具包進(jìn)行了編譯,將 Java 文件編譯成為了 class 文件(字節(jié)碼文件),在 JRE 上運(yùn)行這些文件的時(shí)候,JVM 進(jìn)行了這些文件(字節(jié)碼文件)的翻譯,翻譯給操作系統(tǒng),映射到 CPU 指令集或者是操作系統(tǒng)調(diào)用,最終完成了我們的代碼程序的順利運(yùn)行。

6. 小結(jié)

本節(jié)課程主要是對(duì) JVM 的定義以及作用進(jìn)行一個(gè)簡(jiǎn)單的介紹,通過對(duì) JVM 的整體結(jié)構(gòu)進(jìn)行描述,使我們了解了 JVM 的基本情況,為后續(xù)的學(xué)習(xí)奠定良好的基礎(chǔ)。