<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 公司發布了 Java Standard Edition 6(Java SE 6)的最終正式版,代號 Mustang(野馬)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不錯的提升。與 Tiger 在 API 庫方面的大幅度加強相比,雖然 Mustang 在 API 庫方面的新特性顯得不太多,但是也提供了許多實用和方便的功能:在腳本,WebService,XML,編譯器 API,數據庫,JMX,網絡和 Instrumentation 方面都有不錯的新特性和功能加強。 本系列 文章主要介紹 Java SE 6 在 API 庫方面的部分新特性,通過一些例子和講解,幫助開發者在編程實踐當中更好的運用 Java SE 6,提高開發效率。

    Instrumentation 簡介

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

    在 Java SE 6 里面,instrumentation 包被賦予了更強大的功能:啟動后的 instrument、本地代碼(native code)instrument,以及動態改變 classpath 等等。這些改變,意味著 Java 具有了更強的動態控制、解釋能力,它使得 Java 語言變得更加靈活多變。

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

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

    最后,Java SE 6 里的 Instrumentation 也增加了動態添加 class path 的功能。所有這些新的功能,都使得 instrument 包的功能更加豐富,從而使 Java 語言本身更加強大。

    Instrumentation 的基本功能和用法

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

    Instrumentation 的最大作用,就是類定義動態改變和操作。在 Java SE 5 及其后續版本當中,開發者可以在一個普通 Java 程序(帶有 main 函數的 Java 類)運行時,通過 –javaagent 參數指定一個特定的 jar 文件(包含 Instrumentation 代理)來啟動 Instrumentation 的代理程序。
    posted on 2007-05-21 16:59 jadmin 閱讀(100) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 国产三级在线免费| 成人A毛片免费观看网站| 99久久99久久精品免费观看| 久久亚洲欧洲国产综合| 免费无码午夜福利片| 亚洲精品无码成人片在线观看 | 国产嫩草影院精品免费网址| 亚洲精品乱码久久久久久蜜桃图片| 麻豆视频免费观看| 亚洲永久在线观看| 日韩在线视频免费看| 美女被爆羞羞网站在免费观看| 亚洲M码 欧洲S码SSS222| 黄 色一级 成 人网站免费| 人人狠狠综合久久亚洲婷婷| 国产99视频精品免费专区| 亚洲精品视频免费看| 亚洲国产精品专区在线观看| 美女黄频免费网站| 国产亚洲精品久久久久秋霞| 日本视频免费高清一本18| 亚洲欧洲综合在线| 免费观看的毛片手机视频| 亚洲阿v天堂在线| 猫咪免费人成网站在线观看| 亚洲中文字幕乱码熟女在线| 四虎影视永久免费观看地址| 国产精品偷伦视频免费观看了 | 亚洲色最新高清av网站| 又爽又高潮的BB视频免费看| 久久一区二区免费播放| 亚洲老熟女@TubeumTV| 成人激情免费视频| 2022国内精品免费福利视频| 激情内射亚洲一区二区三区| 免费观看一级毛片| 香蕉免费一级视频在线观看| 亚洲精品午夜视频| 亚洲AV无码乱码在线观看性色扶| 小日子的在线观看免费| 久久亚洲中文无码咪咪爱|