摘 要:針對傳統類裝載器裝載完成后的二進制數據流不易理解的問題,文章首先分為五個模塊介紹了JAVA虛擬機技術的體系結構,重點對JAVA虛擬機的類裝載器模塊進行研究和改進,改進后的類裝載器與傳統類裝載器相比較,具有class文件數據顯示功能,以及可以完成文件查找和解析。
關鍵詞:JAVA;JAVA虛擬機;類裝載器
1 JAVA技術簡介
隨著Internet技術的高速發展,JAVA技術在我國應用已經日趨成熟。作為JAVA技術的核心是JAVA虛擬機,虛擬機與編程接口(API)共同構建成JAVA平臺[1],JAVA平臺上的程序能夠在不同類型的軟件上運行,這說明JAVA平臺具有無關性。JAVA語言編程環境,分為編譯環境和運行環境,使用JAVA語言編寫好的程序通過應用接口傳遞編譯完成的class文件,JAVA程序的class文件的運行環境就是在JAVA虛擬機中,經過調用class文件實現程序的調用[2]。JAVA技術除了具有平臺無關性,還具備網絡移動性和安全性,因此研究JAVA語言以及JAVA虛擬機技術具有重要意義。
2 JAVA虛擬機技術體系結構
作為JAVA技術的核心,JAVA虛擬機的體系結構包括五個部分:類裝載器、運行環境下的數據區、執行環境下的引擎、本地方法應用接口以及垃圾收集部分[3]。
類裝載器主要的功能是從JAVA應用程序接口裝載class文件,類裝載器裝載文件時,必須按照正確的順序進行裝載,正確的順序為:查找、裝載——鏈接(先驗證、再準備、后解析)——初始化。在運行程序時,數據區主要用來存儲程序中包含的信息,例如參數值、局部變量、返回值、字節碼等。JAVA虛擬機中運行程序主要包含方法區、堆、PC寄存器和JAVA棧的數據區[4]。執行引擎執行包括解釋、動態編譯等技術,JAVA程序中線程整個生命周期都屬于執行實例。JAVA虛擬機中本地方法接口模塊與內部工作聯系緊密,任何JAVA虛擬機實現都支持本地接口,本地方法與JAVA虛擬機的內部狀態進行交互,允許執行傳遞、查詢變量、調用類方法等[5]。垃圾收集主要是為了空間回收再利用,方便堆空間的分配。垃圾收集可以提升JAVA程序的性能,保證了JAVA程序的完整性。
3 類裝載器設計與實現
由第二節可以知道類裝載器是從JAVA應用程序接口裝載class文件,傳統類裝載器裝載完成后所生成的數據結構為規范的二進制數據流,程序員無法讀懂數據流的含義。針對這一問題,文章將對傳統類裝載器進行改進。
3.1 類裝載器功能設計
文章主要介紹改進類裝載器的功能設計,文章所設計的類裝載器提供了class文件字節碼顯示功能,如圖1所示,為class文件字節碼顯示流程圖。
圖1 字節碼顯示流程圖
完成字節碼顯示后,要進行系統文件查找,文件名包含java以及javax開頭的,CLASSPATH環境下對目錄集進行遍歷搜索,搜索得到的文件會找到JRE安裝目錄,進而可以搜索到JAR包,如果找到JAR包則可以進行相應的文件處理。如圖2所示,為JAR文件處理流程圖,通過利用aunzip32.dll和azip32.dll進行壓縮和解壓縮,文件處理中需要調用addUNZIP_ArchiveName和addUNZIP_ExtractTo函數[6]。
圖2 JAR文件處理流程
3.2 改進功能的實現
通過JAVA class文件可以完成對一個類或接口的描述, class文件的格式定義要求相對嚴格,文章改進后的類裝載器具有字節碼顯示功能,在執行過程中查看日志文件功能等。
通過ClassLoader程序的運行,可以顯示功能界面,其中就包含Bytecode Display功能。用戶可以選擇一個指定的class文件,運行程序可以顯示class文件的字節碼[6]。字節碼所包含的信息包含文件字段、屬性、常量等。文件的查找功能也是通過ClassLoader程序下解析class文件,查找成功后包含文件的基本信息,包括文件大小、文件路徑等。文件解析過程中要依據JAVA虛擬機規范從中獲得有用二進制流信息,解析完成后可以將文件信息的內存數據結構顯示給用戶。
4 結束語
作為JAVA技術的核心部分,JAVA虛擬機的體系結構包括類裝載器、運行環境下的數據區、執行引擎、本地方法應用接口以及垃圾收集五個部分,文章分別討論了五個部分的具體功能,并且對JAVA虛擬機中傳統類裝載器模塊進行研究和改進,改進后的類裝載器與傳統類裝載器相比較,類裝載器具有顯示、查找和解析等功能。
參考文獻
[1]劉艷賢,楊凱.Java平臺上裝載遠程類文件的實現[J].河北理工學院學報,2003,25(4):100-105.
[2]李風云.Java虛擬機性能及關鍵技術分析[J].山東交通學院學報,2004,12(2):68-71
[3]諶寧,覃證.基于嵌入式Java虛擬機的垃圾回收算法[J].計算機應用,2005,25(1):218-223
[4]黃廣君,王萬城.java虛擬機的研究與設計[J].控制工程,2003,10(5):444-446.
[5]倪紅波,谷建華,周興社.嵌入式系統中Java虛擬機的研究與移植[J].計算機工程,2004,30(24):52-54.
[6]楊燦群,張曉軍,沈志宇.Java語言環境實現技術探討[J].計算機工程和科學,2001(2).
作者簡介:劉冠梅(1982,10-),女,漢族,江西南昌人,碩士,講師,單位:江西省公安廳信息中心。