【深入Java虚拟机JVM 01】Java发展与展望概述
目錄
1.1 概述
1.2 Java技術體系
1.3 Java發展史
1.4 展望Java技術的未來
1.4.1 模塊化
1.4.2 混合語言
1.4.3 多核并行
1.4.4 進一步豐富語法
1.4.5 64位虛擬機
說明:文章所有內容均摘自《深入理解Java虛擬機:JVM高級特性與最佳實踐(第二版)》
1.1 概述
Java的優點:
- 它擁有一門結構嚴謹、面向對象的編程語言之
- 它擺脫了硬件平臺的束縛,實現了“一次編寫,到處運行”的理想;
- 它提供了一個相對安全的內存管理和訪問機制,避免了絕大部分的內存泄露和指針越界問題;
- 它實現了熱點代碼檢測和運行時編譯及優化,這使得Java應用能隨著運行時間的增加而獲得更高的性能;
- 它有一套完善的應用程序接口,還有無數來自商業機構和開源社區的第三方類庫來幫助它實現各種各樣的功能
?
1.2 Java技術體系
Sun官方所定義的Java技術體系包括以下幾個組成部分:
- Java程序設計語言
- 各種硬件平臺上的Java虛擬機
- Class文件格式
- Java API類庫
- 來自商業機構和開源社區的第三方Java類庫
把Java程序設計語言、Java虛擬機、Java API類庫這三部分統稱為JDK(Java Development Kit),JDK是用于支持Java程序開發的最小環境。
可以把Java API類庫中的JavaSE API子集和Java虛擬機這兩部分統稱為JRE(Java Runtime Environment),JRE是支持Java程序運行的標準環境。
按照Java技術關注的重點業務領域來劃分,Java技術體系可以分為4個平臺,分別為:
- Java Card:支持一些Java小程序(Applets)運行在小內存設備(如智能卡)上的平臺。
- Java ME(Micro Edition):支持Java程序運行在移動終端(手機、PDA)上的平臺,對Java API有所精簡,并加入了針對移動終端的支持,這個版本以前稱為J2ME。
- Java SE(Standard Edition):支持面向桌面級應用(如Windows下的應用程序)的Java平臺,提供了完整的Java核心API,這個版本以前稱為J2SE。
- Java EE(Enterprise Edition):支持使用多層架構的企業應用(如ERP、CRM應用)的Java平臺,除了提供Java
?
1.3 Java發展史
已經在學JVM了,框定對Java已經有比較深入的了解了。這里就不在贅述Java歷史,只給一張Java技術發展時間線。
?
1.4 展望Java技術的未來
在2005年,Java語言誕生10周年的SunOne技術大會上,Java語言之父James ?Gosling做了一場題為“Java技術下一個十年”的演講。
1.4.1 模塊化
模塊化是解決應用系統與技術平臺越來越復雜、越來越龐大問題的一個重要途徑。無論是開發人員還是產品最終用戶,都不希望為了系統中一小塊的功能而不得不下載、安裝、部署及維護整套龐大的系統。站在整個軟件工業化的高度來看,模塊化是建立各種功能的標準件的前提。最近幾年OSGi技術的迅速發展、各個廠商在JCP中對模塊化規范的激烈斗爭?,都能充分說明模塊化技術的迫切和重要。
1.4.2 混合語言
當單一的Java開發已經無法滿足當前軟件的復雜需求時,越來越多基于Java虛擬機的語言開發被應用到軟件項目中,Java平臺上的多語言混合編程正成為主流,每種語言都可以針對自己擅長的方面更好地解決問題。試想一下,在一個項目之中,并行處理用Clojure語言編寫,展示層使用JRuby/Rails,中間層則是Java,每個應用層都將使用不同的編程語言來完成,而且,接口對每一層的開發者都是透明的,各種語言之間的交互不存在任何困難,就像使用自己語言的原生API一樣方便,因為它們最終都運行在一個虛擬機之上。
除了催生出大量的新語言外,許多已經有很長歷史的程序語言也出現了基于Java虛擬機實現的版本,這樣使得混合編程對許多以前使用其他語言的“老”程序員也具備相當大的吸引力,軟件企業投入了大量資本的現有代碼資產也能很好地保護起來。表1-1中列舉了常見語言的JVM實現版本。
1.4.3 多核并行
如今,CPU硬件的發展方向已經從高頻率轉變為多核心,隨著多核時代的來臨,軟件開發越來越關注并行編程的領域。早在JDK 1.5就已經引入java.util.concurrent包實現了一個粗粒度的并發框架。而JDK ?1.7中加入的java.util.concurrent.forkjoin包則是對這個框架的一次重要擴充。Fork/Join模式是處理并行編程的一個經典方法,如圖1-5所示。雖然不能解決所有的問題,但是在此模式的適用范圍之內,能夠輕松地利用多個CPU核心提供的計算資源來協作完成一個復雜的計算任務。通過利用Fork/Join模式,我們能夠更加順暢地過渡到多核時代。
1.4.4 進一步豐富語法
Java ?5曾經對Java語法進行了一次擴充,這次擴充加入了自動裝箱、泛型、動態注解、枚舉、可變長參數、遍歷循環等語法,使得Java語言的精確性和易用性有了很大的進步。在Java 7(由于進度壓力,許多改進已推遲至Java 8)中,對Java語法進行了另一次大規模的擴充。Sun(已被Oracle收購)專門為改進Java語法在OpenJDK中建立了Coin子項目 [1] 來統一處理對Java語法的細節修改,如二進制數的原生支持、在switch語句中支持字符串、“<>”操作符、異常處理的改進、簡化變長參數方法調用、面向資源的try-catch-finally語句等都是在Coin項目之中提交的內容。
1.4.5 64位虛擬機
在幾年之前,主流的CPU就開始支持64位架構了。Java虛擬機也在很早之前就推出了支持64位系統的版本。但Java程序運行在64位虛擬機上需要付出比較大的額外代價:首先是內存問題,由于指針膨脹和各種數據類型對齊補白的原因,運行于64位系統上的Java應用需要消耗更多的內存,通常要比32位系統額外增加10%~30%的內存消耗;其次,多個機構的測試結果顯示,64位虛擬機的運行速度在各個測試項中幾乎全面落后于32位虛擬機,兩者大約有15%左右的性能差距。
總結
以上是生活随笔為你收集整理的【深入Java虚拟机JVM 01】Java发展与展望概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【KVM系列文章】目录
- 下一篇: java美元兑换,(Java实现) 美元