我希望在中型
Java库上放置一个ruby(J
Ruby)包装器,我正在寻找有关从包装到策略的各种最佳实践的建议和文章.
我在这里找到了一个相对过时的(2009)关于这个主题的讨论:http://www.ruby-forum.com/topic/188447.
我想使用最新版本的JRuby.
解决方法
我为Java库编写了一些包装器(
Eurydice,HotBunnies,MessagePack,Rubydoop和
Mikka等).其中一些只是适应Java库的JRuby代码,其中一些包括与JRuby运行时接口的Java代码(
MessagePack实际上完全用Java编写).
我发现的问题并不是很好解决了如何为Java库发送JAR文件.你不想把它包含在gem中,因为那样你最终会最终进入JAR地狱.像Netty这样的常见Java库将捆绑在许多宝石中,最终你会拥有捆绑不兼容版本的宝石.我已经通过打包只包含Java库JAR的宝石解决了这个问题(参见例如scala-library-jars和ning-compress-jars),然后让我的包装器依赖于那个gem.它不是一个特别可扩展的解决方案,但至少它比在包装器gem中捆绑JAR更易于管理.
你的问题不清楚你想要知道什么,我建议你修改并更具体.然而,这里有一些随意的东西
>使Ruby更易于访问Java API的一种快速方法是向Java类和接口添加方法.它就像打开Ruby类一样简单(但Java接口是模块),并且可以更容易地在Ruby中使用Java对象.这些方法只能由Ruby看到,它们对Java代码不可见.>不要将java_import放入全局范围.这会给每个人带来很多麻烦.请记住,java_import与Java中的导入不同,它只是文件的本地,它实际上是在作用域中创建别名.将java_import和include_package包装在模块中.>不要使用导入 – 它与Rake不兼容.