适应OSGI需要耐心?

09-08-19 banq
         

TSS最近贴出一个OSGI粉丝的文章,他认为OSGI的主要优点是模块化,而大多数程序都没有模块化概念(banq按:jar包白打了)。对于OSGI你必须忍受它的额外消耗(banq按:给你带个套子,虽然不舒服但要清楚他的好处)。

该作者将OSGI = 软件模块化 划上等于号了,其实未必,模块化有很多方式达到,模块化是一种架构设计风格,不一定需要通过框架标准强制实现,就像REST和SOA是一种架构风格一样。

强制带上OSGI套子,就会面临新的OSGI编程模型,这个模型和一般JVM POJO编程模型还不一样,比如事件处理模式,我在下面帖子中讨论了(http://www.jdon.com/jivejdon/thread/36798),普通情况下,事件侦听模式有异步和同步之分,我们可以根据需求灵活实现,但是在OSGI中,你就很难搞清楚OSGI自己的事件是一种同步或异步?如果是其中一个,我们却需要另外一个,如何办?自己修改OSGI底层基础?

当我们为追求一种目标时,可别因为实现这个目标而牺牲更多,这和中国谚语捡了芝麻,丢了西瓜以及 按下了葫芦飘起了瓢有什么区别?

老外更多的争论:

http://www.theserverside.com/news/thread.tss?thread_id=57009

OSGI本来在客户端 终端设备中呆的好好的,后来经过Spring的鼓弄,跑到服务器端,很多人以为这是一个big thing,其实只是IOC依赖注射模式结合OSGI带来的好处。

OSGI一跑到企业服务器端,这下就象揭开了热水锅,热闹了,因为企业服务端本来就有很多概念,SOA SCA JavaEE EJB ESB等等,来了一个新人,位置呆在哪里?与这些现有概念是什么关系?是不是增加复杂性了?

企业OSGI:

http://blogs.iona.com/newcomer/archives/000357.html[url=http://blogs.iona.com/newcomer/archives/000357.html]http://blogs.iona.com/newcomer/archives/000357.html[/url]

         

colingo
2009-08-20 17:39

以前看过一点osgi,不得要领,感觉非常麻烦!!!!

banq
2009-08-20 19:36

OSGI实际类似JMS,就是将调用者和被调用者最大限度松耦合,成为client + OSGI + server模式,OSGI本质我认为是提供了一个基础事件机制,这个对于客户端终端设备很重要的,因为终端就是一个事件发生源,所以要有一个统一架构处理事件。

但是服务器端事件处理就没有客户端终端要求那么紧凑核心了,服务器端的事件机制讲究异步,讲究很宏观的分布式计算。OSGI的分布式标准今年刚出来,虽然有开源产品已经有了,和SOA等结合,过于重量。现在服务器端REST或云计算才是好的主流模式。

OSGI在编程上有些注意点,这个就是我说的套子:主要是在Jar基础上对META-INF下配置文件MANIFEST.MF做了进一步定制。然后要继承一个类,估计改为注解Annotation好些。

[该贴被banq于2009-08-20 19:37修改过]

bloodrate
2009-08-21 09:29

Eclipse能很好的模块化是因为Eclipse不用考虑数据问题,Eclipse只有程序不需要数据,企业级应用麻烦在于程序和数据不是一体,所以应用端模块化,而数据库端的麻烦还是挺大,不是说插入就能插入,说拔出就能拔出的。

hantsy
2009-10-28 14:26

看过 osgi 上开发一个helloworld 级别的 web 应用例子。。。

我的老天,真不知道,IBM 那混球为什么要还把带要 Java 企业应用中,还要成为java模块化的标准,在嵌入式领域不是挺好的吗?