初識JVM

wuhuizzj發表於2020-10-14

1. 初識Java

Java 能獲得如此廣泛的認可,除了它擁有一門結構嚴謹、物件導向的程式語言之外,還有許多不可忽視的優點:

  1. 它擺脫了硬體平臺的束縛,實現了 “一次編寫、到處執行”。
  2. 它提供了一個相對安全的記憶體管理和訪問機制,避免了絕大部分的記憶體洩露和指標越界問題。
  3. 它實現了熱點程式碼檢測和執行時編譯及優化,這使得 Java 應用能隨著執行時間的增加而獲得更高的效能。
  4. 它有一套完整的應用程式介面,還有無數來自商業機構和開源社群的第三方類庫來幫助它實現各種各樣的功能。
  5. 它與身俱來對分散式技術的支援就比較完善。

2. Java 技術發展的時間線

初識JVM

3. Java 技術體系所包含的內容

初識JVM

4. 瞭解 JVM 的必要性

一般情況下,僅需知道java核心類庫,以及第三方類庫裡API的用法,便可以專注於實現具體業務,並且依賴Java虛擬機器自動執行乃至優化應用程式。
如果把核心類庫的API比作數學公式的話,那麼Java虛擬機器的知識就好比公式的推導過程。掌握數學公式固然可以應付考試,但是瞭解背後的推導過程更加有助於記憶和理解。並且,在遇到哪些沒法套公式的情況下,我們也能知道如何解決。

5. 學習 JVM 的好處

  • JVM提供了近千個配置引數

    $ java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -version | wc -l
    java version "10" 2018-03-20
    Java(TM) SE Runtime Environment 18.3 (build 10+46)
    Java HostSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
        812
    複製程式碼
  • 更好地規避JVM在使用中的Bug

  • JVM擁有最前沿、最成熟的垃圾回收演算法實現,以及即時編譯器實現。瞭解其背後決策,對其他程式碼託管技術也能觸類旁通

  • 除Javaw外,Scala、Clojure、Groovy、以及時下熱門的Kotlin,這些語言都可以執行在JVM上。

    Scala 是一門多正規化(multi-paradigm)的程式語言,設計初衷是要整合物件導向程式設計和函數語言程式設計的各種特性。
    Scala 執行在 Java 虛擬機器上,併相容現有的 Java 程式。
    Scala 原始碼被編譯成 Java 位元組碼,所以它可以執行於 JVM 之上,並可以呼叫現有的 Java 類庫。

    Clojure 是一種執行在 Java 平臺上的 Lisp 方言。
    Lisp 是一種以表達性和功能強大著稱的程式語言,但人們通常認為它不太適合應用於一般情況,而 Clojure 的出現徹底改變了這一現狀。
    如今,在任何具備 Java 虛擬機器的地方,您都可以利用 Lisp 的強大功能。

    Groovy 是一種基於 JVM(Java 虛擬機器)的敏捷開發語言,它結合了 Python、Ruby 和 Smalltalk 的許多強大的特性。
    Groovy 程式碼能夠與 Java 程式碼很好地結合,也能用於擴充套件現有程式碼。
    由於其執行在 JVM 上的特性,Groovy 可以使用其他 Java 語言編寫的庫。

    Kotlin 是一個用於現代多平臺應用的靜態程式語言 [1] ,由 JetBrains 開發。
    Kotlin 可以編譯成 Java 位元組碼,也可以編譯成 JavaScript,方便在沒有 JVM 的裝置上執行。
    Kotlin 已正式成為 Android 官方支援開發語言。



參考來源:
極客時間《深入拆解Java虛擬機器》
周志明 《深入理解Java虛擬機器》