如何基于osgi平台开发应用app
答案:1 悬赏:70 手机版
解决时间 2021-04-04 07:41
- 提问者网友:酱爆肉
- 2021-04-03 09:21
如何基于osgi平台开发应用app
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-04-03 10:13
记得以前工作的时候,有天direct manager问我在tomcat下的应用A要使用应用B下的某个类,我告诉他是不行的,因为JDK对于类加载有命名空间,不同的命名空间之间相互不影响,即使类名相同,这也为了JVM的安全着想,所以tomcat为应用A和应用B都创建了各自类加载的命名空间从而相互不影响。
而OSGi的设计理念看上就是把各种功能及服务做成Bundle并热拔插。换句话说,应用A,B此时被当作组件存活在OSGi平台上,B中的某个类可以公开出去,让其他组件可见,或者B中的某个类实例注册到OSGi容器中(类似解耦的方式之一),这样应用A就可以类似组件一样使用应用B中的资源了。
这种模块化和热拔插的设计理念最流行的应用应该算eclipse吧,eclipse plugin就是这样加载模块化的方式,我觉得还是不错的,给我最爽的感觉就是一个应用的功能基本上都是由不同的人不同时间以组件方式被挂载到eclipse平台上面。
其实,在自己的开发工作当中也是分模块实现应用不同的功能,并因为需求是变化的,说不定哪天XX需求就不要了,要新增YY需求,为了不修改过多的代码,保持开闭原则,所以在coding的时候也是非常注意模块化设计,并达到模块的可配置性。但那只是代码级别上的模块化,代码级别的好处是模块和模块之间的相互调用非常方便,适用于有一定耦合度的情况,而OSGi貌似实现了一个JVM层面的模块化,模块与模块之间如果要耦合的话,需要以上提到的export或注册。
如果app应用比较单一,感觉就没必要了,有点大题小做。当然,如果建立这样的平台很轻松的话,又未尝不是一种新的尝试。
而OSGi的设计理念看上就是把各种功能及服务做成Bundle并热拔插。换句话说,应用A,B此时被当作组件存活在OSGi平台上,B中的某个类可以公开出去,让其他组件可见,或者B中的某个类实例注册到OSGi容器中(类似解耦的方式之一),这样应用A就可以类似组件一样使用应用B中的资源了。
这种模块化和热拔插的设计理念最流行的应用应该算eclipse吧,eclipse plugin就是这样加载模块化的方式,我觉得还是不错的,给我最爽的感觉就是一个应用的功能基本上都是由不同的人不同时间以组件方式被挂载到eclipse平台上面。
其实,在自己的开发工作当中也是分模块实现应用不同的功能,并因为需求是变化的,说不定哪天XX需求就不要了,要新增YY需求,为了不修改过多的代码,保持开闭原则,所以在coding的时候也是非常注意模块化设计,并达到模块的可配置性。但那只是代码级别上的模块化,代码级别的好处是模块和模块之间的相互调用非常方便,适用于有一定耦合度的情况,而OSGi貌似实现了一个JVM层面的模块化,模块与模块之间如果要耦合的话,需要以上提到的export或注册。
如果app应用比较单一,感觉就没必要了,有点大题小做。当然,如果建立这样的平台很轻松的话,又未尝不是一种新的尝试。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯