OSGi
OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。这些组件能够组装进一个应用和部署中。
主要两个特性
模块化/动态化(热部署)
基于OSGI能让我们在开发时真正的做到面向接口的开发,尽管面向接口的开发的思想已经被几乎所有的开发人员所接受,但由于有些时候偷懒或者无意中就直接去引用了实现的类,尽管象A a=new AImpl()这样的代码在Factory模式、IoC容器得到认同后出现的已经很少了,但无论是采用Factory模式还是IoC容器都是在设计期隐性的对实现设置了直接的依赖,而非运行期去寻找可用的依赖的,而同样由于A a=new Aimpl()还是可以直接的写,导致了有些时候还是会出现这样的强制依赖的代码,而OSGI提供为每个Bundle提供独立的ClassLoader机制的方法则让我们可以真正的做到面向接口的开发
对于系统开发方面,产生的影响主要是让单元测试显得更为重要了,毕竟所有的依赖都是动态设置的,要依靠集成测试来发现问题就显得更为麻烦了,所以基于OSGI的系统会更多的依赖Mock进行单元测试,其他的影响就是不再通过引用lib或project的方式来设置对于其他工程的依赖等等。
规范的模块开发方式其实是大部分软件公司都期盼的,规范的模块开发方式就意味着规范的人员技能培养体系以及规范的人员技能要求,这对于软件公司来讲是很重要的。
但为什么大部分软件公司都形成不了规范的模块开发方式呢,因为没有统一的规范的基础架构体系的定义,往往每个项目、每个产品都会因为架构师的偏好、技术的发展而导致模块的开发方式完全不同,这就使得软件公司在人员技能要求、培养上很难形成统一,而OSGI为这个问题提供了解决方案,基于OSGI的系统采用规范的模块开发、部署方式构建系统。
插件体系
Eclipse
Portal-portlet
OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。这些组件能够组装进一个应用和部署中。
主要两个特性
模块化/动态化(热部署)
基于OSGI能让我们在开发时真正的做到面向接口的开发,尽管面向接口的开发的思想已经被几乎所有的开发人员所接受,但由于有些时候偷懒或者无意中就直接去引用了实现的类,尽管象A a=new AImpl()这样的代码在Factory模式、IoC容器得到认同后出现的已经很少了,但无论是采用Factory模式还是IoC容器都是在设计期隐性的对实现设置了直接的依赖,而非运行期去寻找可用的依赖的,而同样由于A a=new Aimpl()还是可以直接的写,导致了有些时候还是会出现这样的强制依赖的代码,而OSGI提供为每个Bundle提供独立的ClassLoader机制的方法则让我们可以真正的做到面向接口的开发
对于系统开发方面,产生的影响主要是让单元测试显得更为重要了,毕竟所有的依赖都是动态设置的,要依靠集成测试来发现问题就显得更为麻烦了,所以基于OSGI的系统会更多的依赖Mock进行单元测试,其他的影响就是不再通过引用lib或project的方式来设置对于其他工程的依赖等等。
规范的模块开发方式其实是大部分软件公司都期盼的,规范的模块开发方式就意味着规范的人员技能培养体系以及规范的人员技能要求,这对于软件公司来讲是很重要的。
但为什么大部分软件公司都形成不了规范的模块开发方式呢,因为没有统一的规范的基础架构体系的定义,往往每个项目、每个产品都会因为架构师的偏好、技术的发展而导致模块的开发方式完全不同,这就使得软件公司在人员技能要求、培养上很难形成统一,而OSGI为这个问题提供了解决方案,基于OSGI的系统采用规范的模块开发、部署方式构建系统。
插件体系
Eclipse
Portal-portlet