最近很忙,虽然也不知道忙些啥,但总也抽不出时间来看OSGi,但看过的总还要总结总结才有收获啊。
最近主要是大致了解了OSGi的动态和安全。
所谓动态,说白了就是所有的更改都是在保证JVM不重起的情况下进行的。这其中涉及到对应用程序和组件的生命周期管理,先说说管理的对象吧。大而言之就是应用程序和组件,具体到OSGi的概念体系中,称为bundle,bundle从物理上来讲,就是java语言里的jar包,它完全和普通的zip文件兼容。
具体而言对bundle生命周期的处理包括了如下几种:
OSGi提供了一个比普通java程序更安全的系统。
一般的java程序有三层安全防御措施:
OSGi框架将各个bundle严格的分离开来,在OSGi服务平台上,bundle需要允许还能与其他的bundle取得联系。
而OSGi实现动态和安全的关键就是classloader的管理,java由于对代码进行了package路径的管理,使得代码更好维护了。OSGi则从更基本的classloader入手,利用classloader实现动态和安全的目的,并有效的对classloader进行了组织和管理。
下一步的重点就是了解OSGi中的classloader是怎样的。
最近主要是大致了解了OSGi的动态和安全。
所谓动态,说白了就是所有的更改都是在保证JVM不重起的情况下进行的。这其中涉及到对应用程序和组件的生命周期管理,先说说管理的对象吧。大而言之就是应用程序和组件,具体到OSGi的概念体系中,称为bundle,bundle从物理上来讲,就是java语言里的jar包,它完全和普通的zip文件兼容。
具体而言对bundle生命周期的处理包括了如下几种:
- 安装bundle。Bundle必须是那些准备好的,不同的安装在OSGi框架中的组件,以便可以被执行。
- 起停bundle。安装在OSGi框架中的bundle可以被启动和停止。启动一个bundle可以获取特定的资源,停止bundle则清理特定的资源。在一个OSGi服务平台中,所有的应用都在同一个JVM里运行,因此也共享存储内存,资源和CPU周期。<o:p></o:p>
- 更新bundle。OSGi框架先停止已经存在的应用程序,在这之后,资源被清理了。代码被卸载,并被新的代码所代替。代码更新后,重起bundle,这些都不需要重起JVM。<o:p></o:p>
- 卸载bundle。在bundle生命结束之时,从系统里删除掉代码和相应的资源。<o:p></o:p>
OSGi提供了一个比普通java程序更安全的系统。
一般的java程序有三层安全防御措施:
- JVM自己的安全机制
- java语言的安全特性
- 基于安全的java2代码,这个就是指java代码的package路径访问(这条可选)
OSGi框架将各个bundle严格的分离开来,在OSGi服务平台上,bundle需要允许还能与其他的bundle取得联系。
而OSGi实现动态和安全的关键就是classloader的管理,java由于对代码进行了package路径的管理,使得代码更好维护了。OSGi则从更基本的classloader入手,利用classloader实现动态和安全的目的,并有效的对classloader进行了组织和管理。
下一步的重点就是了解OSGi中的classloader是怎样的。