1. 程式人生 > >深入理解Java虛擬機器(一)--- Java 與 JVM

深入理解Java虛擬機器(一)--- Java 與 JVM

Java 特性

1.結構嚴謹,面向物件程式語言

2.跨平臺性

3.較安全的記憶體管理和訪問機制(避免了絕大部分記憶體洩漏和指標越界的問題)

4.實現熱點程式碼檢測和執行時編譯優化

5.擁有一套完整的API介面

6.擁有豐富的第三方庫

JVM 特性

  • 基於棧的虛擬機器(Stack-based virtual machine): 大多數流行的計算機架構如 Intel x86 架構和 ARM 架構都是基於暫存器執行的。但是,JVM 是基於棧執行的
  • 識別符號引用(Symbolic reference): 所有型別(類和介面)除了基本型別(又稱原始型別)都是通過識別符號引用的,而不是通過顯式的基於記憶體地址的引用。
  • 垃圾收集(Garbage collection): 一個類例項是由使用者程式碼顯式建立的並通過垃圾收集自動銷燬。
  • **明確定義基本資料型別(primitive data type):**JVM 清楚地定義了原始資料型別以維持相容性和保證跨平臺的能力(形如Linux C)。
  • 網路位元組順序(Network byte order): Java 類檔案使用網路位元組順序(大端序)。要在 Intel x86 架構採用的 little endian 與 RISC 系列架構採用的 大端序 之間維持平臺獨立,就必須保證固定的位元組序。因此,JVM 使用網路位元組序,它是一種網路傳輸的順序。網路位元組序是 大端序 的。

Java語言與JVM的關係

眾所周知,高階程式語言分為解釋性語言與編譯性語言。

  • 編譯性語言:需要將原始碼編譯成機器語言(機器可讀的二進位制檔案),執行時不需要進行翻譯,但是再另一臺機器執行時,需要重新編譯。

  • 解釋性語言:解釋性語言的程式不要編譯,但執行時需要直譯器進行翻譯。

但是Java語言是特殊的,既不是編譯性語言,也不是解釋性語言。因為它需要先通過JAVAC命令編譯成JAVA位元組碼,這種位元組碼是機器無法直接讀的二進位制檔案,需要JVM充當直譯器來進行翻譯。所以。JAVA程式是執行在JVM上的,具有跨平臺性

Java技術體系

JDK(程式開發工具包) : Java程式設計語言 java 虛擬機器 java API 類庫

JRE (程式執行環境) : java 虛擬機器 Java SE API

在這裡插入圖片描述

四種體系平臺

平臺 適用物件
Java Card 小記憶體裝置 (eg:智慧卡)
Java ME 移動終端裝置(eg:Android APP)
Java SE 桌面級應用(eg:Windows應用)
Java EE 多層架構的企業應用(eg:ERP系統)