成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

愛恨交加:OSGi的Spring和EJB之路?

開發 后端
OSGi是Java的模塊化規范,它解決了很多問題,并且其基于bundles的概念十分出眾。然而它又有些復雜,沒有強大和自動集成的測試組件來配合OSGi,你可能無法繼續下去。本文分析了OSGi的這些優點和麻煩。

對于OSGi,有人評論稱OSGi是“Spring之后的下一個big thing”。不過該文的作者后來又覺得,OSGi也有不少的問題,其中之一就是它在把技術變得復雜化。作者是這樣說的:

51CTO編輯推薦:OSGi入門與實踐全攻略

我對OSGi不懷疑并承認OSGi解決了許多問題,而且它支持一些出眾的結構模型比如高模塊化(high modularization)以及微服務(micro services)。然而從另外一個角度來說,在使用了OSGi幾年之后,也體驗了它在不同領域的表現(我是指開發領域)之后,我真的開始懷疑OSGi了。

這是我喜歡和討厭的OSGi的一些方面:

它從幾百個具有代表性的小bundle中創建出一個系統的概念非常棒。OSGi bundle很好的一點是它們定義了邊界:不僅從依賴關系的意義上,而且從運行時間的意義上也是這樣。每個bundle可以充當一個微應用,有自己的lifecycle和用戶,每個bundle能夠仔細地斷定出哪個對象對外暴露。好好地使用它們,會帶給系統以松耦合,并增加再使用的可能性。而與此同時,OSGi的lifecycle使life更加復雜。實際上,追蹤服務和管理服務所引發的各個問題很討厭(我曾看到過在它們的bundle activators使用大型的state machines來管理所有事情,這種樣板化代碼沒有人愿意寫)。幸運的是有Spring DM來幫我們管理這些。坦白說,如果沒有Spring DM我絕不會動手開始OSGi項目。盡管Spring DM大大降低了bundle啟動的復雜度,但仍然很麻煩。我仍然需要啟動OSGi的運行時間、安裝啟動bundles,我還需要確保所有其他我所需要的bundles已經安裝和啟動。

我個人覺得,作為開發者,我們應當迫使自己執行系統的約束。我們不得不自動核對定義的限制,比如說,如果我們讀取了一些我們并不想讀取的類,構建程序就會失敗。OSGi的版本概念,通過定義輸入和輸出包,將架構參數(architectural constraints)首次帶入開發者的日常生活,并引入了一系列新的問題。OSGi是這樣解決運行時間的版本問題的:它給每個bundle自己的class loader,并讓class loader看起來像它所在的版本一樣。這也帶來一系列問題,因為它改變了你環境工作的方式。你的代碼在所有你的單元測試中都可以通過,但一旦執行在OSGi的運行時間上,就會崩潰;Libraries崩潰因為這提升了運行時間中的類;Singletons被設計為靜態對象不止一次地被創建,周而復始。當你在不斷地調整你的模塊構建說明時你會經常終止,而且絕對會在你的整個系統中傳播反直觀的依賴關系。Spring DM也是這個問題:通過在你的服務中添加一些指令并且不斷地調整你的class loaders,你仍然需要調整和傳送依賴關系。

尤其是類的導入更是帶來很麻煩的問題。你很快會注意到,沒有強大和自動集成的測試組件來配合OSGi,你無法繼續下去

現在說一下我的結論:

在考慮OSGi之前,我會切實核實是否在不關閉系統的情況下我能否在運行時間中轉換bundles,即使在這種情況下,我也會再次查看這些需求,來看看是否我會把他們限制在一個角落里,在這里我可以使用其他技術在動態時間上來動態地加載模塊。還有其他選擇可以生成這種結構條例(比如使用一個IOC container,使用獨立的container來執行模塊依賴等等……)許多這些東西都很接近KISS原則,避免所有其他附件的樣板化代碼并構建配置,這因此讓你更加敏捷。

回歸到我的題目上,還有一種技術擁有這樣的特點(我是指讓技術更加復雜),那就是EJB。Spring是最流行的實例:技術更加復雜,開發周期更加困難。也許我們會在未來的幾年內在OSGi中看到同樣的境遇?我無法斷定,時間將驗證一切。

【編輯推薦】

  1. OSGi近況總結:用戶群蓬勃發展
  2. 2009甲骨文全球大會:OSGi將獲得更多支持
  3. 你好,OSGi!OSGi入門必讀系列
  4. OSGi 4.2規范已發布 新特性介紹
  5. OSGi是什么:Java語言的動態模塊系統
責任編輯:yangsai 來源: CSDN
相關推薦

2018-04-20 15:50:30

CRT密碼

2013-01-15 11:11:26

2009-06-22 13:44:00

JSFJava Web開發

2017-09-18 15:09:42

蘋果

2009-06-18 15:24:08

Spring OSGi

2009-06-26 14:37:10

EJB和Spring

2012-09-03 11:09:37

2009-06-12 09:41:07

EJB3.0Spring

2009-06-01 10:28:03

SpringOSGi整合

2009-03-03 10:06:00

IBMJavaOSGi

2009-06-22 16:59:33

POJOSpringEJB 3.0

2019-01-08 08:03:57

5GB2BTO B

2014-08-13 17:01:20

清華同方

2009-09-27 09:29:56

OSGi和SpringSpring動態模型Spring DM

2009-06-26 14:54:18

Spring支持EJB

2022-09-02 12:13:22

TCPUDP場景

2025-01-03 09:39:04

2009-06-11 15:26:05

EJB組件EJB容器

2009-10-09 13:42:56

Spring DataSpring DM

2009-09-28 13:13:16

設置Spring DM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品三区 | 免费观看成人性生生活片 | 一区二区在线不卡 | 99久久久久国产精品免费 | 黄色一级免费观看 | 中文字幕国产第一页 | 日本在线免费看最新的电影 | 久久99精品久久久久蜜桃tv | 久草资源| 精品国产乱码久久久久久闺蜜 | 国产ts人妖系列高潮 | 中国一级特黄真人毛片免费观看 | 久久精品国产久精国产 | 亚洲免费高清 | av网站免费在线观看 | 天天爽夜夜爽精品视频婷婷 | 国外成人在线视频网站 | 免费a网站| 69福利影院 | 国产视频中文字幕 | 青青伊人久久 | 国产电影精品久久 | 北条麻妃视频在线观看 | 91久久伊人 | 久久精品国产久精国产 | 中文字幕一区二区三区四区五区 | 高清视频一区二区三区 | 日韩国产精品一区二区三区 | 久久免费香蕉视频 | 国产在线第一页 | 99精品国产一区二区三区 | 欧美日韩中 | 成人免费淫片aa视频免费 | 精品成人av | 在线日韩精品视频 | 久久久久久久久久久久久9999 | 99热在线免费 | 亚洲福利电影网 | 在线中文字幕视频 | 在线观看国产视频 | 国产精品视频在线播放 |