• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > 利用RJB在Ruby on Rails中使用Java代码的教程

利用RJB在Ruby on Rails中使用Java代码的教程

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了ruby on rails,ruby on rails教程,ruby on rails安装,ruby on rails下载,ruby on rails指南等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

开始之前
关于本教程

Ruby on Rails (Rails) 是用 Ruby 编写的一个 full-stack Web 应用程序框架,而 Ruby 是一种功能丰富的、免费的、可扩展的、可移植的、面向对象的脚本编制语言。Rails 在 Web 应用程序开发人员之间非常流行。通过它,可以快速有效地开发 Web 应用程序,并将其部署到任何 Web 容器中,例如 IBM? WebSphere? 或 Apache Tomcat。

在 Rails 和类似的 Web 应用程序开发框架出现之前,用于 Web 应用程序开发的标准工具是 Java 语言,因为 Java 语言是独立于平台的,并且有完整的 API 集。很多 Java Web 应用程序仍然在运行,这导致很多非常有用的、编写良好的 Java 代码(在本教程中统称遗留 代码)具有良好的可用性。遗留 Java 代码通常被打包在一组 JAR 文件。

如果将 Web 应用程序开发平台改为 Rails,那么可以重用遗留 Java 代码。Ruby Java Bridge (RJB) 是一个工具包,通过它可以将 JAR 文件装载到 Rails 应用程序中,还可以在 Rail 应用程序中访问其中的方法和变量。本教程解释如何在 Rails 应用程序中配置和使用 RJB。
目标

在本教程中,您将学习如何:

  •     下载、编译和安装 RJB
  •     设置 RJB 以访问共享 Java 库
  •     将遗留 Java 代码装载到 Rails 应用程序中并进行访问

本教程并不深入研究 Rails 的功能。与其他 Web 框架相比,Rails 有很多优点,其中一个优点就是用于该平台的文档的数量和质量都很高(参见参考资料)。
先决条件

本教程假设读者基本熟悉 Java 语言、Ruby 和 Ruby on Rails。
系统需求

本教程假设您使用 Linux? 系统(但是,在 Windows? 上的步骤基本上是相同的)。本教程假设您有一个可以工作的 Ruby on Rails。如果还没有,请在 参考资料 小节中找到相关文档的链接,以帮助您在自己的系统上安装和配置 Rails。

RJB 要求系统上安装有 Java SDK。如果需要一个 Java SDK,可以针对您的平台下载最新的 Java SE SDK,并马上安装它。

RJB 安装和设置

本节带您亲历 RJB 的下载、安装、编译和设置。
下载 RJB

可以下载标准 Ruby Gem 包或自己编译的源代码归档文件形式的 RJB。为了进行演示,我推荐下载源代码归档文件,所以我将使用这种方法。闲话少说,现在就 下载 RJB 1.1.3 source .zip 文件(在撰写本教程之际,已经有了最新的 RJB 版本)。

确保设置或更新了以下环境变量,它们是安装 RJB 所必需的:

  •     JAVA_HOME 必须指向 Java SDK 安装目录。
  •     PATH 必须包括 $JAVA_HOME/bin。

例如,在 bash(仅用于 Linux 系统)中,假设已经将 Java SDK 安装到 /usr/local/jdk60,则执行以下命令:

[root@san]# export JAVA_HOME=/usr/local/jdk60

[root@san]# export PATH=$PATH:$JAVA_HOME/bin

</div>

编译和安装 RJB

下一步是通过执行以下命令编译和安装 RJB:

[root@san]# unzip rjb-1.1.3.zip

[root@san]# cd rjb-1.1.3

[root@san]# ruby setup.rb config

[root@san]# ruby setup.rb setup

[root@san]# ruby setup.rb install

</div>

确认安装成功

为了确认 RJB 安装成功,首先调用 Ruby 的交互式控制台 irb:

[root@san]# irb

</div>

然后输入 require 'rjb':

irb(main):001:0> require 'rjb'

=> true

irb(main):002:0>exit

</div>

如果 require 'rjb' 命令返回 true,则意味着 Ruby 安装识别出新安装的 rjb 库。现在可以在应用程序中开始使用 RJB。

通过 RJB 使用遗留代码

在本节中,您将在 Rails 应用程序中装载和访问遗留 Java 代码。
示例项目

Java Tar package from ICE Engineering 是用 Java 语言编写的一个很好的工具包,用于处理归档文件。它提供了 tar 归档实用程序的本地 Java 实现,当与 java.util.zip 包相结合时,它可以处理 .tar.gz 文件。它还利用 Java 语言的平台独立性,可以不作修改地在所有 UNIX? 变体和 Windows 上运行。作为练习,您将使用它来解压一个样例 tar 文件的内容。通过类似的方法,可以在 Ruby on Rails 应用程序中使用任何遗留 Java 代码。

练习的目标是:

  •     将 tar.jar 文件装载到一个 Rails 应用程序中。
  •     将 JAR 文件所需的类装载到应用程序中。
  •     解压使用这些类的样例 test.tar 文件的内容。

入门
获取样例文件

首先,需要为系统获取样例 tar 文件(test.tar)和 Java Tar 包:

  •     将test.tar 下载并保存 到一个方便的位置。
  •     下载和保存javatar-2.5.tar.gz。
  •     将 javatar-2.5.tar.gz 的内容解压到一个方便的位置。这个练习中,这个包中惟一需要用到的文件是 tar.jar,它在 jars 目录中。

访问共享库

RJB 使用 Java Native Interface (JNI) 实现它的功能。因此,它需要访问 JDK 安装中附带的一些共享对象文件(共享库)。您必须使用以下命令将这些文件的位置添加到 LD_LIBRARY_PATH 环境变量中:

[root@san]# export JAVA_HOME=/usr/local/jdk60

[root@san]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/i386

[root@san]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/i386/client

</div>

如果打算在独立的 Ruby 脚本中使用 RJB,那么只需在正在处理的 shell 中设置这些环境变量。对于您的 Ruby on Rails 应用程序,还必须在 Rails 应用程序的 environment.rb 文件中设置这些变量。
将 RJB 装载到 Rails 应用程序

要将 RJB 装载到 Rails 应用程序并将它设置为可以调用 Java 类,需要执行两个步骤:

  1.     告诉 Ruby 将 rjb 库包含到代码中。
  2.     装载 JVM,设置类路径和其他可选的 JVM 参数。

首先,使用下面的命令初始化 RJB:

require 'rjb'

</div>

接着,将 Rails 应用程序中将要使用的所有 legacy .jar 文件 — 本例中为 tar.jar — 添加到 classpath 变量:

Rjb::load(classpath = '.:/path/to/tar.jar', jvmargs=[])

可以将 jvmargs 留空,除非希望为 JVM 指定额外的参数。

现在,可以将准备使用的 Java 类导入到 Ruby 中,实例化这些类,并调用所需的方法。
将 Java 类导入到 Ruby 并实例化

清单 1 中的 Ruby 代码从 tar.jar 包中导入了需要的 Java 类,并从导入的类中创建了 Ruby 对象:
清单 1. 将 Java 类导入到 Ruby 并实例化

tararchive = Rjb::import('com.ice.tar.TarArchive')

fileinputstream = Rjb::import('java.io.FileInputStream')

file = Rjb::import('java.io.File')

file_instance = file.new_with_sig('Ljava.lang.String;','.')

fileinputstream_instance =
fileinputstream.new_with_sig('Ljava.lang.String;','test.tar')

tararchive_instance =
tararchive.new_with_sig('Ljava.io.InputStream;',fileinputstream_instance)

p "Let's verify that the objects created are indeed of the classes we
wanted..."
p "------------------------------"

p "For the File instance...."
p "Expecting: java.io.File , it is: " + file_instance._classname
p "------------------------------"

p "For the FileInputStream instance...."
p "Expecting: java.io.FileInputStream , it is: " +
fileinputstream_instance._classname
p "------------------------------"

p "For the TarArchive instance...."
p "Expecting: com.ice.tar.TarArchive , it is: " +
tararchive_instance._classname

</div>

导入 Java 类

清单 1 中的前三行将调用 RJB 的 import 方法,将所需的类分别导入到 Ruby 变量 tararchive、fileinputstream 和 file 中。必须指定类的

您可能想查找下面的文章:

  • Rails bundle命令安装mysql gem包出错的解决方法
  • win7安装ruby on rails开发环境
  • 简单对比分析Ruby on Rails 和 Laravel
  • 在 Ubuntu 12.04 Server 上安装部署 Ruby on Rails 应用
  • 快速正确的安装 Ruby, Rails 运行环境
  • Windows下Ruby on Rails开发环境安装配置图文教程
  • Ruby On Rails中如何避免N+1问题
  • 艰难完成 nginx + puma 部署 rails 4的详细记录
  • 浅谈Rails 4 中Strong Parameters机制
  • Rails命令行常用操作命令简明总结

相关文章

  • rudy 继承 概念
  • ruby 存取器 概念
  • ruby开发的交互式程序例子
  • RVM安装和使用总结笔记
  • Ruby使用C++扩展实例(含C++扩展代码示例)
  • 实例讲解Ruby使用设计模式中的装饰器模式的方法
  • CentOS中配置Ruby on Rails环境
  • 浅析Ruby中的Profiling工具的用法
  • Ruby程序中创建和解析XML文件的方法
  • Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby 字符串处理
    • Ruby的字符串与数组求最大值的相关问题讨论
    • GitHub倡导的Ruby代码编写风格总结
    • Ruby入门介绍第1/5页
    • 用SparkR探索电商数据
    • Ruby优化继承类实例
    • Ruby中遍历目录的简洁方法
    • ruby判断一个数是否为质数(素数)示例
    • Ruby on Rails所构建的应用程序基本目录结构总结
    • 实例讲解Ruby中的钩子方法及对方法调用添加钩子

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有