清单3:创建 derby.rb
require 'java'
module JavaSql
include_package 'java.sql'
end
include_class("java.lang.Class") { |packagename, classname| "J" + classname}
JClass.forName("org.apache.derby.jdbc.EmbeddedDriver")
connection = JavaSql::DriverManager.getConnection("jdbc:derby:JRubyDB;create=true",
"",
"")
第一行没有新内容,但是其余代码显示了 JRuby 的一些新部分:
module JavaSql 行 —— 模块是可以看作是名称空间的 Ruby 元素。它们允许将方法、类和常量分组到一起。本文中,将创建一个 Ruby 模块,您将向其中放入 java.sql 中的所有类。由于使用的是 java.sql 软件包中的许多类,因此包含整个软件包是有道理的。请记住,包含软件包将降低脚本的运行速度。这样使用模块是访问所有这些类的便利方法。
include_class 代码行 —— 值得注意的下一行是 include_class。这是一个不同版本的 include_class 方法,因为其中使用了 Ruby 的块语法。include_class 方法将接受一个代码块(有关代码块的更多信息,请参阅 参考资料 部分中列出的一个 Ruby 教程),该代码块将用于把 Java 类 Class 重命名为 JClass。这样做是因为 Ruby 也有一个名为 Class 的类;如果不将 Java 类重命名,则会产生冲突。本文的代码块将 J 加在 Java 类名的前面。因而,Class 成为 JClass。
JClass.forName 和 connection 代码行 —— 上两行代码几乎与在纯 Java 代码中编写的完全相同。首先,惟一的差别是使用 JClass 来引用上一行中包含的 Java 版本的类 Class。最后一行与纯 Java 代码有两个主要差别: