杜天宇++景慎艷
摘要:伴隨信息化大數據時代的到來,促使人們追求越來越便捷的生活方式,更高品質的科技產品應運而生。Java虛擬機憑借其自身動態添刪性、跨平臺性、高保密性、低風險性等顯著優點。從開發至今逐步在身份識別、電子貨幣交易、個人信息存儲等多個方面取得了廣泛應用。詳細描述了Java虛擬機的發展現狀并根據Java虛擬機的基本特點,分析存在問題,同時有針對性地提 出Java虛擬機優化常用解決對策,以期望對該領域內的進一步研究具有借鑒意義。
關鍵詞:Java;虛擬機;系統優化
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)01-0072-02
Research on System Optimization of Java Virtual Machine
DU Tian-yu,JING Shen-yan
(College of Information Management,Liaoning University of International Business and Economics, Dalian 116052, China)
Abstract: Along with the information the arrival of the era of big date, encourage people to pursue more and more convenient way of life, higher quality of science and technology products arises at the historic moment. Java relies on its own dynamically and remove features,cross-platform,high confidentiality,low risks and other significant advantages,Since developed gradually in the identification, electronic currency trading, personal information is stored in many way has a wide rang of applications.
Key words: Java; virtual machine; system optimization
1 Java虛擬機的定義和發展現狀
1.1 Java虛擬機定義
Java虛擬機,縮寫為JVM是一個虛構出來的計算機,實際的運行主要是通過在實際的計算機上仿真模擬各種計算機功能來實現,具有自己完善的硬件架構以及相應的指令系統。其實,虛擬機并不是Java語言本身,它是個為特定及其編寫的解釋性軟件。Java的虛擬機就相當于世界通用語言,能夠被所有的設備同時應用,這是個人類創造的目的就是使得不同語言之間的翻譯溝通更加容易。目前在金融、交通運輸、電子商務、無線通訊等行業具有前瞻性和適用性發展,與此同時網絡交易更加快捷與安全,使得Java成為目前網絡上流行的編程語言。
1.2 發展現狀
Java虛擬機是Java語言的靈魂,是Java技術的核心關鍵之處,尤其適合于分布式計算環境或面積相對較小的智能嵌入式系統。Java開發是由Sun Microsystems公司在1995年設計并推出的,主要包括Java程序設計語言和Java平臺等方面。Java語言發展至今,Java擴展管理規范面向Java平臺為其真正運行與網絡管理模式的選擇提供了一種新型的、規范的管理框架;Java擴展管理規范還帶來了一系列標準統一的代理及服務。就目前而言,無論哪個Java應用程序設計和開發的人員都完全可以使用這些代理及服務用來監測Java虛擬機的運行狀況。Java擴展管理規范具備跨越異構的系統體系結構、異構的操作系統平臺以及異構的網絡傳輸協議對分布式系統管理問題有著自己獨特的解決辦法可以在不同的環境下使用,使得Java虛擬機的性能監測變得簡單。
2 Java虛擬機特點
2.1 廣泛的跨平臺性
一般的高級編程語言,需要編譯成不同的目標代碼以滿足在其他平臺不同界面上能夠成功運行。而Java語言具有獨特的可移植性,正是通過Java虛擬機避免了特定平臺的干擾,直接處理Java源代碼編譯成的字節碼與平臺無關,保障“編譯一次,自由執行”的特性,因此只要在目標機器上實現了符合規范的運行程序環境,就可以運行所有的Java程序。
2.2 強健的安全性
因為Java不支持指針等對安全機制存在影響的程序,但鼓勵垃圾回收機制以及代碼安全性檢測,可以隨時申請、自動釋放內存資源避免因為內存耗盡而死機并且在一切對內存進行的訪問都必須經過對象變量來實現,在程序正常運行之前必須進行安全檢查、未經授權禁止讀寫文件并采用隔離的方法限制非法入侵的范圍。
2.3 靈活的動態性
Java語言程序為保證數據的安全和出于簡單性原則本身是不允許多重繼承,但是可以通過接口來支持多重繼承,與其他嚴格的類繼承相比較具有更高的自由性和擴展性。還可以根據用戶的需要,實現動態添加和刪除信息,下載重要資源,擴大軟件配置、維護、更新的范圍而不會影響用戶原有程序的執行,操作簡便易行,受到更多青睞,為日益普及的網絡應用提供了良好的基礎。
3 Java虛擬機運行時執行的性能較低
通過資料查詢,可以發現Java語言程序更適合于計算機互聯網絡的開發應用,其中關鍵的一點原因就是運行的過程中使用了虛擬機,虛擬機的實質是一個用來解釋Java系統指令的軟件包。保證了Java語言程序在任何機器下運行成為可能。JVM的性能體現在工作站和服務器上已經得到了很大提高,但是使用虛擬機而帶來增加的額外抽象造成應用在虛擬機上的執行要比在本地平臺執行的速度更慢,有時性能達不到要求。
由于常見的服務器和PC工作站大多是擁有64位或以上寬度的內存總線以及高主頻CPU,所以一些短暫的停滯顯得微不足道,可以簡單地忽略不計。但如果碰到比較低端的移動通信設備和智能終端,就極容易發生讓程序的啟動速度變得很慢、啟動時間延長的現象,還有一定幾率產生較為明顯地在指令完成過程中出現停頓和反應遲鈍。提升程序性能的途徑有很多,對于Java語言的相關程序性能的進一步提升應該采取遵循它的跨平臺性和安全性的前提之下,而Java虛擬機的存在就是保障Java程序跨平臺性和安全性的基礎性要求,因此應該采用多種編譯優化技術提高虛擬機的運行能力。
4 優化虛擬機性能的常用方法
4.1 采用FPGA硬件支持
如何借助硬件方式來解決Java虛擬機性能缺陷一直是廠商長久以來研究的關注點。尤其是隨著信息化發展FPGA性能的日益提高,為Java虛擬機開發與設計提供更高的硬件支持成為可能。
編程邏輯器件的相對優勢:第一,我們可以清晰認識到硬件設備專向專項設計變通、儲蓄運載功能強大等方向發展,其中最突出的是高密度的FPGA硬件設備,其無論從運行速度、功能消耗和銷售價格在內的很多特點已經能夠充分與ASIC器件相比較。FPGA硬件的可重構計算特點極大地縮小了ASIC器件同傳統軟件之間的距離;第二,由于可配置硬件器件的存在,為用戶提供了多重選擇,綜合利用軟件工具設計硬件從而達到快速原型生成的目的,縮短產品生產周期、產品上市時間提早,取得先發制人的優勢;第三,自由靈活的可配置性也可以確保可重構計算能夠在計算開始的初期,甚至在程序運行的過程中實現現場配置,一些研究性的工作通過為Java虛擬機設計提供FPGA硬件在性能上收獲很大。
4.2 即時編譯的手段
基于現行的動態編譯的執行模式,本文對Java程序性能的優化方面主要集中體現在基于即時編譯技術的運行過程中優化。多項數據顯示,基于字節碼的優化空間非常有限,以完整保留Java字節碼的跨平臺的特性為目的,性能優化加速率僅僅為1%—3%;同時,Java語言程序特有的一些動態語言特性,如動態類加載,也要求眾多的基于Java程序的優化只能被推遲到運行時進行。因此,對于Java程序的性能優化更多的依賴即時編譯技術。即時編譯技術即是Just-In-Time,簡稱JIT??梢曰\統認為是在運行JAVA程序時,任何程序語言的執行通過翻譯成為本地的機器指令是唯一途徑,而Java虛擬機會根據字節碼進行翻譯,整個編譯過程一般在字節碼運行的前面發生。實際上,最初采用JIT技術的JVM進行即時編譯的時候利用一個通用接口來調用外部代碼翻譯單元,代碼翻譯單元并不包括在JVM程序里面。JIT方法的結構圖如圖1所示:
圖1 即時編譯的運行結構圖
即時編譯的最小單位就是Java 方法。在運行一個Java方法之前,Java虛擬機就會把這方法的一些有關信息提供給JIT單元,同時直接運行編譯后的本地代碼。以后調用這種方法檢測后都會對編譯后的本地代碼直接運行,其運行過程不受時間和次數的限制。
由于JVM與JIT單元擺脫了對Java的單一繼承性,憑借開放式JIT接口的使用而促使相對獨立,使得任何第三方開發人員都可以自由的進入系統實現編寫JIT單元,無需受到來自JVM程序內部的其他要求的制約和干擾。Java程序的典型性運行方式主要是依靠目標終端的JVM用來執行Java的字節碼文件。首先,解釋器的翻譯和執行性能相對較差,基本上除了嵌入式系統之外,大多數目標平臺的JVM均會使用JIT對載入成功后的字節碼統一進行優化編譯并且執行。驗證模塊是用于對載入的字節碼進行準確性檢驗,包括類型檢查和字節碼文件結構等。由于JIT技術的出現,對了Java程序的性能進行了顯著地提高,幾乎改變了過去人們對Java程序性能差的印象。
5 結論
基于Java語言程序的特點出發,保證強健的安全性是Java語言設計的最基本也是最重要的要求之一,雖然廠商和領域內針對Java平臺的安全性從許多方面進行了富有專業性考慮,但是這些解決方案或多或少都存在不完善之處。主要是因為存儲字節碼的類文件的格式公開,又由于Java語言還要兼顧跨平臺性以及可移植性,字節碼的指令系統中一定會表現出相應的Java源代碼中較多的信息,字節碼的格式也比較固定,自然也就為反編譯Java字節碼文件來得到Java源代碼提供了可能性。本文找到了現有Java虛擬機運行硬件性能不足的問題進行分析,確定采用方法內嵌、FPGA硬件支持、即時編譯等手段對性能局限進行理解優化。對此完整地設計并實現了一套適于Java開發運行環境優化解決方案,為防止低水平重復開發、加快國產軟件商品化、產業化的優先辦法。
參考文獻:
[1] 賀蘊彬. Java虛擬機的自適應動態優化[J]. 科技創新與應用, 2014(5).
[2] 尹相志, 胡百敬. SQL Server 2008 R2 Reporting Services 報表服務[M]. 北京: 中國水利水電出版社, 2012.
[3] 藺華, 王玉清. Web 程序設計與架構[M]. 北京: 電子工業出版社, 2011.