1. 程式人生 > 實用技巧 >《深入理解Java虛擬機器第三版》讀書筆記(1)走進java

《深入理解Java虛擬機器第三版》讀書筆記(1)走進java

《深入理解Java虛擬機器第三版》讀書筆記(1)走進java

一、Java技術體系

1、JCP官方定義的技術體系包括:

  • Java程式設計語言
  • 各種硬體平臺上的Java虛擬機器實現
  • Class檔案格式
  • Java類庫API
  • 來自商業機構和開源社群的第三方Java類庫

注:JCP(Java Community Process) 是一個開放的國際組織,主要由JAVA開發者以及被授權者組成,職能是發展和更新。

2、JDK與JRE劃分

Java程式設計語言、Java虛擬機器、Java類庫這三部分統稱為JDK(Java Development
Kit),JDK是用於支援Java程式開發的最小環境。

Java類庫API中的Java SE API子集 和Java虛擬機器這兩部分統稱為

JRE(Java Runtime Environment),JRE是支援Java程式執行的標準環境。

JVM :英文名稱(Java Virtual Machine),就是我們耳熟能詳的 Java 虛擬機器。它只認識 xxx.class 這種型別的檔案,它能夠將 class 檔案中的位元組碼指令進行識別並呼叫作業系統向上的 API 完成動作。所以說,jvm 是 Java 能夠跨平臺的核心,具體的下文會詳細說明

3、Java技術體系所包括的內容

在這裡插入圖片描述

二、Java 為什麼能跨平臺,實現一次編寫,多處執行?

Java 能夠跨平臺執行的核心在於 JVM 。不是 Java 能夠跨平臺,而是它的 jvm 能夠跨平臺。我們知道,不同的作業系統向上的 API 肯定是不同的,那麼如果我們想要寫一段程式碼呼叫系統的聲音裝置,就需要針對不同系統的 API 寫出不同的程式碼來完成動作。

而 Java 引入了位元組碼的概念,jvm 只能認識位元組碼,並將它們解釋到系統的 API 呼叫。針對不同的系統有不同的 jvm 實現,有 Linux 版本的 jvm 實現,也有 Windows 版本的 jvm 實現,但是同一段程式碼在編譯後的位元組碼是一樣的。引用上面的例子,在 Java API 層面,我們呼叫系統聲音裝置的程式碼是唯一的,和系統無關,編譯生成的位元組碼也是唯一的。但是同一段位元組碼,在不同的 jvm 實現上會對映到不同系統的 API 呼叫,從而實現程式碼的不加修改即可跨平臺執行。

三、HotSpot概述

HotSpot的定位是面向各種不同應用場景的全功能Java虛擬機器

t概述

HotSpot的定位是面向各種不同應用場景的全功能Java虛擬機器

能夠在編譯時指定一系列特性開關,讓編譯輸出的HotSpot虛擬機器可以裁剪成不同的功能,譬如支援哪些編譯器,支援哪些收集器,是否支援JFR、AOT、CDS、NMT等都可以選擇。能夠實現這些功能特性的組合拆分,反映到原始碼不僅僅是條件編譯,更關鍵的是介面與實現的分離