Java 動態模組系統的唯一選擇:Equinox OSGi 原理及實作 (舊版: 深入 OSGi:Equinox 原理、應用與最佳實作)

周志明、謝小明

  • 出版商: 佳魁資訊
  • 出版日期: 2016-10-27
  • 定價: $590
  • 售價: 8.5$502
  • 語言: 繁體中文
  • 頁數: 520
  • ISBN: 9863794244
  • ISBN-13: 9789863794240

立即出貨 (庫存 < 3)

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

自從1999 年OSGi 聯盟成立以來,OSGi 技術隨著Java 一起高速發展,現已經成為一種被廣泛認可的軟體架構技術和方法。許多世界著名的IT 企業都加入到OSGi 的陣營之中,這些軟體廠商推出的許多產品都支援OSGi 技術,甚至產品本身就使用OSGi 技術建構,證明OSGi 技術具有非常廣闊的市場前景。

 

OSGi 能獲得如此廣泛的認可,一方面是它的誕生迎合軟體模組化的需求;另一方面是因為它足夠全面和開放,OSGi 所具有的動態性、伸縮性正好是許多生產系統所需的。

 

本書全面解讀OSGI標準與原理,系統介紹Equinox框架用法,透過本書,讀者可以一個相對輕鬆的方式學習到OSGi 的運作原理,這對本身能力的加強有極大的幫助。     

 

<本書特色>

走近OSGi、OSGi 標準與原理、以Equinox 為基礎的OSGi 應用與實作、最佳做法。各個部分之間基本上是互相獨立的,沒有必然的前後依賴關係,讀者可以從任何一個有興趣的專題開始閱讀,但是每個部分中的各個章節間會有先後順序。在說明各個基礎知識時會在保證邏輯準確的前提下、儘量用通俗的語言和案例去說明OSGi 中與開發關係最為密切的內容。
 

<章節目錄>

第一部分 走近OSGi

 

第1章 Java 模組化之路

1.1 什麼是OSGi

1.1.1 OSGi 標準的演進

1.1.2 Java 模組化標準之爭

1.2 為什麼使用OSGi

1.2.1 OSGi 能讓軟體開發變得更容易嗎

1.2.2 OSGi 能讓系統變得更穩定嗎

1.2.3 OSGi 能讓系統執行得更快嗎 1.2.4 OSGi 能支撐企業級開發嗎  

1.3 本章小結

 

第二部分 OSGi 標準與原理

 

第2章 模組層標準與原理

2.1 OSGi 標準概要  

2.2 Bundle

2.3 描述中繼資料  

2.3.1 預先定義標記  

2.3.2 使用視覺化工具

2.4 Bundle 的組織與依賴

2.4.1 匯出和匯入Package

2.4.2 約束規則與範例  

2.4.3 驗證Bundle 有效性  

2.5 OSGi 的類別載入架構

2.5.1 父類別載入器  

2.5.2 Bundle 類別載入器

2.5.3 其他類別載入器

2.5.4 類別載入順序

2.6 定義執行環境

2.7 當地語系化

2.8 本章小結

 

第3章 生命週期層標準與原理

3.1 Bundle 標識  

3.2 Bundle 狀態及轉換

3.2.1 安裝過程

3.2.2 解析過程  

3.2.3 啟動過程

3.2.4 更新過程  

3.2.5 停止過程  

3.2.6 移除過程

3.3 啟動等級  

3.3.1 設定啟動等級  

3.3.2 調整活動啟動等級

3.4 事件監聽  

3.4.1 事件類型

3.4.2 事件排程  

3.5 系統Bundle

3.6 Bundle 上下文

3.7 本章小結  

 

第4章 服務層標準與原理

4.1 服務  

4.2 OSGi 服務範例  

4.3 服務屬性

4.3.1 屬性篩檢程式

4.3.2 預先定義屬性

4.3.3 修改屬性

4.4 服務工廠  

4.5 服務追蹤器  

4.6 參考服務

4.7 釋放和登出服務

4.8 服務層事件

4.8.1 事件類型  

4.8.2 事件排程  

4.8.3 ServiceRegistration 物件的提前請求  

4.9 遠端服務

4.9.1 準備遠端服務環境  

4.9.2 遠端服務範例

4.9.3 遠端服務屬性  

4.9.4 實現分析  

4.10 服務勾子

4.10.1 EventListenerHook

4.10.2 FindHook

4.10.3 ListenerHook  

4.10.4 服務勾子範例  

4.11 本章小結

 

第三部分 以Equinox 為基礎的OSGi 應用與實作

 

第5章 Equinox 啟航

5.1 建立Equinox 開發環境  

5.1.1 建立執行環境  

5.1.2 建立編譯及偵錯環境  

5.1.3 建立開發環境  

5.2 Equinox 常用元件簡介  

5.3 Equinox 啟動器

5.4 使用程式啟動Equinox

5.5 本章小結5.2.1 安裝 Express

 

第6章 Equinox 基礎應用與原始程式解析„

6.1 實作專案—Neonat 討論區  

6.1.1 背景與需求  

6.1.2 模組劃分

6.1.3 基礎資料模組  

6.1.4 持久化模組  

6.1.5 使用者互動模組  

6.1.6 執行效果  

6.2 Equinox 原始程式解析  

6.2.1 OSGi 容器啟動  

6.2.2 Bundle 狀態恢復

6.2.3 解析Bundle 依賴關係

6.2.4 OSGi 類別載入器實現  

6.3 本章小結  

 

第7章 伺服器端OSGi„

7.1 OSGi 與Web 伺服器  

7.2 HTTP Service 標準簡介  

7.2.1 服務目標  

7.2.2 服務介面

7.2.3 資源對映規則

7.2.4 請求處理過程  

7.3 實作專案—Neonat 討論區的Web 模組  

7.3.1 準備依賴項

7.3.2 使用HTTP Service

7.3.3 實現Web 互動功能  

7.3.4 執行效果  

7.4 HTTP Service 原始程式解析  

7.4.1 BridgeServlet 與OSGi 容器啟動  

7.4.2 BridgeServlet 與HTTP 請求委派  

7.4.3 DelegateServlet 實現原理  

7.5 本章小結 .

 

第8章 使用者管理服務„

8.1 User Admin 服務標準簡介  

8.1.1 服務目標與基礎概念

8.1.2 驗證使用者身份  

8.1.3 驗證使用者許可權

8.1.4 User Admin 事件

8.2 實作專案—Neonat 討論區使用者管理模組  

8.2.1 需求與依賴項分析

8.2.2 使用者與使用者群組的實現  

8.2.3 頁面許可權

8.2.4 使用者登入與身份驗證  

8.3 User Admin 原始程式解析  

8.3.1 使用者管理實現

8.3.2 外部服務使用實作

8.4 本章小結  

 

第9章 Preferences 服務„

9.1 Preferences 服務標準簡介

9.1.1 服務目標  

9.1.2 資料結構  

9.1.3 屬性  

9.1.4 平行處理  

9.1.5 清理遺留資料

9.2 實作專案—Neonat 討論區持久化模組

9.2.1 開發實作

9.2.2 模組熱切換  

9.3 Preferences 原始程式解析

9.3.1 資料結構實現

9.3.2 屬性存取  

9.3.3 後端儲存系統

9.4 本章小結  

 

第10章 宣告式服務„

10.1 宣告式服務標準簡介  

10.1.1 服務目標  

10.1.2 定義Component

10.1.3 Component 類型  

10.1.4 Component 生命週期  

10.1.5 Component 屬性

10.1.6 綁定與發佈服務

10.1.7 啟動與鈍化方法  

10.1.8 Component 設定歸納  

10.2 實作專案 — 使用宣告式服務改造Neonat 討論區  

10.2.1 視覺化編輯工具

10.2.2 DS 容器管理

10.3 DS 容器原始程式解析

10.3.1 容器啟動  

10.3.2 載入Bundle 中的Component  

10.3.3 動態依賴解析  

10.4 本章小結

 

第11章 Subsystems 服務„

11.1 服務目標  

11.2 Subsystem 格式  

11.3 Subsystem 中繼資料  

11.3.1 SUBSYSTEM.MF 標識  

11.3.2 DEPLOYMENT.MF 標識

11.4 Subsystem 類型與共用策略  

11.5 組織管理Subsystem

11.6 Subsystem 部署與依賴策略  

11.7 Subsystem 生命週期

11.7.1 安裝  

11.7.2 解析  

11.7.3 啟動  

11.7.4 停止  

11.7.5 移除  

11.8 本章小結

 

第四部分 最佳做法

 

12章 OSGi 最佳做法„

12.1 Bundle 相關名稱命名  

12.2 Bundle 劃分原則

12.2.1 恰如其分地分配Bundle 粒度  

12.2.3 分離介面和實現  

12.3 依賴關係實作

12.3.1 依賴分析工具  

12.3.2 避免Require-Bundle  

12.3.3 最小化依賴  

12.3.4 避免循環依賴  

12.3.5 Equinox x-* 依賴

12.4 Equinox 專有類別載入機制

12.4.1 Buddy Loading 類別載入機制

12.4.2 ClassLoaderDelegateHook 類別載入機制

12.5 Bundle 生命週期實作

12.5.1 啟動

12.5.2 停止  

12.6 服務工廠的特殊性  

12.7 處理非OSGi 的JAR 套件

12.8 啟動順序實作

12.8.1 避免啟動順序依賴

12.8.2 Start Level 的使用

12.9 Fragment Bundle 實作

12.10 保持OSGi 動態性

12.11 API Tools 實作

12.11.1 API Baselines  

12.11.2 API Tools 註釋

12.11.3 API Version 版本管理

12.11.4 二進位檔案不相容

12.12 本章小結  

 

第13章 Spring Dynamic Modules 實作„

13.1 Spring DM 入門  

13.1.1 Spring DM 專案簡介

13.1.2 安裝Spring DM  

13.1.3 簡單的Spring DM 範例  

13.1.4 Bundle 和Spring 上下文

13.1.5 命名空間

13.2 Spring DM 進階  

13.2.1 Spring DM 擴充設定  

13.2.2 Web Extender

13.2.3 Spring DM 服務約束

13.2.4 在Spring 上下文中使用BundleContext  

13.3 Spring DM 企業應用  

13.3.1 規劃OSGi 元件  

13.3.2 在Spring DM 中使用JPA

13.3.3 交易管理

13.3.4 OSGi 企業標準中的JPA

13.4 Spring DM 和Blueprint  

13.5 本章小結

 

第14章 建構可測試的OSGi 系統„

14.1 單元測試的必要性  

14.2 單元測試的重要性

14.3 可測試程式的特徵

14.4 OSGi 單元測試

14.4.1 如何組織測試程式  

14.4.2 如何進行OSGi 單元測試

14.5 OSGi 整合測試  

14.5.1 Eclipse JUnit Plug-in Test

14.5.2 Spring DM Test  

14.5.3 Pax Exam  

14.6 本章小結附錄A Java 類別載入器簡介

 

附錄B Equinox 主控台指令  

附錄C OSGi 子標準目錄

附錄D OSGi 相關專案

附錄E Equinox 啟動設定參數