阿里P8大佬帶你深入解析JVM與java
阿里P8大佬帶你深入解析JVM與java
什麼是Java
經過了多年的發展,Java早已由一門單純的計算機程式語言,演變為了一套強大的技術體系。是的,什麼是Java,我想技術體系四個字應該是最好的概括了吧。Java設計者們將Java劃分為3種結構獨立但卻彼此依賴的技術體系分支,它們分別對應著不同的規範集合和元件:
1、Java SE(標準版),主要活躍在桌面領域,主要包含了Java API元件。
2、Java EE(企業版),活躍在企業級領域,除了包含JavaAPI元件外,還擴充有Web元件、事務元件、分散式元件、EJB元件、訊息元件等,綜合這些技術,開發人員完全可以構建出一個具備高效能、結構嚴謹的企業級應用,並且JavaEE也是用於構SOA(面向服務架構)的首選平臺。
3、Java ME(精簡版),活躍在嵌入式領域,稱之為精簡版的原因是,它僅保留了Java API中的部分元件,以及適應裝置的一些特有元件。上面講到Java技術體系的分支,那既然Java是一種技術體系,我們來看一下組成這種技術體系的技術:
1、Java程式語言
2、位元組碼
3、Java API,包括Java API類庫和來自商業機構以及開源社群的第三方類庫
4、Java虛擬機器
很多時候我們只關注了第一點,因為第一點才是和工作切實相關的。Java技術體系所包含的內容實際上Java官方有提供給我們一張圖:
Java的優點
Java能獲得如此廣泛的認可,除了它擁有一門結構嚴謹、物件導向的程式語言之外,還有許多不可忽視的優點:
1、它擺脫了硬體平臺的束縛,實現了“一次編寫、到處執行”
2、它提供了一個相對安全的記憶體管理和訪問機制,避免了絕大部分的記憶體洩露和指標越界問題
3、它實現了熱點程式碼檢測和執行時編譯及優化,這使得Java應用能隨著執行時間的增加而獲得更高的效能
4、它有一套完整的應用程式介面,還有無數來自商業機構和開源社群的第三方類庫來幫助它實現各種各樣的功能
5、它與身俱來對分散式技術的支援就比較完善
**6、最新2020整理收集的一些高頻面試題(都整理成文件),有很多幹貨,包含mysql,netty,spring,執行緒,spring cloud、jvm、原始碼、演算法等詳細講解,也有詳細的學習規劃圖,面試題整理等,
需要獲取這些內容的朋友請加Q君樣:756584822**
但是,Java最大的優勢和財富還不是以上這些,就像高翔龍老師在《Java虛擬機器精講》中寫的,Java真正強大的地方是因為擁有全世界最多的技術擁護者和開源社群支援,他們無時無刻都保持著最充沛的體力與思維,一步一步地驅動著Java技術的走向。
JDK和JRE
兩個常見的重要概念。其實上面的圖中已經劃分出了JDK和JRE的範圍了。我們對這張圖做一個歸納,用我們的語言簡單地總結一下什麼是JDK和JRE:
1、JDK(Java Development
Kit),是用於支援Java程式開發的最小環境,基本上Java程式設計語言、Java虛擬機器、Java API類庫這三部分組成了JDK2、JRE(Java Runtime Enviroment),是支援Java程式執行的標準環境,Java API類庫中的Java SE
API自己和Java虛擬機器這兩部分組成了JRE
OpenJDK
前面有講過,“Java真正強大的地方是因為擁有全世界最多的技術擁護者和開源社群支援,他們無時無刻都保持著最充沛的體力與思維,一步一步地驅動著Java技術的走向”。其實JDK在一開始並不是開源的,但是隨著開源運動的蓬勃發展,2006年Sun公司宣佈將對Java開放原始碼,開源的Java平臺開發主要集中在OpenJDK專案上。2009年4月15日,Sun公司正式釋出OpenJDK,JDK 7則是Java開源後釋出的第一個版本,任何組織和個人都可以為Java的發展做出貢獻。當然OpenJDK和真正的Oracle JDK(因為Sun公司被Oracle公司在2010年收購了嘛,所以就叫做Oracle JDK了)還是有區別的:
OpenJDK中的程式碼基本上都來自於Oracle JDK,屬於Oracle JDK的一個分支,但是其中去除了一些非開源的元件和程式碼,替換成了開源的元件和程式碼,主要是加密和圖形的部分。因此用OpenJDK代替Oracle JDK可能會有一些的不相容。
對於OpenJDK感興趣的,可以在OpenJDK官網http://download.java.net/openjdk/jdk7/下載OpenJDK的原始碼。像Java虛擬機器HotSpot、Java編譯器Javac、JNI等等,原始碼都在裡面。
JCP和JSR
JCP(Java Community Process)是一套制定Java技術規範的機制,通過制定和審查JSR(Java Specification Requests)推動Java技術規範的發展。一個已經提交的JSR要想成為最終狀態,需要經過正式的公開審查,並由JCP委員會投票決定,最終的JSR會提供一個參考實現,它是免費而且公開原始碼的。JSR並非只由Oracle管理,任何個人都可以註冊並參與審查JSR,對於Java語言發展動態感興趣的人來說,跟蹤JSR的動態發展是一條不錯的學習途徑。在JCP官網http://www.jcp.org/中可以檢視所有的JSR,下面列舉幾個大家熟悉的JSR:
1、JSR 14,泛型
2、JSR 51,NIO
3、JSR 175,註解
4、JSR 201,列舉以及自動裝箱等
5、JSR 221,JDBC4.0 API
Java虛擬機器
最後,輪到這個大哥登場,也是之後文章的主角。為什麼Java可以實現所謂的“一次編寫,到處執行”,主要是因為虛擬機器的存在。Java虛擬機器負責Java程式設計語言的安全特性和平臺無關性。Java虛擬機器遮蔽了與具體作業系統平臺相關的資訊,使得Java語言編譯器只需要生成在Java虛擬機器上執行的位元組碼,就可以在多種平臺上不加修改地執行。Java虛擬機器使得Java擺脫了具體機器的束縛,使跨越不同平臺編寫程式成為了可能。
要多提一句,我們現在說的Java虛擬機器基本上都是JDK自帶的虛擬機器HotSpot,這款虛擬機器也是目前商用虛擬中市場份額最大的一款虛擬機器,可以通過在命令列程式中輸入“java -version”來檢視:
那其實市面上還有很多別的優秀的虛擬機器。Sun公司除了有大名鼎鼎的HotSpot外,還有KVM、Squawk VM、Maxine VM,BEA公司有JRockit VM、IBM公司有J9 VM等等。
相關文章
- 阿里架構師帶你深入淺出jvm阿里架構JVM
- 阿里大佬帶你,深入理解執行緒池底層原理阿里執行緒
- 阿里P7大佬帶你解密Sentinel阿里解密
- 從JAVA記憶體到垃圾回收,帶你深入理解JVMJava記憶體JVM
- Java高階深入與JVMJavaJVM
- JVM 深入學習:Java 解析 Class 檔案過程解析JVMJava
- 手寫Struts,帶你深入原始碼中心解析原始碼
- 【JVM】深入解析class類檔案JVM
- Android EventBus原始碼解析 帶你深入理解EventBusAndroid原始碼
- 帶你掌握JVM垃圾回收JVM
- JAVA中鎖的深入理解與解析Java
- 深入解析 Java OutOfMemoryErrorJavaError
- 阿里螞蟻金服 java崗最新618面試586題,93%會做,你也能面試阿里P8阿里Java面試
- 帶你上手阿里開源的 Java 診斷利器:Arthas阿里Java
- 深入理解JVM(③)執行緒與Java的執行緒JVM執行緒Java
- 帶你深入 Dart 解析一個有趣的引用和編譯實驗Dart編譯
- 用例項帶你深入理解Java記憶體模型Java記憶體模型
- 深入理解JVM(③)Java的模組化JVMJava
- 深入理解JVM(八)——java堆分析JVMJava
- Jvm之用java解析class檔案JVMJava
- 對JVM還有什麼不懂的?資深架構師一篇文章帶你深入淺出JVM!JVM架構
- 解析Java物件引用與JVM自動記憶體管理(轉)Java物件JVM記憶體
- 完全基於 Java 的開源深度學習平臺,亞馬遜的大佬帶你上手Java深度學習亞馬遜
- 《深入JVM筆記》系列文章——駕馭你的Java虛擬機器JVM筆記Java虛擬機
- 深入JVM,帶你快速、透徹理解G1回收的原理和實現!JVM
- 架構師帶你深入理解Java的介面和抽象類架構Java抽象
- 兩道面試題帶你解析 Java 類載入機制面試題Java
- 深入理解JVM(③)Java的鎖優化JVMJava優化
- 深入理解JVM(4) : Java垃圾收集 (GC)JVMJavaGC
- Java 動態代理深入解析Java
- 深入解析Java絕對路徑與相對路徑Java
- 帶你深入理解和解剖 synchronizedsynchronized
- 聽阿里巴巴JVM工程師為你分析常見Java故障案例阿里JVM工程師Java
- JVM(三):深入分析Java位元組碼-上JVMJava
- JVM(四):深入分析Java位元組碼-下JVMJava
- Java 集合Hashtable原始碼深入解析Java原始碼
- Java集合Stack原始碼深入解析Java原始碼
- 深入解析Java中的泛型Java泛型