`
tedeyang
  • 浏览: 328013 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于OSGI的观察和思考

    博客分类:
  • JAVA
阅读更多

国庆假期有点了空闲,得以有时间搞点新东西.

这几天把OSGI好好地考察了一下,因为年初Spring DM Server被SpringSource捐献给Eclipse基金会,最近在spring主页上看到Virgo项目的踪迹,我才后知后觉.

这其实意味着Spring对OSGI进行研究和探索的终结:OSGI还无法成为企业级JAVA的主流 ,曙光尚远,让开源社区去解决吧.

 

 

Spring的blog : http://blog.springsource.com/2010/01/12/dm-server-project-moves-to-eclipse-org/

Theserverside讨论 : http://www.theserverside.com/discussions/thread.tss?thread_id=59183

这里的争论非常多,大部分都对OSGI持否定态度,认为是下一个Corba,EJB1\2,DCE之流,太复杂.IBM的websphere小组来也露了露脸(被后面的人k),jdon的老彭也来贴link :)!

也有一些人在实践OSGI,并持很认可的态度.

公认的是:OSGI的学习曲线非常陡峭!

 

对我来说OSGI这个名词出现已经很久了,原先在99bill工作时,他们已经开始动态模块的探索,在项目拆分上有意识地向这此靠拢.从那时候起我开始注意OSGI能不能实际应用.经过一段时间的阅读和理解,我觉得OSGI有以下特点:

1,动态,通过Activator接口实现LifeCycle管理.

2,模块,通过bundle和独立的classloader实现类隔离,用export,service,share实现模块间共享.

3,依赖,处理类库依赖.

4,管理,提供模块的管理能力.

5,单JVM,这个很重要,却没人提到.

 

我归纳OSGI的作用是:在单个JVM上共存多个能热切换的module,实现application的模块化.

这决定了OSGI适合干什么呢?就是像eclipse这种应用:单机应用,非分布式,内部设计精耕细作,模块化插件化需求迫切,软件生命周期长.

OSGI想要解决的问题其实在各个领域都有解决方案,尤其在互联网行业,目前正处于分布式时代,通过ESB,SOA,http,socket rpc进行系统架构是行之有效的大规模集成方案,模块的粒度是服务器,既能满足扩展性需求,也能满足热插拔模块化(譬如切换JDNI,Queue,DNS,IP...等等),这些层次OSGI无能为力.

OSGI立足于单个JVM,大规模java应用不需要它,小规模开发呢?太繁了!处理多个模块的规划,依赖和启动顺序就需要个架构师.

两头不着落,在目前的时代,OSGI是尴尬的,它注定不是时代风向标,但确实是构建模块化软件体系的指导思想,即便是设计分布式应用也有很强的借鉴意义.

 

今天是抗美援朝战争爆发60周年,我们接着解放思想,

跳出Java的框框,哪里需要什么OSGI,script language才是天然的热插拔王者...呵呵,做网站,还是得php之流.

 

 

分享到:
评论
17 楼 peterwei 2011-01-05  
还没看过这方面的东西,当扫盲了。
16 楼 leversss 2011-01-05  
OSGI复杂自然有它的道理,当然并不是所有的系统都要用OSGI,就算是要热插拔,也不是非得用OSGI。而且OSGI规范中明确说明,动态加载不是必须要实现的。也就是说,动态加载只是个附属功能,绝对不是核心。
让一个产品发展到一定规模以后,它的复杂度就会增加,各种系统间依赖关系错综复杂,这些复杂的关系中还伴随着各个模块的版本造成系统混乱,这个时候,用OSGI,才会发现它好处。一个技术,你需要真正在实际需求中使用它,才能发现它的魅力。
有句话大大的不妥:"OSGI立足于单个JVM,大规模java应用不需要它" 
15 楼 carydeepbreathing 2010-11-17  
tedeyang 写道
liaoxw 写道
我已经在及时通讯服务器中应用了OSGi,已经有一年多时间,用OSGi先要有系统分析要够清晰,开发和测试可以用其实方面来补充,

是为了不重启服务吗?

显然,osgi 热插拔是它的一大性啊,同意上面的说的,OSGI 运用的好坏取决于你对系统的分析的程度
14 楼 tedeyang 2010-11-02  
liaoxw 写道
我已经在及时通讯服务器中应用了OSGi,已经有一年多时间,用OSGi先要有系统分析要够清晰,开发和测试可以用其实方面来补充,

是为了不重启服务吗?
13 楼 liaoxw 2010-10-18  
我已经在及时通讯服务器中应用了OSGi,已经有一年多时间,用OSGi先要有系统分析要够清晰,开发和测试可以用其实方面来补充,
12 楼 hyhongyong 2010-10-08  
目前正在使用osgi构建一系列的产品基础
只能说osgi技术还不是特别成熟,特别是开发和测试效率确实要低一些
好不好,用用才知道
11 楼 snow8261 2010-10-08  
osgi技术感觉比较鸡肋。
10 楼 flysheet 2010-10-08  
<div class="quote_title">tedeyang 写道</div>
<div class="quote_div">
<p>国庆假期有点了空闲,得以有时间搞点新东西.</p>
<p>这几天把OSGI好好地考察了一下,因为年初Spring DM Server被SpringSource捐献给Eclipse基金会,最近在spring主页上看到Virgo项目的踪迹,我才后知后觉.</p>
<p>这其实意味着Spring对OSGI进行研究和探索的终结:<strong>OSGI还无法成为企业级JAVA的主流</strong>
,曙光尚远,让开源社区去解决吧.</p>
<p> </p>
<p> </p>
<p><strong>Spring的blog</strong>
: http://blog.springsource.com/2010/01/12/dm-server-project-moves-to-eclipse-org/</p>
<p><strong>Theserverside讨论</strong>
: http://www.theserverside.com/discussions/thread.tss?thread_id=59183</p>
<p>这里的争论非常多,大部分都对OSGI持否定态度,认为是下一个Corba,EJB1\2,DCE之流,太复杂.IBM的websphere小组来也露了露脸(被后面的人k),jdon的老彭也来贴link!</p>
<p>也有一些人在实践OSGI,并持很认可的态度.</p>
<p>公认的是:OSGI的学习曲线非常陡峭!</p>
<p> </p>
<p>对我来说OSGI这个名词出现已经很久了,原先在99bill工作时,他们已经开始动态模块的探索,在项目拆分上有意识地向这此靠拢.从那时候起我开始注意OSGI能不能实际应用.经过一段时间的阅读和理解,我觉得OSGI有以下特点:</p>
<p>1,动态,通过Activator接口实现LifeCycle管理.</p>
<p>2,模块,通过bundle和独立的classloader实现类隔离,用export,service,share实现模块间共享.</p>
<p>3,依赖,处理类库依赖.</p>
<p>4,管理,提供模块的管理能力.</p>
<p>5,单JVM,这个很重要,却没人提到.</p>
<p> </p>
<p>我归纳OSGI的作用是:在单个JVM上共存多个能热切换的module,实现application的模块化.</p>
<p>这决定了OSGI适合干什么呢?就是像eclipse这种应用:单机应用,非分布式,内部设计精耕细作,模块化插件化需求迫切,软件生命周期长.</p>
<p>OSGI想要解决的问题其实在各个领域都有解决方案,尤其在互联网行业,目前正处于分布式时代,通过ESB,SOA,http,socket rpc进行系统架构是行之有效的大规模集成方案,模块的粒度是服务器,既能满足扩展性需求,也能满足热插拔模块化(譬如切换JDNI,Queue,DNS,IP...等等),这些层次OSGI无能为力.</p>
<p>OSGI立足于单个JVM,大规模java应用不需要它,小规模开发呢?太繁了!处理多个模块的规划,依赖和启动顺序就需要个架构师.</p>
<p>两头不着落,在目前的时代,OSGI是尴尬的,它注定不是时代风向标,但确实是构建模块化软件体系的指导思想,即便是设计分布式应用也有很强的借鉴意义.</p>
<p> </p>
<p>今天是抗美援朝战争爆发60周年,我们接着解放思想,</p>
<p>跳出Java的框框,哪里需要什么OSGI,script language才是天然的热插拔王者...呵呵,做网站,还是得php之流.</p>
<p> </p>
<p> </p>
</div>
<p>    最近也在考虑学习这个东西,出于开发某个应用的需要</p>
9 楼 kkndone 2010-10-08  
侵入性太强,注定曲高和寡
8 楼 tedeyang 2010-10-08  
zhu_chen001 写道
没有同路人啊,开发起来感觉OSGi很容易提高软件内在的质量,至于复杂性吗,的确很高,上手困难。但是随着规范的深入,感觉未来的前景还是在OSGi

感兴趣
你们通过什么方式提高了软件的内在质量?
是不得不拆分接口和实现,还是必须的模块化和生命周期设计?
这些好处不用OSGI也能得到啊。
7 楼 ray_linn 2010-10-08  
zhu_chen001 写道
没有同路人啊,开发起来感觉OSGi很容易提高软件内在的质量,至于复杂性吗,的确很高,上手困难。但是随着规范的深入,感觉未来的前景还是在OSGi



一个很复杂的东西很难提高软件的质量,只怕会导入更多的问题。。。。
6 楼 zhu_chen001 2010-10-08  
没有同路人啊,开发起来感觉OSGi很容易提高软件内在的质量,至于复杂性吗,的确很高,上手困难。但是随着规范的深入,感觉未来的前景还是在OSGi
5 楼 bonny 2010-10-08  
06年的时候接触 感触和
phz50 写道
引用
OSGI的学习曲线非常陡峭

同意,曾经学过一段时间,感觉OSGI有点复杂,且没看到实质性的好处。
一样  就放弃了
4 楼 cuiran 2010-10-08  
元旦的时候开始学习,主要是osgi消息服务。
3 楼 傅庆岩 2010-10-08  
osgi模块化的思想是主流 但是他的那些优点,热部署等,其实并不是在实际应用中急需解决 osgi 道远。
2 楼 mercyblitz 2010-10-03  
去年就研究过,发现它不太方便。

ClassLoader的问题急需解决,期待JDK7的带来啊!
1 楼 phz50 2010-10-03  
引用
OSGI的学习曲线非常陡峭

同意,曾经学过一段时间,感觉OSGI有点复杂,且没看到实质性的好处。

相关推荐

    一个关于osgi的例子

    而OsgiDemo则可能包含了可执行文件,用户可以直接运行以观察OSGi环境中的服务交互和运行效果。 在OSGi中,每个模块称为一个Bundle,它包含类、资源和元数据,可以理解为Java的增强版JAR文件。这些Bundle可以通过...

    OSGI入门和例子

    7. **OSGI实战.pdf**:这本书可能是关于OSGI实际应用的指南,可能涵盖了从基础概念到高级特性的讲解,包括如何创建bundle、配置服务、处理依赖关系等。 8. **dist.rar和code.rar**:这两个文件可能包含示例代码或者...

    关于OSGI的详细资料

    ### 关于OSGI的详细资料 #### OSGI概述与SpringDM关系 OSGi(Open Service Gateway Initiative)是一个模块化平台标准,它提供了一种将应用程序和服务分解为小的、可重用组件的方法。这些组件被称为bundles,它们...

    osgi,林昊写的osgi实战和进阶

    OSGI(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发者将应用程序分解为一系列可独立部署、更新和交互的服务。林昊所著的《OSGI实战》与《OSGI进阶》是深入理解OSGI技术的重要参考资料,适合...

    OSGI入门和整合Spring

    OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和动态的Java应用程序。它提供了模块化的类加载系统,使得不同的模块(称为bundles)可以独立地存在和更新,而不会影响其他模块。这种特性...

    关于OSGI分布式开发简单连接数据库

    以下是一些关于如何在OSGI环境中配置和使用数据库连接的知识点: 1. **服务注册与发现**:在OSGI框架中,数据库连接通常通过服务注册来实现。你可以创建一个提供数据库连接的模块(bundle),并在该模块中注册一个...

    OSGI原理和实现

    ### OSGI原理和实现深度解析 #### 一、OSGI概述 OSGi(Open Service Gateway Initiative)是一种Java平台上的模块化系统和动态模块化能力的实现,它为开发复杂的应用程序提供了一种灵活的框架。OSGi允许将应用程序...

    OSGI 开发文档中文的

    在“OSGI开发文档中文的”这个资源中,你可以找到关于OSGI技术的详细指导。这份文档可能涵盖了以下几个关键知识点: 1. **OSGI基本概念**:包括bundle、服务、生命周期(启动、停止、暂停、更新和卸载)以及类加载...

    基于OSGi的热插拔观察者模式

    总的来说,OSGi的动态部署特性与观察者模式相结合,为Java应用程序提供了强大的灵活性和适应性,使得开发者能够应对复杂、变化的业务需求,同时保持系统的稳定性和可靠性。在开发过程中,结合OSGi的生命周期管理和...

    基于OSGi和Spring开发Web应用.doc

    "基于OSGi和Spring开发Web应用" OSGi(Open Service Gateway Initiative)是一种面向服务的框架,能够提供动态模块部署和管理的能力。Spring 是一个轻量级的J2EE开发框架,特点是面向接口编程和非侵入式的依赖注入...

    OSGI 实例eclipse插件开发

    OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许应用程序由一系列可独立更新和替换的模块组成,这些模块称为“bundle”。在本实例中,我们将探讨如何利用OSGI技术来开发Eclipse...

    spring-osgi 入门手册和代码

    综上所述,Spring OSGi 结合了 Spring 的强大功能和 OSGi 的模块化优势,为开发可扩展、动态和灵活的应用提供了强大工具。通过学习和实践,你可以构建更健壮、更易于维护的 Java 应用。提供的压缩包文件可能包含了...

    osgi介绍osgi介绍

    在OSGi中,应用程序被分解为称为“bundle”的独立单元,这些bundle可以相互依赖并独立地加载、启动、更新和卸载,而无需重启整个系统。OSGi的核心理念是促进组件化开发,提高软件的可维护性、可扩展性和可重用性。 ...

    OSGI实战和OSGI进阶打包提供

    其中,"OSGI实战.pdf"着重于实践操作,而"osgiopendoc2.pdf"可能包含了更多关于OSGI的进阶话题和技术细节。 总之,掌握OSGI技术对于提升Java开发的灵活性和可维护性具有重要意义。通过深入学习和实践,开发者能够...

    OSGI资料,OSGI进阶,OSGI实战,OSGI入门和整合Spring

    OSGI(Open Services Gateway Initiative)是一种开放标准的Java模块化系统,它允许开发人员将应用程序分解为一组可独立更新和管理的模块。这些模块被称为服务,它们之间通过接口进行交互,使得OSGI环境下的组件化...

    OSGI规范中文版

    OSGi(Open Services Gateway Initiative)是一种在Java平台上进行模块化编程的规范,它为Java应用提供了动态化、服务化和模块化的运行环境。OSGi规范定义了一组核心的Java包和Java类的框架,允许一个应用程序或组件...

    OSGI组件编程(osgi.component.programming)

    OSGI组件编程是一种在Java平台上构建模块化应用程序的方法,它由OSGi联盟制定标准,并被广泛应用于企业级软件开发,尤其是对于需要高度可扩展性和动态性的系统。在本教程中,我们将深入探讨如何使用Eclipse和Equinox...

    OSGI 入门资料PDF

    OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和动态的Java应用程序。它为Java开发人员提供了一个框架,使他们能够构建可热插拔的组件,从而实现更灵活、可扩展和可维护的软件系统。在本...

Global site tag (gtag.js) - Google Analytics