Eclipse 、 Equinox 和 OSGi
每個(gè)成功的男人背后,都有一個(gè)偉大的女人;每個(gè)成功的產(chǎn)品后面都有一套強進(jìn)的架構 ----題記
很 多Java程序員對Eclipse(日食 ,IBM 起這個(gè)名字,Sun大概有意見(jiàn))都愛(ài)不釋手,在JBuilder流行、主流內存配置還在256M的日子里,當我第一次成功運行Eclipse后就把JBuilder徹底請出了我的電腦硬盤(pán)。不錯,這就是Elipse的魅力。
作為程序員在感受Eclipse帶來(lái)諸多好處之后,強烈的好奇心驅使我在問(wèn):Eclipse的魅力從何而來(lái)。正如我們談?wù)撘粋€(gè)美女為什么那么美一樣,造成美的因素是多方面的(上次的人物訪(fǎng)談?wù)f(shuō)節目中說(shuō):周迅是美女,有個(gè)攝影家還用尺子量周迅鼻子到下巴的距離來(lái)證明)。在Eclipse令人稱(chēng)道的很多因素中,其開(kāi)放性的插件架構無(wú)疑是最濃重的一筆。
為Eclipse開(kāi)發(fā)一個(gè)插件并沒(méi)有想象中的那么復雜,使用Eclipse 的 Rich Client Platform開(kāi)發(fā)自己的軟件界面也很容易上手。為Elipse帶來(lái)如此魔力的就是:Equinox (月食)(http://eclipse.org/equinox)。本文的題目還有一個(gè) OSGi ,OSGi 和 Equinox 的關(guān)系是什么呢?說(shuō)來(lái)話(huà)長(cháng),簡(jiǎn)單的理解,相當于 JBoss 和 Ejb specification 的關(guān)系,或者 Tomcat 和 Servlet Specification的關(guān)系。
OSGi 中的一個(gè)核心概念是: bundles。
對于Equinox來(lái)說(shuō),bundles就是一個(gè)自描述型的jar文件,描述如下:
-------------------
Bundle-SymbolicName: org.eclipse.equinox.registry
Bundle-Version:3.2.100.v20060918
Bundle-Name: Eclipse Extension Registry
Bundle-Vendor:Eclipse.org
Bundle-ClassPath: .
Bundle-Activator:org.eclipse.core.internal.registry.osgi.Activator
Export-Package:org.eclipse.equinox.registry
Import-Package: javax.xml.parsers,
org.xml.sax,
org.osgi.framework;version=1.3
Require-Bundle:org.eclipse.equinox.common;bundle-version="[3.2.0,4.0.0)"
Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3
------------------
如果單純作為一個(gè)插件機制,盡管Equinox解決方法很棒,但并沒(méi)有什么過(guò)人之處,最讓我感到驚奇的是他的“包容”能力。原文一句話(huà)說(shuō)的好:“There are twomain approaches; embedding Equinox in the servlet container or embedding theservlet container in
Equinox”。
看看下面這3個(gè)圖吧:
Figure 1: Traditional web application server structure
Figure 2: Embedding Equinox in an existing applicationcontainer
Figure 3: Embedding an applicationcontainer in Equinox
從高內聚,低耦合到從設計模式,從 Ioc 、 Spring 框架 到 SOA我們一步一步的抽象著(zhù)、分離著(zhù)。很顯然,我們需要一個(gè)靈活而不失嚴謹的架構,需要一個(gè)功能強進(jìn)而不令人生畏的產(chǎn)品;幸好,軟件科學(xué)是正是這樣一種科學(xué),他總可以加入更多的中間層來(lái)把問(wèn)題解決的更好。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。