国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

JAVA虛擬機(jī)技術(shù)研究與實(shí)踐思考

2015-04-20 21:42:43劉冠梅
科技創(chuàng)新與應(yīng)用 2015年11期

摘 要:針對傳統(tǒng)類裝載器裝載完成后的二進(jìn)制數(shù)據(jù)流不易理解的問題,文章首先分為五個(gè)模塊介紹了JAVA虛擬機(jī)技術(shù)的體系結(jié)構(gòu),重點(diǎn)對JAVA虛擬機(jī)的類裝載器模塊進(jìn)行研究和改進(jìn),改進(jìn)后的類裝載器與傳統(tǒng)類裝載器相比較,具有class文件數(shù)據(jù)顯示功能,以及可以完成文件查找和解析。

關(guān)鍵詞:JAVA;JAVA虛擬機(jī);類裝載器

1 JAVA技術(shù)簡介

隨著Internet技術(shù)的高速發(fā)展,JAVA技術(shù)在我國應(yīng)用已經(jīng)日趨成熟。作為JAVA技術(shù)的核心是JAVA虛擬機(jī),虛擬機(jī)與編程接口(API)共同構(gòu)建成JAVA平臺(tái)[1],JAVA平臺(tái)上的程序能夠在不同類型的軟件上運(yùn)行,這說明JAVA平臺(tái)具有無關(guān)性。JAVA語言編程環(huán)境,分為編譯環(huán)境和運(yùn)行環(huán)境,使用JAVA語言編寫好的程序通過應(yīng)用接口傳遞編譯完成的class文件,JAVA程序的class文件的運(yùn)行環(huán)境就是在JAVA虛擬機(jī)中,經(jīng)過調(diào)用class文件實(shí)現(xiàn)程序的調(diào)用[2]。JAVA技術(shù)除了具有平臺(tái)無關(guān)性,還具備網(wǎng)絡(luò)移動(dòng)性和安全性,因此研究JAVA語言以及JAVA虛擬機(jī)技術(shù)具有重要意義。

2 JAVA虛擬機(jī)技術(shù)體系結(jié)構(gòu)

作為JAVA技術(shù)的核心,JAVA虛擬機(jī)的體系結(jié)構(gòu)包括五個(gè)部分:類裝載器、運(yùn)行環(huán)境下的數(shù)據(jù)區(qū)、執(zhí)行環(huán)境下的引擎、本地方法應(yīng)用接口以及垃圾收集部分[3]。

類裝載器主要的功能是從JAVA應(yīng)用程序接口裝載class文件,類裝載器裝載文件時(shí),必須按照正確的順序進(jìn)行裝載,正確的順序?yàn)椋翰檎?、裝載——鏈接(先驗(yàn)證、再準(zhǔn)備、后解析)——初始化。在運(yùn)行程序時(shí),數(shù)據(jù)區(qū)主要用來存儲(chǔ)程序中包含的信息,例如參數(shù)值、局部變量、返回值、字節(jié)碼等。JAVA虛擬機(jī)中運(yùn)行程序主要包含方法區(qū)、堆、PC寄存器和JAVA棧的數(shù)據(jù)區(qū)[4]。執(zhí)行引擎執(zhí)行包括解釋、動(dòng)態(tài)編譯等技術(shù),JAVA程序中線程整個(gè)生命周期都屬于執(zhí)行實(shí)例。JAVA虛擬機(jī)中本地方法接口模塊與內(nèi)部工作聯(lián)系緊密,任何JAVA虛擬機(jī)實(shí)現(xiàn)都支持本地接口,本地方法與JAVA虛擬機(jī)的內(nèi)部狀態(tài)進(jìn)行交互,允許執(zhí)行傳遞、查詢變量、調(diào)用類方法等[5]。垃圾收集主要是為了空間回收再利用,方便堆空間的分配。垃圾收集可以提升JAVA程序的性能,保證了JAVA程序的完整性。

3 類裝載器設(shè)計(jì)與實(shí)現(xiàn)

由第二節(jié)可以知道類裝載器是從JAVA應(yīng)用程序接口裝載class文件,傳統(tǒng)類裝載器裝載完成后所生成的數(shù)據(jù)結(jié)構(gòu)為規(guī)范的二進(jìn)制數(shù)據(jù)流,程序員無法讀懂?dāng)?shù)據(jù)流的含義。針對這一問題,文章將對傳統(tǒng)類裝載器進(jìn)行改進(jìn)。

3.1 類裝載器功能設(shè)計(jì)

文章主要介紹改進(jìn)類裝載器的功能設(shè)計(jì),文章所設(shè)計(jì)的類裝載器提供了class文件字節(jié)碼顯示功能,如圖1所示,為class文件字節(jié)碼顯示流程圖。

圖1 字節(jié)碼顯示流程圖

完成字節(jié)碼顯示后,要進(jìn)行系統(tǒng)文件查找,文件名包含java以及javax開頭的,CLASSPATH環(huán)境下對目錄集進(jìn)行遍歷搜索,搜索得到的文件會(huì)找到JRE安裝目錄,進(jìn)而可以搜索到JAR包,如果找到JAR包則可以進(jìn)行相應(yīng)的文件處理。如圖2所示,為JAR文件處理流程圖,通過利用aunzip32.dll和azip32.dll進(jìn)行壓縮和解壓縮,文件處理中需要調(diào)用addUNZIP_ArchiveName和addUNZIP_ExtractTo函數(shù)[6]。

圖2 JAR文件處理流程

3.2 改進(jìn)功能的實(shí)現(xiàn)

通過JAVA class文件可以完成對一個(gè)類或接口的描述, class文件的格式定義要求相對嚴(yán)格,文章改進(jìn)后的類裝載器具有字節(jié)碼顯示功能,在執(zhí)行過程中查看日志文件功能等。

通過ClassLoader程序的運(yùn)行,可以顯示功能界面,其中就包含Bytecode Display功能。用戶可以選擇一個(gè)指定的class文件,運(yùn)行程序可以顯示class文件的字節(jié)碼[6]。字節(jié)碼所包含的信息包含文件字段、屬性、常量等。文件的查找功能也是通過ClassLoader程序下解析class文件,查找成功后包含文件的基本信息,包括文件大小、文件路徑等。文件解析過程中要依據(jù)JAVA虛擬機(jī)規(guī)范從中獲得有用二進(jìn)制流信息,解析完成后可以將文件信息的內(nèi)存數(shù)據(jù)結(jié)構(gòu)顯示給用戶。

4 結(jié)束語

作為JAVA技術(shù)的核心部分,JAVA虛擬機(jī)的體系結(jié)構(gòu)包括類裝載器、運(yùn)行環(huán)境下的數(shù)據(jù)區(qū)、執(zhí)行引擎、本地方法應(yīng)用接口以及垃圾收集五個(gè)部分,文章分別討論了五個(gè)部分的具體功能,并且對JAVA虛擬機(jī)中傳統(tǒng)類裝載器模塊進(jìn)行研究和改進(jìn),改進(jìn)后的類裝載器與傳統(tǒng)類裝載器相比較,類裝載器具有顯示、查找和解析等功能。

參考文獻(xiàn)

[1]劉艷賢,楊凱.Java平臺(tái)上裝載遠(yuǎn)程類文件的實(shí)現(xiàn)[J].河北理工學(xué)院學(xué)報(bào),2003,25(4):100-105.

[2]李風(fēng)云.Java虛擬機(jī)性能及關(guān)鍵技術(shù)分析[J].山東交通學(xué)院學(xué)報(bào),2004,12(2):68-71

[3]諶寧,覃證.基于嵌入式Java虛擬機(jī)的垃圾回收算法[J].計(jì)算機(jī)應(yīng)用,2005,25(1):218-223

[4]黃廣君,王萬城.java虛擬機(jī)的研究與設(shè)計(jì)[J].控制工程,2003,10(5):444-446.

[5]倪紅波,谷建華,周興社.嵌入式系統(tǒng)中Java虛擬機(jī)的研究與移植[J].計(jì)算機(jī)工程,2004,30(24):52-54.

[6]楊燦群,張曉軍,沈志宇.Java語言環(huán)境實(shí)現(xiàn)技術(shù)探討[J].計(jì)算機(jī)工程和科學(xué),2001(2).

作者簡介:劉冠梅(1982,10-),女,漢族,江西南昌人,碩士,講師,單位:江西省公安廳信息中心。

乐陵市| 南汇区| 泾源县| 井陉县| 普格县| 商城县| 香格里拉县| 兰州市| 锦州市| 兴义市| 宁夏| 长岭县| 安新县| 阜宁县| 郴州市| 丹寨县| 龙州县| 富民县| 平昌县| 美姑县| 蓝山县| 漳平市| 峡江县| 铜鼓县| 巴楚县| 文登市| 建湖县| 板桥市| 长岛县| 比如县| 闸北区| 昭平县| 前郭尔| 万年县| 盈江县| 高平市| 福清市| 南城县| 赣榆县| 延边| 合江县|