技术开发 频道

在JRuby中构建Apache Derby数据库应用程序的两种方法

【IT168技术文档】{$PageTitle=关于本教程}
Robert Thornton 有六年的 Java 语言开发经验,目前是 Daugherty Business Solutions 的顾问。他担任在 St. Louis, Mo., 领域的各种客户机上应用 Java EE 应用程序的开发人员和架构师,擅长面向对象的开发并且在工作中主要使用 Java 和 C++ 语言。

JRuby是运行在Java™ 虚拟机(Java™ Virtual Machine,JVM)中的Ruby编程语言的实现。本教程演示了如何安装和配置JRuby以连接至Apache Derby数据库。随着Ruby和Ruby on Rails变得越来越流行,JRuby成为一种广受关注的技术,在使用诸如简单的语法和闭包之类的Ruby功能时利用JVM的可移植性、安全性和类库。如果编写的是需要关系数据库的小型应用程序,或者需要能够随产品配送数据库,则Derby数据库是持久性机制的非常好的选择。本教程将向您展示连接至JRuby并从JRuby构建Derby数据库应用程序的两种方法。

开始之前

关于本教程

Apache 的 Derby 数据库是一个小型的内存中数据库,它是用作嵌入式数据库的理想选择。(参考资料 部分列出了 Derby 的完整介绍的链接。)

JRuby 是 Ruby 编程语言的纯 Java 实现。Ruby 是一种面向对象的脚本语言,适用于各种系统管理脚本、富 Internet 应用程序或者桌面应用程序。JRuby 的当前版本为 JRuby 0.9(写作本文时),因此它几乎涵盖了标准的基于 C 的 Ruby 解析程序中的所有功能。如果要将 JRuby 用于生产,则仍有一些限制需要注意,但是 JRuby 在大多数情况下都可以正常使用。JRuby 项目的两名高级开发人员最近被 Sun 雇佣,因此您可以期待 JRuby 项目将来的开发动力依然会源源不绝。由于 JRuby 位于 JVM 中,因此可以使用 Java 类库并且可以执行在 Ruby 中实现 Java 接口之类的操作。

本教程介绍了一些 JRuby 基础知识以及如何使用 Derby。参考资料 部分列出了 developerWorks 中关于 JRuby 的介绍性文章以及其他的 JRuby 教程,前者描述了截至 2004 年 JRuby(版本 0.7)的很多功能。

目的

本教程的目的在于展示如何通过 JRuby 解析程序连接并使用 Apache Derby 数据库。您将了解通过 JRuby 如何将数据插入 Derby 以及如何从 Derby 中检索数据。下面提供了与 Derby 进行交互的两种方法:

  1. 在 JRuby 中通过 Ruby 使用 JDBC
  2. 使用 Ruby 的 ActiveRecord 库(通过 ActiveRecord-JDBC 库),该库曾经作为 Ruby on Rails 的一部分开发,但是可独立用于对象关系映射(Object-Relational Mapping,ORM)

先决条件

本教程适用于熟悉 Java 代码和 JDBC 的开发人员。不要求具备 Ruby 方面的使用经验,但是懂脚本语言(Perl、Python、Ruby 等等)将使您可以更轻松地理解语法。您无需任何特定的集成开发环境 (IDE) 或工具知识。要求熟悉文本编辑器和设定环境变量。

系统要求

要运行本教程中的示例,系统必须能够运行 JVM。本教程假定 Java 环境已成功配置,因此要先下载并安装 JVM,然后再继续学习本教程。

这一次,需要能够从命令行运行 Subversion 才能完成本教程的 ActiveRecord 部分。如果需要执行 ActiveRecord 示例,则要先下载 Subversion 客户机(有关链接,请参阅 参考资料 部分),然后再继续学习本教程。

JRuby 入门

安装 JRuby,然后编写第一个 JRuby 脚本。

安装 JRuby

安装 JRuby 是一个十分简单的过程,包括解压缩分发和设定环境变量。

  1. 从 JRuby 主页下载 JRuby(请参阅 参考资料),并将其解压缩到选定目录中。
  2. 将 JRUBY_HOME 环境变量设为 JRuby 所解压缩到的目录。例如,set JRUBY_HOME=c:\java\jruby
  3. 最后,将 JRUBY_HOME 添加到 PATH 环境变量中。

编写简单的 JRuby 脚本

现在编写一个简单的 JRuby 脚本来检验环境是否已正确配置并首次查看 JRuby 的 Ruby 特征和 Java 特征。

  1. 打开文本编辑器,并创建一个包含下面一行代码的文件:puts 'Hello World'

在 Ruby 中,puts 是打印字符串的一种方法。把它看作输出字符串。这行代码等效于下面的一行 Java 代码:System.out.println("Hello World")。(有关 Ruby 的介绍性文章,请参阅“脱离 Rails 看 Ruby”教程 [developerWorks,2005 年 12 月]。)

  1. 将文件另存为 helloWorld.rb,并且返回到命令行。在此脚本上运行 JRuby 应当会显示以下结果:

jruby helloWorld.rb

     Hello World

这个结果告诉您 JRuby 已成功激活 JVM 并在其中执行了 Ruby 脚本。下一步是确保可以访问 Java 类,从而可以使用 JDBC 来连接到 Derby。

  1. 将清单 1 中所示的三行添加到 helloWorld.rb 文件中:

清单1:确保能访问 Java 类

            

require 'java'

include_class("java.lang.System")

System.out.println("Hello Java World")

当从 JRuby 脚本调用 Java 类时,需要明确地告诉 JRuby 将要引用哪些类或软件包。使用诸如 include_class 之类的 JRuby 方法可以完成该操作。要将那些 JRuby 方法导入脚本中,请使用上面的第一行(require 'java')。请将 require 视为 import 的 Ruby 等效命令。由于需要访问一个类 java.lang.System,因此需要告诉 JRuby 将要做的操作。包含该类后可以在其上引用 out.println。最后一行可以从 Java 程序中直接复制出来。

4.像以前一样从命令行运行此脚本,则应当会得到以下输出:

Hello World

Hello Java World

现在您测试了在 JRuby 中编写 Ruby 代码并且调用了 Java 类。JRuby 还有除了目前您看到的功能之外的大量功能。例如,可以在 Ruby 中实现 Java 接口。(有关 JRuby 的更详细的介绍,请参阅 参考资料 部分。)

0
相关文章