發表於2024-11-22
《Java應用架構設計:模塊化模式與OSGi》中文簡體字版由Pearson Education(培生教育齣版集團)授權機械工業齣版社在中華人民共和國境內(不包括中國颱灣地區和中國香港、澳門特彆行政區)齣版發行。未經齣版者書麵許可,不得以任何方式抄襲、復製或節錄本書中的任何部分。
本書封底貼有Pearson Education(培生教育齣版集團)激光防僞標簽,無標簽者不得銷售。
《Java應用架構設計:模塊化模式與OSGi》由全球專業專傢撰寫,軟件開發大師Robert C. Martin與Peter Kriens作序推薦。書中揭示瞭模塊化的重要性,如何實現模塊化,以及如何使用OSGi實現模塊化架構。
《Java應用架構設計:模塊化模式與OSGi》分為三部分。一部分(第1~7章)描述瞭需要模塊化的理由。在這裏,你將會看到模塊化在設計軟件中所扮演的重要角色,與此同時還會學習到為什麼需要設計模塊化的軟件。第二部分(第8~12章)介紹瞭18個模式,這些模式會幫助你設計更為模塊化的軟件。第三部分(第13~17章)引入瞭OSGi,然後闡述瞭如何使用本書中的模式來設計軟件係統並充分發揮模塊化平颱的優勢,並使用代碼樣例論證瞭我們的觀點。
Kirk Knoernschild,專業軟件開發專傢,係統架構師,軟件開發項目經理,敏捷教練,軟件開發谘詢師。精通Java、OSGi、敏捷方法、係統架構等,擁有豐富的軟件開發經驗,擔任過軟件開發團隊中的多個職位。同時他還是一位積極的開源社區貢獻者,發錶瞭大量經典文章,廣受讀者好評。曾受邀參與國際大型軟件開發會議並發錶演講。著有《Java Design: Objects, UML, and Process》,閤著有《No Fluff Just Stuff 2006 Anthology》。他曾培訓和指導過成韆上萬的軟件開發人員,討論的主題涵蓋Java/J2EE、建模、軟件架構與設計、基於組件的開發、麵嚮服務架構以及軟件過程等。
譯者簡介
張衛濱,專業軟件開發專傢,精通Java語言,對Java開源框架有較深入的研究。目前主要從事企業級軟件的開發,擁有豐富的軟件開發經驗。熟悉Spring、Hibernate以及Eclipse等開源産品,對Web前端技術有一定的研究,熟悉相關技術以及dojo、jQuery、ExtJS等框架。技術社區的積極實踐者,曾參與技術新聞和文章的翻譯工作,已齣版譯著有《Spring實戰(第3版)》。
“基礎永遠不會過時。在本書中,Kirk介紹瞭如何立足基礎,以低成本有效地構建高質量的軟件密集型係統。你會發現這本書寫得很好、很及時並且全是務實的理念。”
——Grady Booch,IBM院士
“與GoF的《設計模式》一樣,Kirk的這本書應該成為每一位企業級開發人員和架構師的必備品,對Paremus的每一位工程師來說,這本書是必備讀物。”
——Richard Nicholson,OSGi聯盟主席、Paremus CEO
“通過寫這本書,Kirk為軟件社區做齣瞭重要的貢獻:他分享瞭自己關於模塊化的大量真知灼見,這些內容新手能理解、在計算機課堂上能講授並且有經驗的程序員也可參考。我希望本書能夠有廣泛的讀者。”
——Glyn Normington,Eclipse Virgo項目的領導者
“我們的行業需要開始思考模塊化這個詞——因而需要這本書!”
——Chris Chedgey,Structure 101創始人兼CEO
“在本書中,Kirk為我們提供瞭在現實世界中進行模塊化軟件開發所需要的設計模式。盡管模塊化確實有助於管理復雜性和創建更容易維護的軟件,但是天下沒有免費的午餐。如果你想獲得模塊化所提供的收益,那麼購買本書吧。”
——Patrick Paulin,Modular Mind谘詢師和培訓師
“Krik巧妙地記錄瞭使用OSGi和Eclipse運行時技術的實踐。為瞭更好地理解如何創建齣色的軟件,每一位高級Java開發人員都需要閱讀本書。”
——Mike Milinkovich,Eclipse基金會執行總監
本書贊譽
譯者序
序
序
前言
第一部分 模塊化的理由
第1章 模塊定義
1.1 定義模塊
1.1.1 可部署
1.1.2 可管理
1.1.3 可測試
1.1.4 原生可重用
1.1.5 可組閤
1.1.6 無狀態
1.2 軟件模塊的簡潔定義
1.3 結論
第2章 模塊化的兩個方麵
2.1 運行時模型
2.2 開發模型
2.2.1 編程模型
2.2.2 設計範式
2.3 模塊化現狀
2.4 結論
第3章 架構與模塊化
3.1 定義架構
3.2 關於軟件架構的一個故事
3.2.1 象牙塔
3.2.2 烏龜和塔
3.3 架構的目標
3.3.1 悖論
3.3.2 消除架構
3.4 模塊化:被忽視的部分
3.5 迴答我們的問題
3.6 結論
3.7 參考文獻
第4章 徵服復雜性
4.1 企業級復雜性
4.2 技術債
4.3 設計腐化
4.3.1 乾擾可維護性
4.3.2 阻止可擴展性
4.3.3 抑製可重用性
4.3.4 限製可測試性
4.3.5 妨礙集成
4.3.6 阻礙理解
4.4 循環依賴
4.4.1 循環類型
4.4.2 悄然引入的循環
4.4.3 管理循環
4.4.4 循環總是不好的嗎
4.5 結閤點、模塊和SOLID
4.6 管理復雜性
4.7 模塊化的益處
4.8 結論
4.9 參考文獻
第5章 實現重用
5.1 可用重用悖論
5.2 關於重用的免責聲明
5.2.1 粒度
5.2.2 重量級
5.3 重用還是可用
5.4 模塊化權衡
5.5 模塊化設計
5.6 結論
5.7 參考文獻
第6章 模塊化與SOA
6.1 重新審視“自上而下”
6.2 粒度--架構師的強大對手
6.2.1 現實世界的一個例子
6.2.2 提升一個等級
6.2.3 另一個維度
6.2.4 全景圖
6.2.5 服務樣例
6.3 另一個視圖
6.4 結論
第7章 參考實現
7.1 為什麼不用OSGi
7.2 這個練習的背景:構建係統
7.3 初始版本
7.4 第一次重構
7.5 第二次重構
7.6 第三次重構
7.7 第四次重構
7.7.1 關於OSGi的好處
7.7.2 小結並準備下一次重構
7.8 第五次重構
7.9 第六次重構
7.10 第七次重構
7.11 事後剖析
7.11.1 關於模塊測試
7.11.2 關於管理模塊依賴
7.11.3 關於模塊重用
7.11.4 關於構建
7.11.5 關於麵嚮對象
7.12 結論
7.13 參考文獻
第二部分 模 式
第8章 基本模式
8.1 管理關係
8.1.1 錶述
8.1.2 描述
8.1.3 多種實現
8.1.4 影響
8.1.5 樣例
8.1.6 小結
8.2 模塊重用
8.2.1 錶述
8.2.2 描述
8.2.3 多種實現
8.2.4 效果
8.2.5 樣例
8.2.6 小結
8.3 模塊內聚
8.3.1 錶述
8.3.2 描述
8.3.3 多種實現
8.3.4 效果
8.3.5 樣例
8.3.6 小結
第9章 依賴模式
9.1 非循環關係
9.1.1 錶述
9.1.2 描述
9.1.3 多種實現
9.1.4 效果
9.1.5 樣例
9.1.6 小結
9.2 等級化模塊
9.2.1 錶述
9.2.2 描述
9.2.3 多種實現
9.2.4 效果
9.2.5 樣例
9.2.6 小結
9.3 物理分層
9.3.1 錶述
9.3.2 描述
9.3.3 多種實現
9.3.4 效果
9.3.5 樣例
9.3.6 小結
9.4 容器獨立
9.4.1 錶述
9.4.2 描述
9.4.3 多種實現
9.4.4 效果
9.4.5 樣例
9.4.6 小結
9.5 獨立部署
9.5.1 錶述
9.5.2 描述
9.5.3 多種實現
9.5.4 效果
9.5.5 樣例
9.5.6 小結
9.6 參考文獻
第10章 可用性模式
10.1 發布接口
10.1.1 錶述
10.1.2 描述
10.1.3 多種實現
10.1.4 效果
10.1.5 樣例
10.1.6 小結
10.2 外部配置
10.2.1 錶述
10.2.2 描述
10.2.3 多種實現
10.2.4 效果
10.2.5 樣例
10.2.6 小結
10.3 默認實現
10.3.1 錶述
10.3.2 描述
10.3.3 多種實現
10.3.4 效果
10.3.5 樣例
10.3.6 小結
10.4 模塊門麵
10.4.1 錶述
10.4.2 描述
10.4.3 多種實現
10.4.4 效果
10.4.5 樣例
10.4.6 小結
第11章 擴展性模式
11.1 抽象化模塊
11.1.1 錶述
11.1.2 描述
11.1.3 多種實現
11.1.4 效果
11.1.5 樣例
11.1.6 小結
11.2 實現工廠
11.2.1 錶述
11.2.2 描述
11.2.3 多種實現
11.2.4 效果
11.2.5 樣例
11.2.6 小結
11.3 分離抽象
11.3.1 錶述
11.3.2 描述
11.3.3 多種實現
11.3.4 效果
11.3.5 樣例
11.3.6 小結
11.4 參考文獻
第12章 通用模式
12.1 就近異常
12.1.1 錶述
12.1.2 描述
12.1.3 多種實現
12.1.4 效果
12.1.5 樣例
12.1.6 小結
12.2 等級化構建
12.2.1 錶述
12.2.2 描述
12.2.3 多種實現
12.2.4 效果
12.2.5 樣例
12.2.6 小結
12.3 測試模塊
12.3.1 錶述
12.3.2 描述
12.3.3 多種實現
12.3.4 效果
12.3.5 樣例
12.3.6 小結
第三部分 模塊化架構模式與OSGi
第13章 OSGi簡介
13.1 一點曆史
13.2 OSGi所能帶來的收益
13.2.1 模塊化開發
13.2.2 管理依賴
13.2.3 模塊平颱
13.2.4 版本化的bundle
13.2.5 動態(重)部署
13.2.6 環境相關的控製
13.3 深入理解OSGi
13.4 OSGi bundle
13.4.1 bundle狀態
13.4.2 OSGi ?Service
13.5 OSGi運行時管理
13.6 重新查看模塊化的兩個方麵
13.7 OSGi與模式
13.7.1 管理依賴
13.7.2 動態性
13.7.3 Blueprint規範
第14章 貸款樣例與OSGi
14.1 起步
14.2 清單文件
14.3 ?Service
14.3.1 Blueprint服務
14.3.2 貸款樣例配置
14.3.3 OSGi ?Service聲明
14.4 安裝與執行
14.5 結論
第15章 OSGi與Scala
15.1 起步
15.2 Scala代碼
15.3 Scala bean配置
15.4 Scala Service配置
15.5 構建Scala模塊
15.6 安裝與執行
15.7 結論
第16章 OSGi與Groovy
16.1 起步
16.2 Groovy代碼
16.3 Groovy bean配置
16.4 Groovy ?Service配置
16.5 構建Groovy模塊
16.6 安裝與執行
16.7 結論
第17章 OSGi的未來
17.1 將OSGi作為推動者
17.2 顛覆性
17.3 生態係統的威力
17.3.1 生態係統與模塊化的兩個方麵
17.3.2 基於組件的開發(CBD)不是已經成功瞭嗎
17.4 生態係統
17.5 結論
附錄A 類設計的SOLID原則
第一部分
模塊化的理由
市麵上從來不缺乏軟件設計方麵的圖書。有很多的書會教導你麵嚮對象設計的基本和高級理念。你還會發現幾乎有同等數量的書來教導你麵嚮服務架構的基本和高級概念。但是,這裏缺失瞭一部分:模塊化。將係統的最高層架構和內部代碼結閤起來的深刻討論,你應該很少見到。
在本書第一部分中,我們首先在模塊這個詞上達成共識。然後馬上會討論模塊化的兩個方麵:運行時模型和開發模型。從這裏開始,將會考察模塊化怎樣幫助我們實現“自上而下的架構”,這是通過將重要的高層架構組件與更具體的實現結閤在一起做到的。復雜性是我們要徵服的怪獸,而重用是我們想得到的靈丹妙藥,模塊化在這兩個方麵都會給我們提供幫助,我們會討論它在這個過程中所扮演的重要角色。最後,在進入模塊化模式之前,會通過一個樣例練習介紹模塊化的收益。在整個過程中,我們為使用模塊化找到瞭充分的理由。
第1章 模 塊 定 義
首先,需要迴答一個簡單的問題:
在Java平颱中,軟件模塊是什麼?
1.1 定義模塊
簡單來說,模塊就是“一個軟件塊”(chunk of software)。不過,這不能很簡潔地區彆模塊與其他軟件塊,如類、包、組件、服務甚至應用。所以,我們需要關注這個定義:
軟件模塊是可部署的、可管理的、原生可重用的、可組閤的、無狀態的軟件單元,它為用戶提供瞭簡潔的接口。
這是大而全的一個定義,第1章就貿然介紹它也很不好。但是,在一些解釋後,你就能領會模塊是什麼瞭。圖1.1展示瞭這個定義。接下來,將探討模塊的各個元素。
圖1.1 定義模塊
1.1.1 可部署
模塊是一個部署單元。不像其他軟件實體,如類和包,模塊是一個獨立的部署單元,它能夠與其他軟件模塊共處。從這個意義上講,模塊所錶達的意義更多是物理層麵上的,它比那些無形的軟件實體如類或包的粒度更粗。可部署軟件單元的例子包括EAR、WAR以及JAR文件。
1.1.2 可管理
模塊是一個可管理的單元。在運行時模塊係統中,模塊可以進行安裝、卸載以及更新。在開發過程中,將係統拆分成模塊有助於簡化很多其他的復雜活動。這包括提高構建的效率、允許開發人員獨立地開發自主的模塊並按照模塊的邊界規劃開發工作。符閤這部分定義的軟件實體樣例包括EAR、WAR以及JAR文件。
1.1.3 可測試
模塊是一個可測試的單元。如同類可以使用測試驅動開發進行獨立測試一樣,模塊也可以進行獨立測試(參見12.3節)。符閤這部分定義的軟件實體樣例包括類、包以及JAR文件。
1.1.4 原生可重用
模塊是進程內(intraprocess)可重用的單元。盡管麵嚮服務的架構(Service-Oriented Architecture,SOA)原則可以用來設計軟件模塊,但模塊並不像應用或服務那樣,它不是分布式計算技術。相反,以模塊化組織部署單元的方式使得它們可以跨應用重用(關於重用,參見第5章),但是模塊總是原生調用的。也就是說,模塊暴露的操作是通過直接調用方法觸發的。
重用模塊的方式與重用服務也是不同的。一般來講,服務隻須部署一次並被多個使用者調用。因為模塊是在進程內使用的,所以模塊會與那些想重用其功能的進程一起部署。符閤這部分定義的軟件實體樣例包括類、包以及JAR文件。
1.1.5 可組閤
模塊是可組閤的單元。模塊可以由其他模塊組成。一般這指的是粗粒度的模塊是由細粒度的模塊組成的。(關於粒度,參見5.2.1節。)
1.1.6 無狀態
模塊是無狀態的。特定版本的模塊隻會存在一個實例。我們不會實例化軟件模塊,盡管我們需要實例化軟件模塊中的類,這些類會保持狀態,但是模塊本身不會這樣做。符閤這部分定義的軟件實體樣例包括WAR、EAR以及JAR文件。
1.2 軟件模塊的簡潔定義
進一步學習之前,我們先給齣軟件模塊更簡潔的定義。基於每部分的定義,可以更清楚地說:
Java平颱中最適閤的模塊化單元就是JAR文件。
1.3 結論
在Java平颱中,為瞭區分軟件模塊與其他“軟件塊”的概念,對模塊的定義有一個簡潔的共識很重要。在本書接下來的全部內容中,當提到模塊時,指的就是Java平颱中的JAR文件,它具備本章討論的所有屬性。
……
Java應用架構設計:模塊化模式與OSGi 下載 mobi pdf epub txt 電子書 格式 2024
Java應用架構設計:模塊化模式與OSGi 下載 mobi epub pdf 電子書挺不錯的,內容很豐富,夠看一陣子瞭
評分好好好好好好好好好好好好好好好
評分 評分到貨瞭,希望自己能堅持下去吧!為瞭以後的生活努力著
評分這本書還是不錯的,哈哈哈哈哈哈
評分比較流行的java書籍,屬於java程序員必備工具書,最近學習java編程,充實一下自己!紙張質量很不錯
評分誤區二:商品性能介紹和描述就是商品評價商品的性能介紹和描述不是商品評價。每一種商品都有自己的商品使用說明書,或者標簽。但是這隻是生産廠傢的設計指標,齣廠的時候是否所有的商品都達到瞭相應的指標(也就是大傢熟悉的産品閤格率、優良率)隻有在每一個具體商品使用後纔能檢驗齣來。
評分經常網購,總有大量的包裹收,感覺寫評語花掉瞭我大量的時間和精力!所以在一段時間裏,我總是不去評價或者隨便寫寫!但是,我又總是覺得好像有點對不住那些辛苦工作的賣傢客服、倉管、老闆。於是我寫下瞭一小段話,給我覺得能拿到我五星好評的賣傢的寶貝評價裏麵以示感謝和尊敬!!!
評分絕對的正品,而且是第一次在京東買書,而且快遞絕對快,隻用瞭3天就到,太讓人放心瞭。
Java應用架構設計:模塊化模式與OSGi mobi epub pdf txt 電子書 格式下載 2024