OSGi越来越风行了,得到的关注越来越多,这本来是好事,但听到的越来越多的声音都是认为OSGi对于B/S、企业应用支持的太不够,怎么说呢,这些声音挺好,至少说明发出这些声音的人肯定是想过将OSGi应用到自己的项目/产品中去,虽然这是好的,但我觉得更多的原因还是很多的人都习惯的以一种框架的观点去看OSGi,这对于OSGi而言或多或少有些不公平,为什么这么说呢?
还得从OSGi的历史讲起,OSGi的建立并不是为了企业应用这种类型,而是嵌入式的应用领域,更为准确的说是为了网络设备的管理,正是这个原因,在OSGi的规范中并没有体现出为企业应用的充分考虑,OSGi联盟的人在软件设计的观点上和Java企业应用的设计者观点非常的不同,就像OSGi联盟的主席Peter看Spring and OSGi的设计,就认为过于复杂了,OSGi的设计者们强调设计的简单(不是简陋)、以最小的代码量去实现、尽量缩小最后应用的大小,同时由于它是为了支持部署在网络设备上的软件的管理,特别的强调模块化以及动态的管理,这也就造就了OSGi在这两方面具备了充足的优势,而在支持嵌入式领域的应用自然也不必说了。
OSGi在模块化和动态管理上的优势被它带有一点关系的Eclipse组织注意到了,于是引入到了Eclipse中,随着Eclipse的引入,OSGi开始得到Java企业应用开发者的注意,但是直到今年才真正的比较广泛了,这里面当然有各大厂商的原因,这也说明了OSGi确实是得到了各大厂商的认可,在JSR 291的投票上google、sun投出的反对票仍然没有阻碍OSGi进军Java SE领域,这也算是挽回了当年JSR 277上OSGi失败的场面。
从这些发展过程中,我们可以看到,OSGi到目前受到Java企业应用界的关注阶段为止,一直以来都尚未涉足企业应用界,就连OSGi的主席Peter都承认自己对于Spring只是了解而已,可想而知,那么我们凭什么在现在的这个阶段就以企业应用级别的框架去评价OSGi的好坏呢,更不要仅仅以OSGi现阶段对企业应用支持的不够就断定OSGi在Java企业应用界一无是处,那是不是很不公平呢?
当然,现在OSGi要进入企业应用界,大家以这样的观点去看待它没什么太大的问题,至少大家评价的OSGi的不好也是对OSGi进入企业应用的一种促动的建议,只是希望大家不要纯粹以一种新的Java企业应用的框架(象Spring等)的观点去评价它,毕竟那不是OSGi的目标,OSGi并不希望成为一个新的Java企业应用的框架,在现阶段,对于大家来说,也许去学习OSGi优势的地方和不同的设计思想是我们最值得做的,相信大家也不希望等哪天OSGi成为了JDK中的一部分后再去学习吧,如果愿意尝试将OSGi应用到你现在的项目/产品中,那就更好了,我相信将以目前Equinox(OSGi R4的实现)的表现来说,将你的新的应用基于它而搭建不会碰到什么太多的问题,如果你的新的应用是基于Equinox而搭建,非常欢迎与我进行交流,以后我也会在blog中更多的贴出一些关于基于Equinox搭建企业应用的实践的文章(以前考虑到关注这些东西的人太少,就没去写了)。
OSGi现在在企业应用方面的努力工作大家有目共睹,相信在各大厂商(IBM、Oracle、BEA等)和各大开源组织(Spring、Apache)的支撑下,OSGi对于企业应用的支持会越来越好。