詳解Java平臺

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/youngogo/article/details/81120371
  • 首先我們回顧JRE(Java Runtime Environment )java運行環境,以及JDK(Java Development Kit)組成

jre是java運行環境,包含JVM,java類庫以及一些模塊,jdk可以看做是jre的超集,提供了更多工具,比如編譯器各種診斷工具

  • java平臺

java平臺顧名思義就是,java語言在計算機上能執行的環境以及工具


  • 宏觀角度

       這也是和C/C++的最大不同點,c/c++編程是面向操作系統,需要程序員考慮不同操作系統之間的差異性,而java通過JVM屏蔽了面向操作系統編程,這樣程序員無需考慮不同操作系統之間的差異性.

       通過一個間接的中間層達到解耦的目的,是計算機領域非常常用的一種藝術方法,虛擬機是這樣, 操作系統HTTP也是如此

  • 微觀角度

    從微觀角度java平臺由兩大核心組成

  1. java自身語言特性,java類庫以及一些工具
  2. java虛擬機以及它包含的GC機制

1.java自身語言特性,java類庫以及一些工具

      從事Java平臺的開發,掌握Java語言、核心類庫以及相關工具是必須的,我覺得這是基礎中的基礎。
>> 對語言本身的瞭解,需要開發者非常熟悉語言的語法結構;而Java又是一種面對對象的語言,這又需要開發者深入瞭解面對對象的設計理念;以及java 的反射代理泛型等;
>> Java核心類庫包含集合類、線程相關類、IO、NIO、J.U.C併發包等;
>> JDK提供的工具包含:基本的編譯工具、虛擬機性能檢測相關工具等。

2.java虛擬機以及它包含的GC機制

Java語言具有跨平臺的特性,也正是因爲虛擬機的存在。Java源文件被編譯成字節碼,被虛擬機加載後執行。這裏隱含的意思有兩層:
1)大部分情況下,編程者只需要關心Java語言本身,而無需特意關心底層細節。包括對內存的分配和回收,也全權交給了GC。
2)對於虛擬機而言,只要是符合規範的字節碼,它們都能被加載執行,當然,能正常運行的程序光滿足這點是不行的,程序本身需要保證在運行時不出現異常。所以,Scala、Kotlin、Jython等語言也可以跑在虛擬機上。

圍繞虛擬機的效率問題展開,將涉及到一些優化技術,例如:JIT、AOT。因爲如果虛擬機加載字節碼後,完全進行解釋執行,這勢必會影響執行效率。所以,對於這個運行環節,虛擬機會進行一些優化處理,例如JIT技術,會將某些運行特別頻繁的代碼編譯成機器碼。而AOT技術,是在運行前,通過工具直接將字節碼轉換爲機器碼。

關於java編譯執行過程轉我的博客:java源代碼編譯執行過程

歡迎多多交流指正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章