深入理解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系統)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章