OSGi實戰(zhàn)

出版時間:2013-1  出版社:人民郵電出版社  作者:Richard S. Hall,Karl Pauls,Stuart McCulloch,David Savage  譯者:郭 慶,李 楠,謝瑩瑩,張 磊  
Tag標(biāo)簽:無  

前言

  早在2000年,我剛開始從事OSGi相關(guān)技術(shù)工作時,無法預(yù)料自己會在10年后繼續(xù)從事該領(lǐng)域的工作。那時,OSGi瞄準(zhǔn)了嵌入式市場,但那不是我感興趣的領(lǐng)域。我想創(chuàng)建高動態(tài)性、模塊化的應(yīng)用,恰巧OSGi給了我實現(xiàn)上述目標(biāo)的可能。當(dāng)時,還沒有免費的OSGi框架的實現(xiàn),所以2000年12月我在柏林自由大學(xué)工作時,開始著手開發(fā)自己的OSGi開源框架實現(xiàn)Oscar。后來Oscar隨我一起搬到格勒諾布爾,因為我去了約瑟夫·傅里葉大學(xué)工作。也就是在這里Oscar開始蓬勃發(fā)展?! ‰S著OSGi技術(shù)的發(fā)展,Oscar于2004年加入了ObjectWeb開源聯(lián)盟,后來又于2005年發(fā)展成為Apache 軟件基金會的Felix項目。我很幸運地受到了OSGi聯(lián)盟的邀請,直接參與制定OSGi第4版規(guī)范,OSGi R4規(guī)范于2004年發(fā)布。自那時起,我參與了OSGi規(guī)范制定的相關(guān)工作。起初我是一名學(xué)術(shù)研究者,2008年我加入Sun公司(已被Oracle收購)的Glass Fish團隊,最近一直從事行業(yè)相關(guān)問題的研究。在最近10年間很多東西都發(fā)生了改變?! SGi技術(shù)已不再局限于嵌入式市場,而是發(fā)展成為一個面向Java的成熟模塊化系統(tǒng)。這種轉(zhuǎn)變在2004年Eclipse IDE采用OSGi重構(gòu)其插件系統(tǒng)時,幫了很大的忙。由于Spring和其他主要的應(yīng)用服務(wù)器在企業(yè)應(yīng)用領(lǐng)域?qū)SGi技術(shù)的采納,進一步促成了OSGi技術(shù)的持續(xù)發(fā)展。盡管Java模塊化仍在不斷發(fā)展,但在未來很長一段時間里OSGi技術(shù)會扮演重要角色?,F(xiàn)在說說本書?! 啄暌詠砦乙恢毕雽懸槐窘榻BOSGi的書,但是考慮到任務(wù)的艱巨以及沒有時間,我并未將這一念頭付諸實踐。在2008年的夏天,我覺得是時候行動起來了,于是開始寫作但很快又停滯不前了。直到Karl和Stuart以及后來David的加入,我才最終得償所愿。我們各自有著不同的OSGi經(jīng)驗,將我們各自擅長的方面組合在一起,就包括了OSGi的全部內(nèi)容。盡管如此,本書的寫作仍舊歷時兩年多,期間經(jīng)歷過工作的變動以及幾個孩子的降生。希望我們的努力能夠?qū)δ阌兴鶐椭??! ichard S. Hall

內(nèi)容概要

  OSGi是一種標(biāo)準(zhǔn)技術(shù),用于創(chuàng)建高度模塊化的Java應(yīng)用。利用OSGi,無需停止運行整個系統(tǒng)就可以安裝、啟動、停止、更新或卸載組件。Oracle、BEA和IBM都在積極推動OSGi技術(shù)的采用。  《OSGi實戰(zhàn)》作者既來自開發(fā)一線,又參與了OSGi規(guī)范的制定,這就保障了全書內(nèi)容的權(quán)威性。《OSGi實戰(zhàn)》全書歷時兩年多方才完成,凝聚了作者們多年來的寶貴經(jīng)驗和辛勤汗水。內(nèi)容分三部分,涵蓋OSGi核心規(guī)范解讀、OSGi規(guī)范的實際應(yīng)用及相關(guān)高級主題,系統(tǒng)、全面、深入地闡述OSGi的重要特性,揭示了大量鮮為人知的技術(shù)細(xì)節(jié)。此外,本書還通過極具實用價值的實例示范了OSGi的各種應(yīng)用,能夠滿足各個層次讀者的需求。通過大師的指引,相信讀者一定可以輕松實現(xiàn)“入門-進階-精通”三級跳,在OSGi世界里創(chuàng)造出無限可能。 

作者簡介

《OSGi實戰(zhàn)》作者Richard S. Hall是Apache Felix 框架開發(fā)組的一位活躍成員,該開發(fā)組和其他組一樣都是Felix的子項目。2000年以后Richard參與了OSGi的開源工作并于2004年直接加入OSGi聯(lián)盟。Richard是Apache軟件組織的一位成員,目前在Oracle的GlassFish項目組工作,主要工作是幫助解決OSGi相關(guān)的問題或者從事一些其他他所擅長做的事情。 Karl Pauls實現(xiàn)了Apache Felix Framework Security Provider,他也是Apache Felix框架開發(fā)組的一位活躍成員,該項目組和其他組一樣都是Felix的子項目。Karl是Apache軟件組織的一名成員,曾經(jīng)參與了多個Apache以及其他的開源項目。Karl是Luminis的一位研究員。Stuart Mcculloch主要負(fù)責(zé)Apache Felix的maven-bundle插件以及OPS4j中用來快速開發(fā)OSGi的Pax-Construct工具。他還是Peaberry的作者,Peaberry是Guice的擴展用來實現(xiàn)對動態(tài)服務(wù)的注入。Stuart是Sonatype的顧問,主要負(fù)責(zé)依賴注入和模塊化。David Savage在Paremus工作,2005年后他一直致力于OSGi應(yīng)用的設(shè)計和構(gòu)建,涵蓋了眾多領(lǐng)域如:構(gòu)建工具、組件模型、數(shù)據(jù)持久化、桌面UI、管理方法、消息通信、配置、解析器以及RPC。借助Sigil子項目David重點在開發(fā)工具領(lǐng)域進行了深入研究,為Apache Felix 項目做出了貢獻。他同時還直接參與了OSGi聯(lián)盟有關(guān)OSGi規(guī)范的制定工作。

書籍目錄

目 錄第一部分 OSGi:模塊化、生命周期和服務(wù)第1章 揭開OSGi的面紗 21.1 OSGi的定義和目標(biāo) 31.1.1 Java模塊化的不足 31.1.2 OSGi能幫助你嗎 61.2 OSGi架構(gòu)概覽 61.2.1 OSGi框架 71.2.2 將它們結(jié)合起來 101.3 Hello, world! 101.3.1 模塊層示例 101.3.2 生命周期層示例 121.3.3 服務(wù)層示例 131.3.4 場景設(shè)置 151.4 OSGi的相關(guān)技術(shù) 161.4.1 Java EE 161.4.2 Jini 171.4.3 NetBeans 171.4.4 JMX 171.4.5 輕量級容器 181.4.6 Java 業(yè)務(wù)集成 181.4.7 JSR 277 191.4.8 JSR 294 191.4.9 SCA 191.4.10 .NET 201.5 小結(jié) 20第2章 精通模塊化 212.1 什么是模塊化 212.2 為什么使用模塊化 242.3 模塊化繪圖程序 242.4 bundle 272.4.1 bundle在物理模塊化中扮演的角色 282.4.2 bundle在邏輯模塊化中扮演的角色 292.5 使用元數(shù)據(jù)定義bundle 302.5.1 可讀信息 312.5.2 bundle標(biāo)識 322.5.3 代碼可見性 342.5.4 類搜索順序 422.6 完成繪圖程序設(shè)計 432.6.1 提高繪圖程序的模塊化 442.6.2 啟動新的繪圖程序 462.7 OSGi依賴解析 462.7.1 自動解析依賴 472.7.2 使用約束保證一致性 512.8 回顧模塊化繪圖程序的好處 562.9 小結(jié) 59第3章 生命周期 603.1 生命周期管理 603.1.1 什么是生命周期管理 613.1.2 為什么需要生命周期管理 623.2 OSGi bundle的生命周期 633.2.1 將生命周期引入繪圖程序 633.2.2 OSGi框架在生命周期中的作用 653.2.3 bundles激活器的清單文件條目 663.2.4 生命周期API 673.2.5 生命周期狀態(tài)圖 723.2.6 bundle緩存和框架重啟 733.3 在bundle中使用生命周期API 743.3.1 配置bundle 753.3.2 部署bundle 763.3.3 檢查框架狀態(tài) 813.3.4 持久化bundle狀態(tài) 823.3.5 事件監(jiān)聽 853.3.6 bundle自我銷毀 873.4 動態(tài)擴展繪圖程序 893.5 生命周期與模塊化 963.5.1 解析bundle 963.5.2 刷新bundle 983.5.3 當(dāng)更新操作沒有完成更新 1013.6 小結(jié) 103第4章 學(xué)習(xí)服務(wù) 1044.1 什么是服務(wù)、為什么使用服務(wù)、什么時候用服務(wù) 1044.1.1 什么是服務(wù) 1044.1.2 為什么使用服務(wù) 1064.1.3 什么時候應(yīng)該使用服務(wù) 1094.1.4 什么時候不應(yīng)該使用服務(wù) 1104.1.5 仍然不確定 1104.2 OSGi服務(wù)實戰(zhàn) 1114.2.1 發(fā)布服務(wù) 1124.2.2 查找并綁定服務(wù) 1144.3 處理動態(tài)性 1174.3.1 避免常見的陷阱 1184.3.2 監(jiān)聽服務(wù) 1214.3.3 服務(wù)跟蹤 1264.4 在繪圖示例中使用服務(wù) 1294.4.1 定義圖形服務(wù) 1294.4.2 發(fā)布圖形服務(wù) 1294.4.3 跟蹤圖形服務(wù) 1304.5 將服務(wù)關(guān)聯(lián)到模塊層和生命周期層 1314.5.1 為什么不能看到我的服務(wù) 1314.5.2 能否提供一個bundle特有的服務(wù) 1324.5.3 應(yīng)該在何時釋放服務(wù) 1334.5.4 何時注銷服務(wù) 1334.5.5 應(yīng)該將接口分開打包嗎 1334.6 標(biāo)準(zhǔn)服務(wù) 1344.6.1 核心服務(wù) 1344.6.2 compendium服務(wù) 1354.7 小結(jié) 136第5章 深入分析模塊化特性 1385.1 管理導(dǎo)出 1385.1.1 導(dǎo)入導(dǎo)出包 1395.1.2 隱式導(dǎo)出屬性 1425.1.3 強制導(dǎo)出屬性 1435.1.4 導(dǎo)出過濾 1455.1.5 復(fù)制導(dǎo)出 1465.2 導(dǎo)入解耦 1475.2.1 可選導(dǎo)入 1475.2.2 動態(tài)導(dǎo)入 1485.2.3 可選導(dǎo)入與動態(tài)導(dǎo)入的比較 1495.2.4 日志示例 1505.3 需要的bundle 1535.3.1 聲明bundle依賴關(guān)系 1545.3.2 聚合分割包 1555.3.3 bundle依賴的相關(guān)問題 1585.4 將bundle劃分為片段 1585.4.1 片段 1595.4.2 本地化中使用片段 1615.5 處理與環(huán)境相關(guān)的問題 1645.5.1 依賴執(zhí)行環(huán)境 1655.5.2 構(gòu)建本地庫 1665.6 小結(jié) 168第二部分 OSGi實踐第6章 走近bundle 1706.1 將JAR轉(zhuǎn)換成bundle 1706.1.1 選取bundle標(biāo)識 1716.1.2 導(dǎo)出包 1736.1.3 發(fā)現(xiàn)需要導(dǎo)入的包 1776.1.4 嵌入與導(dǎo)入 1816.1.5 增加對生命周期的支持 1816.1.6 JAR文件轉(zhuǎn)換為bundle的簡要說明 1836.2 分割一個應(yīng)用到多個bundle 1846.2.1 創(chuàng)建一個大型bundle 1846.2.2 將代碼拆分到多個bundle中 1936.2.3 降低模塊耦合 1976.2.4 是否要轉(zhuǎn)換成bundle 2016.3 小結(jié) 204第7章 測試應(yīng)用程序 2067.1 遷移測試到OSGi 2067.1.1 容器內(nèi)測試 2077.1.2 創(chuàng)建測試bundle 2087.1.3 覆蓋所有基礎(chǔ) 2107.2 模擬OSGi 2127.2.1 測試期望的行為 2137.2.2 模擬實戰(zhàn) 2147.2.3 模擬意外情景 2157.2.4 處理多線程測試 2167.2.5 暴露競態(tài)條件 2187.3 OSGi高級測試 2197.3.1 OSGi測試工具 2207.3.2 在多個框架中運行測試 2217.3.3 單元測試 2257.3.4 集成測試 2267.3.5 管理測試 2287.4 小結(jié) 230第8章 調(diào)試應(yīng)用 2328.1 調(diào)試bundle 2328.1.1 調(diào)試實戰(zhàn) 2348.1.2 使用HotSwap解決問題 2398.2 解決類加載相關(guān)問題 2438.2.1 ClassNotFoundException與NoClassDefFoundError 2448.2.2 類型轉(zhuǎn)換問題 2468.2.3 使用uses約束 2478.2.4 同Class.forName()劃清界限 2498.2.5 線程上下文類加載器 2528.3 追蹤內(nèi)存泄漏 2548.4 懸掛服務(wù) 2588.4.1 查找懸掛服務(wù) 2598.4.2 防止懸掛服務(wù) 2598.5 小結(jié) 261第9章 管理bundle 2629.1 包和bundle的版本控制 2629.1.1 有效的版本控制 2639.1.2 包的版本控制 2649.1.3 bundle的版本控制 2669.2 配置bundle 2679.2.1 配置管理服務(wù) 2689.2.2 元類型服務(wù) 2769.2.3 首選項服務(wù) 2799.3 延遲啟動bundle 2819.3.1 激活策略 2819.3.2 使用激活策略 2839.4 小結(jié) 284第10章 管理應(yīng)用 28510.1 部署bundle 28510.1.1 管理代理 28510.1.2 OSGi bundle倉庫 28710.1.3 部署管理服務(wù) 29410.2 指定bundle激活順序 30110.2.1 介紹啟動級別服務(wù) 30210.2.2 使用啟動級別服務(wù) 30310.3 小結(jié) 306第三部分 高級主題第11章 組件模型和框架 30811.1 面向組件 30811.1.1 什么是組件 30911.1.2 為什么需要組件 31011.2 OSGi與組件 31111.2.1 OSGi面向服務(wù)的組件模型 31111.2.2 改進OSGi組件模型 31211.2.3 使用組件的繪圖示例 31611.3 聲明式服務(wù) 31611.3.1 構(gòu)建聲明式服務(wù)組件 31711.3.2 使用聲明式服務(wù)提供服務(wù) 31811.3.3 利用聲明式服務(wù)使用服務(wù) 31911.3.4 聲明式服務(wù)組件生命周期 32411.4 小結(jié) 330第12章 高級組件框架 33112.1 Blueprint容器 33112.1.1 Blueprint架構(gòu) 33212.1.2 用Blueprint提供服務(wù) 33212.1.3 通過Blueprint使用服務(wù) 33512.1.4 Blueprint組件生命周期 33912.1.5 Blueprint高級特性 34312.2 Apache Felix iPOJO 34712.2.1 構(gòu)建iPOJO組件 34812.2.2 通過iPOJO提供服務(wù) 34912.2.3 通過iPOJO使用服務(wù) 35012.2.4 iPOJO組件生命周期 35512.2.5 使用iPOJO實例化組件 35812.3 混合和匹配 36212.4 小結(jié) 364第13章 啟動和嵌入OSGi框架 36513.1 標(biāo)準(zhǔn)啟動和嵌入 36513.1.1 框架API概覽 36613.1.2 創(chuàng)建框架實例 36713.1.3 配置框架 36913.1.4 啟動框架實例 37013.1.5 停止框架實例 37113.2 啟動框架 37213.2.1 確定安裝哪些bundle 37313.2.2 干凈地關(guān)閉 37313.2.3 配置、創(chuàng)建和啟動框架 37413.2.4 安裝bundle 37413.2.5 啟動bundle 37513.2.6 啟動主bundle 37513.2.7 等待關(guān)閉 37613.3 嵌入框架 37713.3.1 內(nèi)部還是外部 37813.3.2 誰在控制 38013.3.3 嵌入式框架示例 38113.4 小結(jié) 386第14章 確保應(yīng)用程序的安全 38814.1 使用安全或者不使用安全 38814.2 安全:努力嘗試使用 39014.3 OSGi特定的權(quán)限 39314.3.1 PackagePermission 39314.3.2 BundlePermission 39414.3.3 AdminPermission 39514.3.4 ServicePermission 39614.3.5 相對文件權(quán)限 39714.4 使用條件權(quán)限管理服務(wù)管理權(quán)限 39714.4.1 條件權(quán)限 39714.4.2 條件權(quán)限管理服務(wù) 39814.4.3 bundle 位置條件 40014.4.4 使用Conditional-Permission Admin 40014.4.5 實現(xiàn)一個策略文件讀取器 40414.5 數(shù)字簽名的bundle 40514.5.1 學(xué)習(xí)術(shù)語 40614.5.2 創(chuàng)建證書和簽名bundle 40614.5.3 BundleSignerCondition 40814.6 本地權(quán)限 41014.7 高級權(quán)限管理 41114.7.1 自定義條件概覽 41114.7.2 基于日期的條件 41214.7.3 用戶輸入條件 41414.8 匯總 41714.9 小結(jié) 421第15章 Web應(yīng)用和Web服務(wù) 42215.1 創(chuàng)建Web應(yīng)用 42215.1.1 使用HTTP服務(wù)規(guī)范 42415.1.2 使用Web應(yīng)用規(guī)范 43215.1.3 標(biāo)準(zhǔn)WAR:Web URL處理程序 43615.2 提供和使用Web服務(wù) 43715.2.1 提供一個Web服務(wù) 43815.2.2 使用Web服務(wù) 44115.2.3 發(fā)布服務(wù) 44515.3 小結(jié) 452附錄A 構(gòu)建 bundle 453附錄B OSGi標(biāo)準(zhǔn)服務(wù) 466

編輯推薦

《OSGi實戰(zhàn)》由Richard S. Hall、Karl Pauls、Stuart McCulloch、David Savage聯(lián)手打造,系統(tǒng)、全面、深入地闡述OSGi的重要特性及其使用方法。理論與實踐相結(jié)合,能指導(dǎo)實際開發(fā)?!禣SGi實戰(zhàn)》通過精彩的講解和貼近實戰(zhàn)的豐富示例,幫助讀者完成“入門-進階-提高”三級跳。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    OSGi實戰(zhàn) PDF格式下載


用戶評論 (總計11條)

 
 

  •   看了180多頁,看不下去了。加上OSGI本來就晦澀難懂,翻譯水平實在是差,有些語句就不通順,不建議作為入門書籍來讀。
  •   怎么這么臟??!封面里面! 細(xì)節(jié)很重要哦! 對顧客要無上尊重!雖然說內(nèi)容是本質(zhì)! 亞馬遜不精細(xì)!
  •   內(nèi)容不錯,不過印刷質(zhì)量實在對不起讀者呀
  •   書的質(zhì)量不錯,有原版英文電子文檔,再看看中文的加深理解和消化吧
  •   有助于加深對osgi思想的理解
  •   有點像盜版的有點像盜版的有點像盜版的
  •   osgi
  •   學(xué)習(xí)osgi必備書,質(zhì)量不錯。
  •   一直在用,想系統(tǒng)看下
  •   學(xué)習(xí)一下OSGI
  •   oracle資料
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7