<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      歡迎大家下載試用折桂單點登錄系統, https://www.zheguisoft.com

      質疑 OSGi 的作用

      最近和別人在 cnblogs 上就 OSGi 的作用進行了討論,由于那里面的人,只會從網上抄襲 n 年以前的網上套話,很少有自己的分析、見解,無法展開討論。特此寫搏客文章,闡明自己的觀點,同時希望和更多的人,對此技術,進行討論。

       

      OSGi 是由 1999 年成立的 OSGi 聯盟提出的一個開放的服務規范,最初的目的是為嵌入式設備。

      據我從網上搜索到的資料,目前 OSGi 主要用于 嵌入式設備,無數據庫的單機版程序,比如 Eclipse。

       

      OSGi 目前在用的功能,主要是把某個模塊(OSGi 有個特別的名次,叫 bundle),加載進內存、運行、然后由總控程序決定什么時候從內存中卸載。

      這一點很容易理解,Java 中有 ClassLoader 用于把 Java 類加載進內存,但并沒有特別的手段,把已經加載進內存的類,從內存中去掉。而像 Eclipse 這樣的程序,功能較多,比如有 jsp 編輯器、java 編輯器、XML 編輯器,并不需要一啟動,都把這些編輯器對應的類,加載到內存中。可以延遲加載,用到的時候,加載進 JVM 內存。延遲加載在 Java 中并不需要特別處理,因為默認就是如此:沒有用到的類不會加載進內存,用到的類,用到時才加載進內存。

      但 Java 中并沒有特別的手段,去卸載已經運行過但現在不用的類。如果我們先打開一個 java 文件,Eclispe 啟動 java 編輯器,然后我們關閉 java 文件,打開一個 CSS文件,Eclispe 啟動 CSS 編輯器,此時應該把 java 編輯器從內存中去掉,但 Java 本身沒有提供這種功能。當然我們可以期待 Sun/Oracle 公司,未來可以在 Java 中提供這個功能。

      Eclipse 使用 OSGi 來實現不用的插件,從內存中卸載掉,這點不錯,可以節省內存。但是我們大部分人的應用,并不需要這么做。因此,OSGi 這個技術,并不適合大多數應用。

      很奇怪的是,很多 OSGi 愛好者,盲目相信 OSGi 可以動態更新版本。據我了解,Eclipse 如果通過網絡更新插件,是需要整個 Eclipse 重新啟動的,并沒有像這些愛好者所說的那樣,可以自動更新、無需重新啟動。也許,只要更新的是目前不用的模塊,可以做到“自動更新、無需重新啟動”。

       

      汽車的音響不會同時播放 CD 和收音機,因此從聽 CD 換成聽收音機的時候,汽車控制程序可以把CD對應的 bundle 進行 unload。但是,從未聽說哪個汽車廠商說,可以在汽車高速轉彎的時候,汽車里面的控制程序正在運行制動力智能分配,你這時候可以通過網絡,更新“制動力智能分配”這一部分軟件。

       

      Eclipse 更新插件后,重新啟動用時幾分鐘,大部分人可以接受,不接受大不了暫時不升級;汽車控制程序在高速轉彎時,絕大多數人都不會選擇在這個時候更新汽車軟件,除非腦子不正常,一般都會選擇在停下來,熄火,或者掛空檔、駐車擋,喝杯咖啡,讓 4S 店去升級汽車軟件。也就是說, OSGi 愛好者口中號稱的 OSGi 在 Eclipse、汽車軟件中的動態升級,不過如此。

       

      動態替換模塊,前提是不丟失運行時數據,否則就是空談。OSGi 官網、文檔從未提到可以替換正在忙碌中的模塊。問題是,如果是替換不忙的模塊,非要用 OSGi 么?我可以把應用系統停下來,更新版本,重新啟動新版本軟件,然后喝杯咖啡,瞇會兒眼睛,...

      還有人提到電信軟件的動態替換,電信軟件的模塊是不忙的模塊么?

       

      有數據庫的應用,可以借助數據庫來解決模塊之間的依賴問題:模塊 A 從表 1 讀數據,處理后 insert 到表2,模塊 B 從表 2 讀數據,處理后 insert 到表3。表面上看來,兩個模塊互相依賴,但是如果我們用獨立的 java.exe 來運行模塊 A、模塊 B,則可以達到 模塊 A 關閉幾分鐘然后啟動,不影響模塊 B。
      也就是說,有數據庫的應用,模塊之間的依賴,有額外的辦法解決,而這個辦法,不需要制定什么標準,不需要學習什么新知識,總之一個詞:容易!

       

      這也是目前 OSGi 只用在無數據庫系統中的原因。可惜很多人看不到這一點。

       

      這里有一段搞笑的話(http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-osgi/):

      除了模塊化以及面向服務編程之外,OSGi的另一個重要特點是其動態性,Bundle以及Bundle提供的服務可以隨時消失或者重新加入,而其它使用服務的Bundle可以感知服務是否可用,并動態地改變自己的行為。

      搞笑之處在于,“而其它使用服務的Bundle可以感知服務是否可用,并動態地改變自己的行為。”,如果我要調用一個發送傳真的模塊,結果感知“發送傳真模塊”暫時不可用,程序接下來能做什么?等?罵娘?哭?嚎叫?怎么做都不合適,尷尬!

      在不用 OSGi 的情況下,我不需要“感知”其他模塊是否可用,直接調用,出錯就報錯。程序邏輯清楚、簡單。加入 OSGi 后,我需要“感知”其他模塊是否可用,還需要“動態地改變自己的行為”,復雜,麻煩,怎么做都不舒服!如果我每個模塊,都需要“感知”其他各個模塊是否可用,都需要決定如何處理各種額外情況,何等幾何級的復雜!這哪是人干的活!這就是 OSGi 的麻煩!

      我覺得,OSGi 目前只做了一件事:處理 Java 做不好的 unload class 功能。考慮到現在內存如此便宜,4G 內存滿天飛,手機內存也穩步增長,其它嵌入式設備的內存,也在增長。是否一定要 unload 掉不用的類,好像也不是很必要!畢竟不是很多軟件,能把計算機內存撐爆的。

       

      很奇怪的是,現在很多人在吹 OSGi,覺得這是一個萬金油,哪里都可以用。真不知道這些人是怎么想的。

      另外,即使是好用的東西,也要看使用成本。奔馳車好,能讓所有人去買奔馳?OSGi 程序開發調試困難,學習也花時間,難道可以忽略不計?

       

      至于 OSGi 解決模塊化的依賴問題,更是胡鬧。大不了我每個 “模塊” 單獨用一個 java.exe 來 運行,還有依賴問題么?有什么必要用 OSGi?

       

      補充,很多人回復中都提到 Eclipse ,好像 Eclipse 使用 OSGi 是因為  OSGi 很強大什么的,不過,從這篇文章中,可以看出,不是這么回事:

      OSGi: Eclipse的根基

      http://www.builder.com.cn/2007/0929/528796.shtml

      有很多人問Eclipse為什么要兼容OSGI規范而不是其他的規范呢?
      在Eclipse被捐贈出來以前,Eclipse由OTI來開發,其目標是開發一個嵌入式Java軟件的開發平臺。互聯網上現在仍然由很多的連接指向 Visual Age Micro Edition (VAME). 這也是SWT被構思的一個原因,他們想將SWT使用在嵌入式設備中的用戶界面。這種淵源關系解釋了當時為什么選擇OSGI規范。
      另外一個原因是除了OSGI沒有其他的規范...

      ...

       

      2012/7/26, 再補充:

      在 http://zh.wikipedia.org/wiki/OSGi 上,寫明:“OSGi原先關注于服務網關,其實可用于多個方面。現在OSGi規范已經用于從移動電話到開源的Eclipse(其中包括了與IBM的OSGi框架SMF兼容的開源版本)。 OSGi服務平臺的應用包括:服務網關、 汽車、移動電話、 工業自動化、建筑物自動化、 PDA 網格計算、娛樂(如iPronto)、和 IDE。”。只字未提數據庫應用、企業應用。在英文版本的 http://en.wikipedia.org/wiki/OSGi 頁面上,大同小異。

      迄今為止,有什么大公司,把 OSGi 用在一個有數據庫的系統中么?沒有!不明白那么多人糊里糊涂的把OSGi 用在自己的一個有數據庫系統中,是哪根神經不對了。

       

      ====歡迎轉載,轉載請注明出處

      ====歡迎大家下載試用折桂單點登錄系統, http://zheguisoft.com

      posted @ 2012-07-13 17:09  杰克倫敦塵  Views(7454)  Comments(70)    收藏  舉報
      歡迎大家下載試用折桂單點登錄系統, https://www.zheguisoft.com
      主站蜘蛛池模板: 一区二区三区四区精品黄| 国产精品亚洲а∨天堂2021| 国产成人人综合亚洲欧美丁香花| 国产精品毛片一区视频播| 国产一级r片内射免费视频| 人妻加勒比系列无码专区| 亚洲欧美人成电影在线观看| 国产高清一区二区不卡| 欧美人与动牲交A免费观看| 菠萝菠萝蜜午夜视频在线播放观看| 国产一区二区三区乱码| 成人午夜污一区二区三区| 男女扒开双腿猛进入爽爽免费看| 亚洲中文字幕无码永久在线| 视频一区二区不中文字幕| 99久久精品费精品国产一区二| 日韩不卡在线观看视频不卡| 日韩不卡在线观看视频不卡| 国产精品三级爽片免费看| 亚洲女同精品久久女同| 亚洲an日韩专区在线| 一区二区三区四区黄色网| 国产精品入口麻豆| 国产色婷婷亚洲99精品小说| 九九热免费精品在线视频| 国产无遮挡吃胸膜奶免费看| 国产精品三级黄色小视频| 亚洲一区二区三区啪啪| 精品国产粉嫩内射白浆内射双马尾| 男人一天堂精品国产乱码| 精品国产精品午夜福利| 果冻传媒mv免费播放在线观看| 免费无码影视在线观看mov| 日韩丝袜欧美人妻制服| 性按摩玩人妻hd中文字幕| 国产超碰人人做人人爱| 欧美极品色午夜在线视频| 仁寿县| 77se77亚洲欧美在线| 秋霞A级毛片在线看| 福利视频一区二区在线|