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

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 上犹县| 甘肃省| 苍南县| 康乐县| 吴忠市| 大邑县| 长海县| 和田县| 珠海市| 石河子市| 布拖县| 菏泽市| 广元市| 扶风县| 宁城县| 旅游| 扎鲁特旗| 日照市| 牡丹江市| 蓬安县| 万载县| 义乌市| 阿鲁科尔沁旗| 宜昌市| 英山县| 通榆县| 博客| 铜梁县| 抚顺县| 巫溪县| 新郑市| 托克逊县| 博白县| 彭泽县| 九寨沟县| 上犹县| 绿春县| 行唐县| 博爱县| 望城县| 中西区|