在Ruby中包装现有Java库的最佳方法(JRuby)

前端之家收集整理的这篇文章主要介绍了在Ruby中包装现有Java库的最佳方法(JRuby)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望在中型 Java库上放置一个ruby(J Ruby)包装器,我正在寻找有关从包装到策略的各种最佳实践的建议和文章.

我在这里找到了一个相对过时的(2009)关于这个主题的讨论:http://www.ruby-forum.com/topic/188447.

我想使用最新版本的JRuby.

解决方法

我为Java库编写了一些包装器( Eurydice,HotBunnies,MessagePack,RubydoopMikka等).其中一些只是适应Java库的JRuby代码,其中一些包括与JRuby运行时接口的Java代码( MessagePack实际上完全用Java编写).

我发现的问题并不是很好解决了如何为Java库发送JAR文件.你不想把它包含在gem中,因为那样你最终会最终进入JAR地狱.像Netty这样的常见Java库将捆绑在许多宝石中,最终你会拥有捆绑不兼容版本的宝石.我已经通过打包只包含Java库JAR的宝石解决了这个问题(参见例如scala-library-jarsning-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不兼容.

猜你在找的Ruby相关文章