<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0
    2006 年底,Sun 公司發(fā)布了 Java Standard Edition 6(Java SE 6)的最終正式版,代號(hào) Mustang(野馬)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不錯(cuò)的提升。與 Tiger 在 API 庫(kù)方面的大幅度加強(qiáng)相比,雖然 Mustang 在 API 庫(kù)方面的新特性顯得不太多,但是也提供了許多實(shí)用和方便的功能:在腳本,WebService,XML,編譯器 API,數(shù)據(jù)庫(kù),JMX,網(wǎng)絡(luò)和 Instrumentation 方面都有不錯(cuò)的新特性和功能加強(qiáng)。 本系列 文章主要介紹 Java SE 6 在 API 庫(kù)方面的部分新特性,通過(guò)一些例子和講解,幫助開發(fā)者在編程實(shí)踐當(dāng)中更好的運(yùn)用 Java SE 6,提高開發(fā)效率。

    Instrumentation 簡(jiǎn)介

    利用 Java 代碼,即 java.lang.instrument 做動(dòng)態(tài) Instrumentation 是 Java SE 5 的新特性,它把 Java 的 instrument 功能從本地代碼中解放出來(lái),使之可以用 Java 代碼的方式解決問(wèn)題。使用 Instrumentation,開發(fā)者可以構(gòu)建一個(gè)獨(dú)立于應(yīng)用程序的代理程序(Agent),用來(lái)監(jiān)測(cè)和協(xié)助運(yùn)行在 JVM 上的程序,甚至能夠替換和修改某些類的定義。有了這樣的功能,開發(fā)者就可以實(shí)現(xiàn)更為靈活的運(yùn)行時(shí)虛擬機(jī)監(jiān)控和 Java 類操作了,這樣的特性實(shí)際上提供了一種虛擬機(jī)級(jí)別支持的 AOP 實(shí)現(xiàn)方式,使得開發(fā)者無(wú)需對(duì) JDK 做任何升級(jí)和改動(dòng),就可以實(shí)現(xiàn)某些 AOP 的功能了。

    在 Java SE 6 里面,instrumentation 包被賦予了更強(qiáng)大的功能:?jiǎn)?dòng)后的 instrument、本地代碼(native code)instrument,以及動(dòng)態(tài)改變 classpath 等等。這些改變,意味著 Java 具有了更強(qiáng)的動(dòng)態(tài)控制、解釋能力,它使得 Java 語(yǔ)言變得更加靈活多變。

    在 Java SE6 里面,最大的改變使運(yùn)行時(shí)的 Instrumentation 成為可能。在 Java SE 5 中,Instrument 要求在運(yùn)行前利用命令行參數(shù)或者系統(tǒng)參數(shù)來(lái)設(shè)置代理類,在實(shí)際的運(yùn)行之中,虛擬機(jī)在初始化之時(shí)(在絕大多數(shù)的 Java 類庫(kù)被載入之前),instrumentation 的設(shè)置已經(jīng)啟動(dòng),并在虛擬機(jī)中設(shè)置了回調(diào)函數(shù),檢測(cè)特定類的加載情況,并完成實(shí)際工作。但是在實(shí)際的很多的情況下,我們沒(méi)有辦法在虛擬機(jī)啟動(dòng)之時(shí)就為其設(shè)定代理,這樣實(shí)際上限制了 instrument 的應(yīng)用。而 Java SE 6 的新特性改變了這種情況,通過(guò) Java Tool API 中的 attach 方式,我們可以很方便地在運(yùn)行過(guò)程中動(dòng)態(tài)地設(shè)置加載代理類,以達(dá)到 instrumentation 的目的。

    另外,對(duì) native 的 Instrumentation 也是 Java SE 6 的一個(gè)嶄新的功能,這使以前無(wú)法完成的功能 —— 對(duì) native 接口的 instrumentation 可以在 Java SE 6 中,通過(guò)一個(gè)或者一系列的 prefix 添加而得以完成。

    最后,Java SE 6 里的 Instrumentation 也增加了動(dòng)態(tài)添加 class path 的功能。所有這些新的功能,都使得 instrument 包的功能更加豐富,從而使 Java 語(yǔ)言本身更加強(qiáng)大。

    Instrumentation 的基本功能和用法

    “java.lang.instrument”包的具體實(shí)現(xiàn),依賴于 JVMTI。JVMTI(Java Virtual Machine Tool Interface)是一套由 Java 虛擬機(jī)提供的,為 JVM 相關(guān)的工具提供的本地編程接口集合。JVMTI 是從 Java SE 5 開始引入,整合和取代了以前使用的 Java Virtual Machine Profiler Interface (JVMPI) 和 the Java Virtual Machine Debug Interface (JVMDI),而在 Java SE 6 中,JVMPI 和 JVMDI 已經(jīng)消失了。JVMTI 提供了一套”代理”程序機(jī)制,可以支持第三方工具程序以代理的方式連接和訪問(wèn) JVM,并利用 JVMTI 提供的豐富的編程接口,完成很多跟 JVM 相關(guān)的功能。事實(shí)上,java.lang.instrument 包的實(shí)現(xiàn),也就是基于這種機(jī)制的:在 Instrumentation 的實(shí)現(xiàn)當(dāng)中,存在一個(gè) JVMTI 的代理程序,通過(guò)調(diào)用 JVMTI 當(dāng)中 Java 類相關(guān)的函數(shù)來(lái)完成 Java 類的動(dòng)態(tài)操作。除開 Instrumentation 功能外,JVMTI 還在虛擬機(jī)內(nèi)存管理,線程控制,方法和變量操作等等方面提供了大量有價(jià)值的函數(shù)。關(guān)于 JVMTI 的詳細(xì)信息,請(qǐng)參考 Java SE 6 文檔(請(qǐng)參見 參考資源)當(dāng)中的介紹。

    Instrumentation 的最大作用,就是類定義動(dòng)態(tài)改變和操作。在 Java SE 5 及其后續(xù)版本當(dāng)中,開發(fā)者可以在一個(gè)普通 Java 程序(帶有 main 函數(shù)的 Java 類)運(yùn)行時(shí),通過(guò) –javaagent 參數(shù)指定一個(gè)特定的 jar 文件(包含 Instrumentation 代理)來(lái)啟動(dòng) Instrumentation 的代理程序。
    posted on 2007-05-21 16:59 jadmin 閱讀(105) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日产乱码一卡二卡三免费| 国产成人免费ā片在线观看| 又大又硬又爽又粗又快的视频免费| 最新欧洲大片免费在线| 亚洲精品国产精品国自产观看| 无码毛片一区二区三区视频免费播放| 一个人免费观看视频在线中文| 最近高清中文字幕无吗免费看| ZZIJZZIJ亚洲日本少妇JIZJIZ| 亚洲激情电影在线| 成人毛片100免费观看| 最近高清国语中文在线观看免费 | 91精品视频在线免费观看| 日本免费网站观看| 国产成人综合久久精品亚洲| aⅴ免费在线观看| 亚洲AV午夜成人片| xxxxx做受大片在线观看免费| 亚洲日韩在线观看| 免费毛片在线看不用播放器| 日韩精品亚洲专区在线观看| 中文字幕无码精品亚洲资源网久久| 久久综合给合久久国产免费 | 成年人网站在线免费观看| 亚洲老熟女五十路老熟女bbw | 一个人免费视频在线观看www| 69影院毛片免费观看视频在线| 亚洲大香伊人蕉在人依线| 久久久久久久99精品免费| 国产福利电影一区二区三区,亚洲国模精品一区 | 免费在线观看一区| 免费看大黄高清网站视频在线| 亚洲AV无码成人精品区天堂| 在线日本高清免费不卡| 亚洲夂夂婷婷色拍WW47| 免费一本色道久久一区| 色噜噜亚洲男人的天堂| 国产大片线上免费观看| 亚洲精品国产综合久久久久紧| 成年女人免费v片| 巨胸喷奶水视频www免费视频|