首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

jruby环境上装载java资源

2012-12-19 
jruby环境下装载java资源jruby的好处是可以同时利用ruby和java这两大社区的积累,那么我们怎么在ruby代码中

jruby环境下装载java资源

jruby的好处是可以同时利用ruby和java这两大社区的积累,那么我们怎么在ruby代码中装载java资源呢。

?

装载java资源之前,先要require一下java,否则后续会有一些功能不能执行。

jruby-1.5.6 :010 >   include_package 'java.lang'NoMethodError: undefined method `include_package' for #<Object:0x7023d08b>from (irb):10jruby-1.5.6 :011 > module Xjruby-1.5.6 :012 >   include_package 'java.lang'jruby-1.5.6 :013 > endjruby-1.5.6 :014 > puts X::Long        Java::JavaLang::Long => nil 
?

也许你注意到了,使用include_package需要在一个module中,因为include_package这个方法是定义在核心库的Module类中的,我猜这么做是为了防止命名空间污染(有兴趣的同学可以看看Module类的源码,里面有 const_missing 相关的代码)

?

类资源装载大致就是这样,当然,这些都是在同一个classloader中,其实个人认为,有了ruby的动态能力支持和module作为作用域空间,classloader这种东西可以尽量少用了

?

更多了解,可以看看 https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby

?

最后说明一下,混合语言编程并不是个好主意,那样代码会比较难以维护。比较好的方式是,首先划清界限,然后在ruby中引入java服务接口,这是一种既可行又好用的方法。

热点排行