|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
可是我们晓得,在开辟OSGi情况下的Bundle时最贫苦的步骤之一就是搭建编译情况。即使使用Eclipse如许高效的开辟工具,因为Bundle个数的复杂和统一Bundle的版本多样性,保护一个编译情况变得十分烦琐。经常我们必要对一个OSGi的Bundle举行二次开辟时,仅仅一个很小的修改都必要花大批的工夫往搭建专为这套程序的编译情况。我们急切但愿能够有一个运转时的编译情况来简化这些步骤,使用情况既有的依附项来对代码举行编译。
本篇文章先容OSGi的运转特征,Bundle间运转时的依附体例和JDK6所供应静态编译功效,接着一步步先容怎样使用这些特征搭建能够运行时编译的开辟情况,最初经由过程IBMSystemDirector作为示例,将开辟Bundle安装在下面演出示以给读者一个直不雅的体验。本文假定读者具有必定的OSGi基本常识和java基本常识。读完本文后,假如读者有一个OSGi的运转情况和想要编译的运转在这个情况上的java源代码,就能够自行搭建出使用这个运转情况编译出字节码文件出来以供公布及二次开辟利用的模块。
形貌了传统基于OSGi的使用程序架构:
.基于OSGi的使用程序架构
要完成文章所介绍的功效,使用程序只需满意以下体系需求:
基于恣意OSGi4的完成版本,如Knopflerfish或Equinox。
运转JDK版本6.0或以上。
归纳综合形貌了本文所要形貌的目标:
.运转时编译情况模子
个中Bundle1、2等平分别是OSGi运转环境中既存的Bundle,即OSGi已将它们对应的jar包或是字节码文件加载了出去。棕色框图则是我们要制造的OSGi运行时静态编译Bundle。
用户输出Java源代码(以命令行或是文件情势)
静态编译模块扫描一切Bundle,将运转时情况里一切的jar及class文件作为编译时依附保留。
使用JDK6供应的静态编译组件举行静态编译
编写本人的JavaFileObject对象,而且指定StandardJavaFileManager的编译目标地(这些都是JDK6静态编译组件的相干内容会在后续具体申明),便可编译出Java字节码文件
[可选]发送class文件到指定邮箱完成全部运转时编译历程。
接上去就让我们来看看如何使用JDK6静态编译组件和OSGi供应的相干功效来搭建这个运转时编译Bundle。不外在这之前,仍是有需要懂得下Bundle之间的通信体例。
<p>
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。 |
|