java - 用 Ruby (JRuby) 包装现有 Java 库的最佳方法

标签 java jruby

我希望将 ruby​​ (JRuby) 包装器放在中型 Java 库上,并且正在寻找有关从打包到策略的所有最佳实践的建议和文章。

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

我希望使用最新版本的 JRuby。

最佳答案

我已经为 Java 库(EurydiceHotBunniesMessagePackRubydoopMikka 等)编写了一些包装器。其中一些只是适配 Java 库的 JRuby 代码,其中一些包括与 JRuby 运行时接口(interface)的 Java 代码(MessagePack 实际上完全用 Java 编写)。

我发现没有很好解决的问题是如何为 Java 库发送 JAR 文件。您不想将它包含在 gem 中,因为那样您最终将陷入 JAR hell 。像 Netty 这样的常见 Java 库将捆绑在许多 gem 中,最终您将拥有捆绑不兼容版本的 gem。我已经解决了这个问题,方法是打包只包含 Java 库 JAR 的 gems(例如参见 scala-library-jarsning-compress-jars ),然后让我的包装器依赖于那个 gem。它不是特别可扩展的解决方案,但至少比将 JAR 捆绑在包装器 gem 中更易于管理。

你的问题不是很清楚你到底想知道什么,我建议你修改并更具体。然而,这里有一些随机的事情不在我的脑海中

  • 让 Ruby 更容易访问 Java API 的一种快速方法是向 Java 类和接口(interface)添加方法。它就像打开一个 Ruby 类一样简单(但 Java 接口(interface)是模块),并且可以使在 Ruby 中使用 Java 对象变得更加容易。这些方法只会被 Ruby 看到,它们不会被 Java 代码看到。
  • 不要java_import 进入全局范围。会给大家带来很多麻烦。请记住,java_import 与 Java 中的 import 不同,后者仅在文件本地,它实际上是在范围内创建别名。将 java_importinclude_package 包装在模块中。
  • 不要使用import——它与 Rake 不兼容。

关于java - 用 Ruby (JRuby) 包装现有 Java 库的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14516410/

相关文章:

java - 如何使用 Hibernate 条件调用 oracle 函数?

java - 在 Eclipse 中开发 App Engine/Java 项目时是否需要重新启动服务器?

ruby - 使用 JRuby Watir 时出现 HTTP 路径空错误

ruby-on-rails - Rails 初始化程序(使用 JRuby、Puma)at_exit 偶尔不执行

java - 在 Spring 中使用 ResponseBody 注释返回一个不工作的 Json

java - 发现需要灵感时出错 : certificate_unknown and SSLHandshakeException on Payara

jruby - 如何在 JRuby on Rails 项目中正确添加到 CLASSPATH?

jruby - 从 Java 的 JRuby 脚本顶级环境访问变量

java - 仅在完全写入并关闭后才从 HDFS 读取文件

java - 从 Android 中的 Google 翻译读取任何语言字符串