簡介: 在過去一年里,有很多關(guān)于 OSGi? 企業(yè)級應(yīng)用程序是否就緒的激烈辯論。OSGi 是一種已證實(shí)的且經(jīng)過測試的技術(shù),所以從這個(gè)意義上來說,它已經(jīng)就緒有一段時(shí)間了。缺少的是 Java? EE 程序員正確利用 OSGi 企業(yè)功能所需的工具和框架的規(guī)范與實(shí)現(xiàn)。最近發(fā)布的 OSGi Service Platform Enterprise Specification (4.2) 和 IBM? WebSphere? Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 改變了這一情況。下面將概述此新功能包以及其發(fā)展背后的原因。 本文來自于 IBM WebSphere Developer Technical Journal 中文版。 OSGi 是 Java 語言的動態(tài)模塊系統(tǒng)。IBM 是 OSGi 聯(lián)盟的初始成員之一,該聯(lián)盟旨在促進(jìn) OSGi 服務(wù)平臺的廣泛采用,確保通過網(wǎng)絡(luò)交付和管理的應(yīng)用程序和服務(wù)的互操作性。多年來,IBM 一直在 IBM Lotus? 和 WebSphere 產(chǎn)品中使用 OSGi 技術(shù)。事實(shí)上,從 IBM WebSphere Application Server 6.1 版本就開始使用 OSGi 了。用戶看不到它,因?yàn)槭褂?OSGi 是為了實(shí)現(xiàn)底層應(yīng)用程序服務(wù)器架構(gòu)的模塊化,從而使其易于開發(fā)和支持。WebSphere Foundation 一直在使用 OSGi 改進(jìn) IBM 產(chǎn)品, 現(xiàn)在 WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 (以下簡稱為 OSGi 功能包)支持您使用 OSGi 改進(jìn)自己的應(yīng)用程序和服務(wù)。 引進(jìn)企業(yè)級 OSGi 應(yīng)用程序編程模型的關(guān)鍵因素之一是確保它是整個(gè)行業(yè)認(rèn)可的標(biāo)準(zhǔn)。這是 OSGi 聯(lián)盟的企業(yè)專家組 (EEG) 的焦點(diǎn)。該企業(yè)專家組的專家由來自 Oracle、SAP、VMWare、Redhat、Progress 和 IBM 等的代表組成。許多供應(yīng)商都向該組提供專業(yè)經(jīng)驗(yàn),以確保任何標(biāo)準(zhǔn)都能夠得到廣泛支持。 在介紹 OSGi 功能包的重要內(nèi)容之前,值得花些時(shí)間概述一下它有助于解決的問題。 值得一提的是,組織使用 WebSphere Application Server 的功能部署和管理大量應(yīng)用程序。這些應(yīng)用程序通常包含公共庫。在這種情況下,應(yīng)用程序開發(fā)人員在其應(yīng)用程序中包含相同的庫就很正常。盡管這是每個(gè)應(yīng)用程序獲得預(yù)期庫的一種安全方法,但是此策略可能會占用過量內(nèi)存并使應(yīng)用程序更新變得比較困難。軟件供應(yīng)商提供了解決此問題的解決方案,但他們是針對供應(yīng)商的,并且會導(dǎo)致管理時(shí)間成本增加。 有時(shí)會在應(yīng)用程序中使用供應(yīng)商庫,通常開發(fā)人員無法控制這些庫的依賴關(guān)系。所以當(dāng)一個(gè)應(yīng)用程序使用的兩個(gè)庫具有不同且不兼容的內(nèi)部依賴關(guān)系時(shí),就會出現(xiàn)問題。例如,一個(gè)庫可能需要 ASM 3.0,而同一應(yīng)用程序使用的另一個(gè)庫可能需要 ASM 2.0。要解決這種問題,通常需要更改代碼。 總的說來,這兩個(gè)問題在 Java EE 中通常都可以解決,那么為什么要忍受 OSGi 可以解決的問題呢? OSGi 聯(lián)盟的 EEG(企業(yè)專家組)成立于 2007 年,并且制定了 OSGi 功能包實(shí)現(xiàn)規(guī)范。EEG 的目的是查看最常用的 Java EE 技術(shù)(例如,JPA、JTA、JNDI 和 JMX 等),并構(gòu)建使用部署到 OSGi 框架的應(yīng)用程序綁定技術(shù)的標(biāo)準(zhǔn)方法。 去年啟動了提供 OSGi 企業(yè)規(guī)范實(shí)現(xiàn)的兩個(gè)開源項(xiàng)目。Apache Aries 孵化器項(xiàng)目在 2009 年 9 月啟動,并具有由 Apache Geronimo 社區(qū)開發(fā)的 Blueprint 實(shí)現(xiàn)。2009 年啟動的企業(yè)模塊項(xiàng)目(Enterprise Modules Project)由 Eclipse Foundation 主辦,該項(xiàng)目與 Aries 項(xiàng)目的目標(biāo)大致相同。 在很短的時(shí)間內(nèi),就建立了許多與 Apache Aries 相關(guān)的活躍團(tuán)體。參與者包括來自 IBM、Progress、RedHat、Ericsson、SAP、Prosyst 和 LinkedIn 等的個(gè)人。由于 Blueprint 的最初貢獻(xiàn),JTA、 JPA、JNDI 和 JMX 的組件都已添加。演示如何使用這些技術(shù)(包括 Blog Sample 和 Aries Trader 應(yīng)用程序)的示例是項(xiàng)目的重要部分。 Aries 積極開發(fā)的另一個(gè)領(lǐng)域是 “應(yīng)用程序” 概念,這是將 bundle 分組為單個(gè)應(yīng)用程序或 Enterprise Bundle Archive (EBA) 的一種方式。 OSGi 功能包提供了一個(gè)整合應(yīng)用程序框架,有助于 Java EE 應(yīng)用程序開發(fā)人員利用 OSGi 企業(yè)架構(gòu)。該功能包整合了 Apache Aries 開發(fā)的組件和 WebSphere Application Server 運(yùn)行時(shí)與管理。(JPA 2.0 支持也是功能包的一部分,但在本文中不會詳細(xì)介紹它。) 具體來說,功能包交付 OSGi Blueprint Container 規(guī)范的開放社區(qū)和基于標(biāo)準(zhǔn)的實(shí)現(xiàn),并且具有將應(yīng)用程序組裝、部署和管理為 OSGi bundle 版本集合的能力。常見 Web 應(yīng)用程序的模塊設(shè)計(jì)、簡單的基于 POJO 的組件和高效數(shù)據(jù)訪問需求,都可以使用 OSGi 應(yīng)用程序和功能包的 JPA 2.0 組件解決。 功能包的一些主要功能如下所述。下面將詳細(xì)介紹這些功能以及其他一些功能。
尋找可靠和已驗(yàn)證的模塊化技術(shù)的企業(yè) Web 應(yīng)用程序開發(fā)人員,已經(jīng)有很多都轉(zhuǎn)向了使用 OSGi。IBM WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 提供了一種環(huán)境,該環(huán)境支持 Java EE 開發(fā)人員使用 OSGi 功能構(gòu)建應(yīng)用程序。 用戶對 OSGi 功能包的反饋、對 Apache Aries 的興趣,以及對現(xiàn)有 WebSphere Application Server 的興趣表明,Java EE 開發(fā)人員樂于使用 OSGi 技術(shù),并期待它提供的許多好處。 |
|