在Ruby on Rails应用程序中重用Java代码 - 编程入门网
e
# specify the full package path to the classes.
tararchive = Rjb::import(''com.ice.tar.TarArchive'')
fileinputstream = Rjb::import(''java.io.FileInputStream'')
file = Rjb::import(''java.io.File'')
# Create objects of the classes. Use the new method directly or use
# the ''new_with_sig'' call to invoke overloaded constructors with arguments
# Directory you want to extract the files in this case, the current directory
file_instance = file.new_with_sig(''Ljava.lang.String;'',''.'')
# inputstream instance of the file to extract
fileinputstream_instance = fileinputstream.new_with_sig (''Ljava.lang.String;'',''test.tar'')
# tararchive instance of the file to be extracted.
tararchive_instance = tararchive.new_with_sig (''Ljava.io.InputStream;''\
,fileinputstream_instance)
# Invoke the method from the class and capture the results.
# Use either the direct call of the method,
# or the ''_invoke'' call to invoke overloaded methods.
p ''Extracting file.....''
tararchive_instance.extractContents(file_instance)
p ''Done...''
尝试这些代码,将清单 2 中的代码保存到一个文件中,并且扩展名为 .rb( 或使用 下载 中的 rjb-javatar.rb),然后在 Ruby 解释程序中运行。 结束语 在全新的 Rails 应用程序中重用已有的遗留 Java 代码其实非常简单,方式 如下: 安装 Java SDK 和 RJB。 将 JAVA_HOME 和 LD_LIBRARY_PATH 环境变量导出到您的 Rails 应用程序的 environment.rb 文件中。 在应用程序中包括 rjb 库。 通过指定希望使用的 JAR 文件,装载 RJB 和 JVM。 从希望使用的 JAR 文件中将类导入到 Ruby 变量并创建类的对象。 开始在 Rails 应用程序中使用刚刚创建的类,就像使用任何 Ruby 对象一样 。 如果希望在 Rails 应用程序中重用已经使用 Java 代码实现的业务逻辑, RJB 非常有用,并且不需要使用 Ruby 重新实现。它同时提供了 Ruby on Rails 和 Java 编程的优点。 考虑替代方法 还可以使用一种称为 JRuby 的替代方法,它可以实现与 RJB 相同的目标。 JRuby 是使用 Java 语言实现的完整的 Ruby 包,使 Ruby 能够运行在 JVM 之 上。使用 JRuby,您可以访问所有 Java 库。JRuby 要求安装特定于 JRuby 的 Ruby Gems,因为针对非 Java 的 Ruby 的普通 Ruby Gems 不能与 JRuby 兼容 。 RJB 和 JRuby 各有优缺点。对于 JRuby,Ruby 全部在 JVM 之上运行,每个 Ruby 调用将经过 JVM,这将使执行变得非常缓慢。同样,如果已经设置了一个 Rails 应用程序,需要从头开始设置,以便 JRuby 访问 Java 代码。作为原生 Ruby 包,RJB 易于安装,并且可以在已有的 Rails 设置中使用。如果需要在您 的 Rails 应用程序中快速调用一些 Java 代码片段,那么 RJB 是最好的选择。 整体而言,在 Rails 应用程序中重用遗留 Java 代码的能力非常有用。使用 Java 语言实现的设计和编写都非常良好的业务逻辑不会搁置不用,相反,可以 在新的 Web 应用程序中继续发挥有用的功能。 本文配套源码 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |