什么是osgi

来源:互联网 发布:php工程师工资低 编辑:程序博客网 时间:2024/06/14 02:00

osgi干什么事? modulization模块化。


模块化。。好模糊的东东。。java不能模块化吗?java做的不够好,比如用classpath来load很多class和jar包,不保证得到合适的类只返回找到的第一个类(JAR地狱问题)。还有动态加载,常常改一个class一个jar要重启整个系统这个现在在很多系统是不合适的。我们看到有eclipse plugin及glassfish等东东装个插件不需要重启整个系统。即插即用。

怎么办?当然可以自己用java写,但是osgi提供了这个框架。


模块化还要解决一个问题就是系统间分离与交互。可以用rmi, webservice, corba等等但是cost too high. osgi可以更高效一些。


java7为解决类似问题曾作过努力(JSR277,后放弃)引入module关键字,管理依赖(osgi有部署时依赖,运行时依赖,可选依赖),这让我想起maven。 @ImportModule(name="java.se.core", version="1.7+")


osgi入门:可以从eclipse自带的equinox和felix入手。run-->run configuration-->osgi framework-->new-->deselect all bundle-->select all felix bundle and equinox.console-->run. console里出现提示符,提示framework启动成功。 输入ss,可看到已启动的bundles。

常见的还有spring-DM,apache CXF等。

0 0