Peter品評JSR277

          Peter對于JSR 277是極度的關注,畢竟JSR 277和OSGi在實現的目標上具備了那么多的共同性,從98年開始,Peter就希望能加入JSR 277 JCP Group,但是被拒了,JSR 277基本完全是SUN在主導的,經過這么多年了,JSR 277的草稿終于是發布出來了,Peter在對JSR 277做了Review后特意寫了篇Blog做了評價,總結而言,Peter認為JSR 277 just like a toy,JSR 277并沒有吸取OSGi在這8年模塊化方面的教訓和經驗,在模塊的一致性校驗、可選性、分離包機制等等方面都缺少足夠的考慮,原文見:
          http://www.osgi.org/blog/2006/10/jsr-277-review.html
          作為OSGi的主席,Peter在Java規范的模塊化和動態化絕對是具備足夠的發言權的,他對于JSR 277過分簡單的解決規范的模塊化的策略感到很遺憾,JSR 277采取的是一種類似OSGi Require-Bundle的機制來形成模塊,模塊在JSR 277中定義為以Module的形式來進行部署,對于Module的信息如(引用的模塊、對外暴露的包和資源文件等)則在MODULE-INF/METADATA.module中進行描述,每個標準的JSR 277模塊需要有一個Main類,在這個類中需要有一個Main方法,在觸發Main方法前,環境必須首先檢測此模塊所引用的模塊是否已OK,如沒有OK的話是不會啟動的,從這已經反應出了,JSR 277是不支持動態化的,在JSR 277中模塊不支持卸載,同樣,在運行期是無法改變模塊和加載新的模塊的,必須在停了VM后才能進行這些操作,OK,也許對于不是那么看重動態性的應用來講這點沒那么重要,但是JSR 277在規范的模塊化上做的實在是過于簡單,考慮欠周,為什么這么說呢?
          按照Peter說的幾點來看看:
          一致性校驗
          JSR 277中模塊是通過直接引用其他的模塊來形成依賴的,但它僅僅以模塊名以及版本來構成依賴,并未去解決一致性的問題,這樣說很晦澀,舉例來說:
          有A、B、C、D四個模塊:
          A 引用 B 1.0,C 1.0
          B 1.0?引用 D 1.1
          C?1.0 引用 D 1.0
          在JSR 277中這樣的情況下會出現A同時可看到D 1.0和1.1兩個版本下的類,自然就很容易產生沖突,這個相信大家早就對java中引用包沖突的現象恨之入骨了....
          可選性
          可選性這個顯然是因為JSR 277不支持動態性而形成的,Peter舉了個例子是這樣的:
          一個類可被作為Ant Task、Eclipse Plugin等多種形式來運行,在JSR 277為了讓這個類可以被各種各樣的方式運行,不得不把相關的包全部導入,而在OSGi中則不需要,可以通過optional的方式來動態的去加載所需要的包,這點對于大型應用而言是比較重要的。
          未提供包共享的機制
          JSR 277不是采用包共享的機制來實現模塊之間的類的共享,而是通過模塊引用的方式來實現,這個帶來的問題很明顯,平白的去多引用了不需要的東西,而JSR 277采用模塊引用這樣的方式也讓我們看到JSR 277并沒有充分考慮如何實現模塊之間的互動。
          Peter最后提及他非常不看好JSR 277,他覺得如果JSR 277能夠通過的話要么是因為各大廠商根本就不關心,要么就是因為SUN在這個規范中的主導地位。

          上面幾點是Peter所言,個人認為JSR 277作為模塊化的規范,應該為模塊的定義、設計、開發、部署都做到足夠的考慮,而以目前JSR 277來看,在模塊通信機制、模塊管理上缺乏完整的定義,而這些是一個模塊化的規范中最為根本和重要的東西,而OSGi中則提供了Bundle contains multiple components,Service-Oriented Component Model以及強大的動態化的Bundle管理API來實現模塊的通信和管理,至少從目前看來,OSGi的設計思想仍然是模塊化設計系統的一種很好的指導思想。

          ps: 在明年的Eclipse大會上將會專門有OSGi的專題部分,而且在看Eclipse 3.3的feature中可以發現Eclipse 3.3很重視對于基于OSGi開發系統更好的支持 :)

          posted on 2006-10-20 22:39 BlueDavy 閱讀(2585) 評論(8)  編輯  收藏 所屬分類: OSGi、SOA、SCA

          評論

          # re: Peter品評JSR277 2006-10-21 12:58 dogstar

          sun就愛自己弄一套,這樣也有好處。當選擇osgi的時候有了一個對比的對象,這樣更容易選擇osgi。呵呵。從這一點上看來,sun的作用還是非常重要的。。。  回復  更多評論   

          # re: Peter品評JSR277 2006-10-21 17:15 破門

          @dogstar 強。:)
          的確,沒有參照物,不太容易知道好的究竟有多好。呵呵  回復  更多評論   

          # re: Peter品評JSR277 2006-10-24 17:09 swanliu

          似乎樓主研究過模塊化的理論

          我有一個維護了2年的系統,
          代碼里很多地方在調用其他類、模塊、系統、但沒有經過考慮、登記、審批,使各模塊依賴關系不明確。存在無比巨大隱患。。。

          前面樓主提到的osgi的模塊化規范,請問我讀了以后是不是有助于解決這類問題  回復  更多評論   

          # re: Peter品評JSR277 2006-10-25 15:12 小小涼粉

          BlueDavy兄,有沒有興趣和時間一起組織翻譯一下OSGI的Core specification啊?  回復  更多評論   

          # re: Peter品評JSR277 2006-10-25 19:14 BlueDavy

          @swanliu
          呵呵,建議讀讀


          @ 小小涼粉
          有這個想法,不過一直沒行動..  回復  更多評論   

          # re: Peter品評JSR277 2006-10-25 21:13 小小涼粉

          @BlueDavy

          可不可以一起行動啊?  回復  更多評論   

          # re: Peter品評JSR277 2006-10-26 16:51 小小涼粉

          我可以先翻譯出來某一節

          然后我們可以到滿江紅上提出這個建議

          看看有沒有人愿意一起參加進來

          你看如何?  回復  更多評論   

          # re: Peter品評JSR277 2006-10-26 23:18 BlueDavy

          @ 小小涼粉
          嗯,好建議,完全支持。  回復  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          統計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 项城市| 丹巴县| 安新县| 大冶市| 象州县| 柳河县| 峨眉山市| 许昌市| 眉山市| 乌兰浩特市| 台东县| 无锡市| 铜陵市| 荥阳市| 眉山市| 宣汉县| 陆河县| 曲靖市| 晋宁县| 华池县| 静宁县| 云南省| 盐津县| 合江县| 安顺市| 枣庄市| 图木舒克市| 博客| 高陵县| 云霄县| 台北县| 定结县| 铅山县| 莫力| 武宣县| 区。| 阿尔山市| 乃东县| 抚顺市| 云浮市| 西城区|