Java: 淺談 OSGi 標準
參考來源:愛德華日誌
維基百科
OSGi 起源於1999 年三月,是由一些家用閘道器相關產業廠商所組合而成的組織,目前約有八十餘家廠商加入。包括了 IBM、Sun、BMW、Motorola、Nortel、Nokia、 Philips、Panasonic、Sony、Toshiba、Echelon 等。目前最新的標準是OSGi Specification 3.0。
當初制定OSGi 標準的最主要的目的,是要為遠端的服務提供者 (Service Provider) 與本地端的設備 (Device) 之間提供完整的點對點服務傳送解決方案。因此,OSGi 定義了一個開放性的平台,使得遠端軟體服務供應商所提供的應用程式 及加值服務,能視使用者需求,隨時下載至靠近用戶的閘道器 (Gateway) 上,並且自動安裝執行,而這裡所指的閘道器通常是連接家庭網路(Home Network)、辦公室網路 (Office Network) 與廣域網路間的一個裝置,如機上盒 (Set-top Box;STB)、ADSL數據機、纜線數據機 (Cable Modem)、住宅區閘道器 (Residential Gateway)等。透過這個開放性的平台,不同廠商所開發出的服務軟體及設備都能互相溝通及搭配使用。
在 OSGi 網站上的 FAQ 中,指出 OSGi 應用方向包括:
- Services in the Home:
-
- Communication
- Information/entertainment
- Safety and security monitoring
- Energy management and metering
- Appliance diagnostics and servicing
- Telemedicine and healthcare monitoring
- Services in the Car:
-
- Navigation
- Emergency assistance
- Mobile commerce
- Information/entertainment
- Vehicle diagnostics
- Location-based services
Again, we see java succeeded in J2ME. We can see many big-name companies in the OSGi member name list which include many companies come from many industries.
最近 OSGi 在軟體業最為人雀躍的發展,莫過於 Eclpise Java IDE 支援 OSGi 標準。這是一個有趣的現象,本來是設計給其他產業的運用,卻在軟體業也有不凡的表現。這也讓我想起 Java 的發展歷史,本來也是為了 embedded 系統而設計,卻意外的在 internet 竄起的年代獲得各方的矚目,更在 enterprise application 中立於不敗之地...
JMX 與 OSGi 在功能上的許多重疊之處,在國外已經有人討論過 (例如 Eclipse Embeds OSGi Based MicroKernel 及 JMX vs. OSGi - The New Flavor of the Eclipse Runtime)。不過我認為重點是:
- JMX 本來設計的用途就只為了管理,我們不該把他拿來 (over use) 作為開發應用程式的元件 (那是 EJB 或 JavaBeans 該做的事)。但 OSGi 卻可以!
- JMX 多數用於 server 系統中,而 OSGi 卻不限於所開發的應用程式。你可以用它開發 embedded 系統、desktop 程式,甚至是 server 程式。
OSGi 不但提供了與 JMX 相似的容器管理能力,甚至它本身就是一套精密的 Framework。OSGi 採用Micro-Kernel 的架構,可以提供無限延伸的功能。OSGi 的 Bundles 線上更新功能、以及應用程式之微量記憶體執行能力,都是開發應用程式的利基。
OSGi 與 J2EE 在設計上,我覺得完全是兩種思維模式:J2EE 的思維是 build on large scale,OSGi 的思維是 build on dynamic scale。OSGi 以小搏大...
OSGi Resources:
- Welcome to the OSGi Alliance - OSGi official web site
- ServiceBinder - Automatic service dependency management in OSGi
註:
目前我看到與 OSGi 有關的 JSR 為:
- JSR 8: Open Services Gateway Specification (OSGi)
- JSR 232: Mobile Operational Management
沒有留言:
發佈留言