天道不一定酬所有勤
但是,天道只酬勤

全部天津11选5走势图:[譯]使用JBoss Modules來??榛疛ava

開發十年,就只剩下這套架構體系了??!

天津11选5蛋托玩法 www.ijudhr.com.cn 本文的英文原文Modularized Java with JBoss Modules是JBoss Modules的作者David寫的,由天津11选5蛋托玩法翻譯在使用JBoss Modules來??榛疛ava中。轉載請注明出處?。?!

一年前Mark Reinhold(Sun/Oracle的頂尖Java工程師之一)在JavaOne上宣稱“classpath已死”,在之后它又寫了一系列的文章來闡述這一觀點,并且宣告Java的未來是??榛?。與此同時,JDK7的發布已經大幅推遲,我們可能在2012,或以后才能見到JDK中java??櫚氖迪?。而JSR294的參與人員一直是走走停停,緩慢的尋求一個和java語言結合緊密的java??榛曜?,這可能是因為需要語言,二進制代碼和打包方面的支持。
我一直在想商討起草一個可用而且不錯的??榛曜加貌渙蘇餉闖な奔?。我用在JBossAS7概念證明(proof-of-concept)時創建的JBoss Modules證明了我的想法。

什么是??椋∕odule)?

如果你沒有關注JDK7的發展,你可能都不知道自己錯過了這個概念。
??橛梢恍├?、資源集合而成,并且關聯一個類加載器。一??榭梢砸覽盜磽庖桓瞿??。 從被依賴的??槔锏汲觶╡xport)的類和資源對于依賴它的??槔銼叩睦嗍強杉模╲isible)??杉侵敢桓隼嗉釉仄骼錛釉氐睦嗄芄弧翱吹健繃磽庖桓黽釉仄骼锏睦啵ㄒ胝咦ⅲ浩涫稻褪強梢緣饔悶鋋pi)。導出(export)一個類或者資源意味著這個類可以被依賴看到。

所以一個??橄低程峁┮恢址椒ń嗪妥試創虬晌??,并且在運行時建立一個類加載的圖表,這樣所有表達的依賴關系都可以被這個??橄低呈迪?。

???Module)的突出優點

在Java中運行應用程序的傳統方法是使用著名的classpath機制。它會創建一個application的類加載器,并且把所有相關jar文件資源匯聚到一起成為一個大塊(blob)。

假如你有一個非常龐大的應用,其中包含了很多的jar文件,并且有些jar在可能根本不會被用到,或者有些jar會有多個相互沖突的不同版本。這些問題我們習慣性的稱之為”JAR Hell“. (譯者注:有過web開發經驗的都知道,很多classNotFound類型的錯誤都是由于jar包沖突或者版本不一致導致的)

??榭梢約蟮幕航庹飧鑫侍?。如果所有的jar都打包成為???,一個jar再也不會看到依賴里一個沖突版本的類,或者加載到一個根本不需要加載的資源。同時,如果一個??橛玫講瘧患釉嗇芄患蟮奶岣嘰笮陀τ玫鈉舳奔?。

還不趕快行動?

JBoss Modules是一個獨立的運行在JDK6及以上版本的??橄低?。它支持以下特性(或者更多):

1、高效的使用內存,提供高性能,多線程類加載實現, 在o(1)的時間復雜度內加載任何的類和資源。

2、可擴展的??榧釉叵低?,允許用戶配置其他可替代實現的??槎ㄒ?加載策略。

3、方便使用的本地??榧釉仄?,能夠用一種簡單的可預測的結構從文件系統上加載Jar文件,或者是展開的目錄

4、簡單的啟動過程(參看以下內容)

5、提供一系列運行時的API ,通過這些API可以加載???,獲得??櫚睦嗉釉仄?,在運行時創建???,擴展JDK service加載機制,使其成為一個能夠識別???,

6、能夠提供對平臺native代碼更多的管理。


一個??榛絳蚴褂靡韻旅釔舳?

java -jar jboss-modules.jar -mp path/to/modules my.main.module.name

在??槁肪?-mp)中需要制定默認??榧釉仄饜枰閹丶釉嗇?櫚母柯?。一個??槭褂眉虻サ腦ML描述符進行定義,如:

<module xmlns="urn:jboss:module:1.0" name="org.jboss.msc">

    <main-class name="org.jboss.msc.Version"/>

    <resources>
        <resource-root path="jboss-msc-1.0.0.Beta3.jar"/>
    </resources>

    <dependencies>
        <module name="org.jboss.logging"/>

        <!-- Optional deps -->

        <module name="javax.inject.api" optional="true"/>
        <module name="org.jboss.threads" optional="true"/>
        <module name="org.jboss.vfs" optional="true"/>
    </dependencies>
</module>

在jboss-moduels.jar里有一個完整的schema文件來定義??槊枋齜母袷?,因此可以很容易的IDE里面定義這樣的文件。JBoss Moduels提供了很多擴展的功能去嚴格控制
哪些包可以被導出(export)和導入(imported),所以你可以從你的 Jar文件里選擇性的不包含一些資源(這樣使用預打包的jar文件時將變得更為簡單)

參考資料

Modularized Java with JBoss Modules

(全文完) 歡迎關注『Java之道』微信公眾號
贊(0)
如未加特殊說明,此網站文章均為原創,轉載必須注明出處。天津11选5蛋托玩法 » [譯]使用JBoss Modules來??榛疛ava
分享到: 更多 (0)

評論 搶沙發

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

HollisChuang's Blog

聯系我關于我