混合 Java 和 Ruby 应用程序
来源:互联网 发布:mysql order by 编辑:程序博客网 时间:2024/06/07 16:05
(源自:http://www.netbeans.org/kb/60/ruby/java-ruby_zh_CN.html)
混合 Java 和 Ruby 应用程序
撰稿人: Beth Stearns Beth Stearns
2007 年 10 月[修订号:V6.0-1]
本文适用于 NetBeans IDE 6.0 发行版
本文将演示如何使用 NetBeans IDE 结合 Ruby 和 Java 应用程序。
内容
- 本文需求- 创建 Java 项目- 编辑 Java 项目- 编写 Rails 应用程序
本文需求
本文将介绍如何将 Ruby 应用程序和 Java 应用程序结合在一起。然后,本文将演示 NetBeans IDE 6.0 中的一些最新的 Ruby 功能。
本文有以下需求:
- Ruby 编程技术的基础知识
- 计算中已安装 NetBeans IDE 6.0 with Ruby(下载)
建立操作
首先,需要执行一些建立任务,主要涉及数据库的建立和 TopLink JAR 文件的添加。下面将介绍如何在数据库表中添加所需的货币数据。我们将在建立 Rails 项目的时候添加所需的 TopLink JAR 文件。
需要遵循以下步骤配置数据库:
- 创建一个名称为 CURRENCY 的表。
- 在 CURRENCY 表中创建三个字符串(或 VARCHAR)列:Country、Currency 和 Name.
- 在表中填入一些数据。比如说,可以在其中添加三种货币或更多:"USA"、"Dollar"、"USD";"Czech Republic"、"Koruna"、"CZK";"Norway"、"Krone"、"NOK".
还可以通过设置 NetBeans 使它能够访问数据库表。更确切地说,如果需要的话,可以为数据库配置一个 JDBC 驱动程序并在 Services 窗口中添加一个数据源。
比如说,下面的 SQL 代码将在一个叫做 SAMPLE 的 Derby 数据库中创建一个 CURRENCY 表(用户名和密码为 APP/APP)。如果希望使用相同的 SAMPLE 数据库,您可以在 IDE 中执行这段 SQL 代码并创建表(在此之前需要先连接 SAMPLE 数据库)。使用 Tools->Java DB Database->Create Database 操作可以创建自己的 Derby 数据库。在不同的数据库系统中创建相同表的 SQL 代码可能与本例有所不同。
drop table "APP"."CURRENCY"; create table "APP"."CURRENCY" (country VARCHAR(20), currency VARCHAR(20), name VARCHAR (20),id INTEGER GENERATED always AS IDENTITY); alter table CURRENCY add constraint currencyPK PRIMARY KEY (id); INSERT INTO CURRENCY VALUES ('USA', 'Dollar', 'USD',DEFAULT); INSERT INTO CURRENCY VALUES ('Czech Republic', 'Koruna', 'CZK',DEFAULT); INSERT INTO CURRENCY VALUES ('Norway', 'Krone', 'NOK',DEFAULT); INSERT INTO CURRENCY VALUES ('France', 'Euro', 'EU',DEFAULT);
创建 Java 项目
完成建立任务之后,我们将创建自己的 Java 项目。首先,创建一个 Java Desktop 应用程序(实际上是一个 Swing 应用程序),然后选择数据库绑定选项。根据向导的提示将 Money 项目连接到数据源(在本例中为 Derby 示例数据库中的 CURRENCY 表)。只需一些简单的操作使创建了一个功能完整的数据库 CRUD 应用程序。
图 1:创建一个桌面数据库应用程序 Money
单击查看大图
图 2:将项目连接到数据源
单击查看大图
运行 Money 应用程序(右键单击该项目并选择 Run),您将看到类似下图的界面。使用 Ctrl+Q 组合键退出应用程序。
图 3:Money 应用程序
编辑 Java 项目
首先,检查生成的 Java 类;尤其是 Currency.java 类。下面是查看项目时可以使用的一些技巧。
在 Projects 窗口中,展开项目的 Source Packages->money 节点,然后双击 Currency.java 在源代码编辑器中打开该文件。Editor 窗口将显示完整的类和类的代码。
类成员
使用 Ctrl+F12 组合键查看 Currency 类的成员列表。您可以使用 Members 对话框快速选择要查看的类。
图 4:Currency.java 类的成员
比如说,要查看类的定义,可以在 Filter 栏中输入 Cur。
图 5:Currency 类的定义
注意:确保生成的 Currency.java 代码正确地声明了 ID 标识符字段。可能需要在 Java 文件中添加一行指明标识符已生成且是惟一的。下面是正确的标识符代码。还需注意,如果添加了生成类型这一行(@GeneratedValue (strategy=GenerationType.IDENTITY)),则可能会造成导入丢失错误。修复这个问题的方法很简单,只需单击错误并按下 Alt+Enter 键即可。
@Id @GeneratedValue (strategy=GenerationType.IDENTITY) @Column(name = "ID", nullable = false) private Integer id;
任务列表
IDE 将自动维护一个任务列表(Task List),用于显示各种编译错误和警告等等。查看任务列表的方法是使用 Ctrl+6 组合键。
图 6:任务列表
检查 Currency 源代码。我们注意到其中包含一些 Java Persistence API 注释。这些注释都标以 (@) 符号,作用是指示与数据库列的绑定。例如,与数据库列的绑定将使用 @Column 符号+列名和 Java 变量的形式,如:@Column(name="COUNTRY") private String country;
创建一个 Java 类访问数据库列
我们需要创建一个新的 Java 类 CurrencyLookup,该类用于访问这些 Java Persistence 实体,即数据库列。然后,Rails 应用程序将调用这个 CurrencyLookup 类,以获取数据库中的货币列表。IDE 源代码编辑器的代码完成和模板特性可帮助我们完成此任务。
在 CurrencyLookup 类中,编写一个 getAll 方法用于返回货币列表。完整的方法代码如下所示。需要注意,代码中的持久性单元 samplePU 与所使用的 SAMPLE 数据库的名称是相匹配的;您的持久性单元可能会有所不同。
public List<Currency> getAll() { EntityManager em = Persistence.createEntityManagerFactory("samplePU").createEntityManager(); Query query = em.createQuery("select c from Currency c"); return query.getResultList(); };
- 右键单击 Source Packages 中的 money 节点,然后选择 New->Java Class。
- 在 New Java Class 对话框的 Class Name 字段中输入 CurrencyLookup 。(确定对话框中的位置为 Source Packages 并且包名为 money。如果不是,则将这些字段设置为相应的值。)IDE 将创建一个 CurrencyLookup.java 类并将它放在 Source Packages->money 节点下面。
- 编写返回所有货币列表的方法。IDE 的功能(比如说代码完成、修复导入等)可以提供帮助。首先,在 CurrencyLookup 类中键入 pu (表示 public),然后按下 Ctrl+Space 组合键。我们发现 IDE 会自动完成剩下的文本。(注意,此处所使用的快捷键组合适用于 Windows 平台,在其他平台上可能会有所不同。有关特定环境的快捷键信息,请参阅 Help->Keyboard Shortcuts 文件。)
图 7:代码完成
- 键入 List<Cu,然后按下 Ctrl+K 组合键完成 Currency 类名。IDE 将使用 CurrencyLookup 作为完全名称,因此需要删除 Lookup。
图 8:类名完成
- 继续输入方法名和方法的其余代码。
更多源代码编辑技巧
下面列出了其他一些源代码编辑技巧:
- 使用 Editor 窗口的上下文菜单 Fix Imports 导入任何丢失的类。
- 使用 Alt+Enter 组合键查看方法丢失的成分提示。
- 编辑某个方法的正文时,按下回车键插入匹配的右括号(})。
- 快速替换单词的方法:将光标放在单词上,然后按下 Ctrl+R 组合键并输入新文本。
完成 CurrencyLookup 查询之后,可以根据需要对它进行测试。使用 Tools->Create JUnit Test 功能,或者使用快捷键组合 Ctrl+Shift+U。这样将生成一个主干 CurrencyLookupTest 类。您可以删除伪代码并添加一行 assertFalse 代码用于测试。比如说,可以添加以下代码测试从数据库返回的数据不为空:assertFalse("contains data", new CurrencyLookup().getAll().isEmpty());。然后使用 Shift+F6 组合键运行测试。
编写 Rails 应用程序
接下来,我们将创建 Rails 应用程序。该应用程序将访问 Money 应用程序的 Java 代码。首先,需要执行一些琐碎的建立工作,包括构建 Money 项目和在 Rails 项目中添加一些 JAR 文件。
创建和配置 Rails 项目
- 首先,确定已经构建 Money Java 桌面应用程序。选择项目上下文菜单中的 Clean 和 Build 功能,或者按下 Shift+F11 组合键。
- 选择 Ruby->Ruby on Rails 创建一个新的 Ruby on Rails 项目。接受向导的默认设置,IDE 将生成一个 Rails 项目。(如果本机已经安装了 C Ruby,那么向导将要求您选择一种 Ruby 解释程序。应该选择绑定的 JRuby 解释程序。)
图 9:创建 Rails 项目
单击查看大图
- 接下来,为 Rails 项目设置一些 Java 属性。特别是,我们需要为 Java Persistence API 添加一些 TopLink JAR 文件,并为 Money Java 桌面应用程序添加一些 JAR 文件。(Money.jar 文件位于 Money 项目的 /dist 目录。)右键单击 Rails 项目节点并选择 Properties。在类别中选择 Java,然后单击 Add JAR/Folder 按钮。导航到三个 JAR 文件并添加它们。一定要添加 toplink-essentials-agent.jar 和 toplink-essentials.jar,这两个文件都位于 NetBeans 安装的 java1/modules/ext/toplink/ 目录。没有必要在这个项目中编辑 Rails 的 config/database.yml 文件,因为 Rails 应用程序将使用 Java 代码执行数据库查询操作。
图 10:添加 JAR 文件
在 Rails 项目中添加货币查询功能
下面将修改生成的 Rails 项目,让它使用 Money Java 项目中的货币查询代码。
- 首先,运行 Rails 项目在浏览器中打开默认的空白 Rails 页面。编辑默认 URL 使它指向应用程序。比如说,如果默认 URL 为 http://localhost:3001/,那么可以在后面附加 /money/list。浏览器将显示一个路由器选择错误消息。完成所有代码之后(需要添加一个动作以响应这个 URL),应用程序将在浏览器中正常运行。
- 使用 Rails 代码生成程序创建一个 Money 控制器和一个列表视图。在 Rails 项目的上下文菜单中,选择 Generate。在 Rails Generator 对话框中,在 Generate 字段中选择 controller,并在 Name 字段和 View 字段中分别填入 money 和 list。然后单击 OK 按钮。
图 11:生成 Money 控制器
生成的 money 控制器将在 Editor 窗口中打开。在控制器中添加代码,使应用程序能够访问 Java 代码(需要 'java')。并添加 CurrencyLookup Java 类(include_class 'money.CurrencyLookup')。完成这些操作之后,您可以像调用其他类一样调用 Money 项目 CurrencyLookup Java 类。还需注意,IDE 支持特定于 Ruby 和 Rails 的代码完成功能;使用 Ctrl+K 和 Ctrl+Space 组合键可以帮助完成方法名称等内容。
下面是 MoneyController 类的完整代码:
class MoneyController < ApplicationController def list require 'java' include_class 'money.CurrencyLookup' lookup = CurrencyLookup.new @list = lookup.get_all end
end
建立视图
接下来,我将介绍如何生成格式良好的表用于显示数据中的三列数据。此外,我还将演示一些 IDE Ruby 快捷操作。
- 打开为 MoneyController 类生成的列表视图。可以使用 Navigate->Goto Rails Action/View 功能或使用 Ctrl+Shift+A 组合键。list.rhtml 文件或 Money#list 视图将在 Editor 窗口中打开。
- 在表的主干代码中插入列表视图。要快速完成此操作,可以键入 table 并按下 Tab 键。IDE 将在 HTML 中添加表行和单元格。
图 12:使用 Tab 快捷键
- 选择表行 (<tr>) 块并按下 Alt+Enter 键。我们希望代码迭代货币列表,因此可以在表行外部使用一个 for 循环。可以使用 Alt+Enter 快捷键显示快速修复选项,该选项为一个电灯泡图标。选择 Surround with for 选项,然后按下回车键。
图 13:使用 Alt+Enter 快捷键
- 现在,修改 for 循环的参数,使它匹配货币数据。使用 Tab 键在这些参数之间切换。调用循环变量 c(而不是 f),并将 @field 修改为 @list。使用代码完全快捷键在行标记(<tr></tr>)中添加额外的表格单元标记(<td></td>)。
图 14:使用代码完成功能添加 HTML 标记
- 在表格单元标记中为 Ruby 表达式插入代码模板。键入 re 然后按下 Tab 键。IDE 将插入 Ruby 表达式 <%= %>。
图 15:插入 Ruby 表达式
- 建立三个这样的表格单元块,每个单元块中都包含 <%= %> Ruby 表达式。在 <%= %> 块中插入货币列的名称(c.country、c.code 和 c.name)。完成之后的代码如下所示:
<h1>Money#list</h1> <p>Find me in app/views/money/list.rhtml</p> <table border="1"><% for c in @list %><tr> <td> <%= c.country %> </td> <td> <%= c.currency %> </td> <td> <%= c.name %> </td></tr><%end%> </table>
- 使用 Shift+F6 组合键在浏览器中查看表格。您将看到类似下图的表格,表格内容为您在数据库中添加的数据:
图 16:显示 Ruby 货币表格
结束语
本文演示了如何将 Ruby on Rails 应用程序与 Java 桌面应用程序结合在一起。Java 桌面应用程序中的代码用于访问数据库表,而Ruby 应用程序将访问 Java 数据库表的访问代码,以检索并显示数据。
本文还演示了开发 Java 和 Ruby 应用程序时可用的一系列快捷键操作。
未来展望
- 查阅 Ruby and Rails Learning Trail,了解关于 NetBeans IDE 支持 Ruby 的更多信息。
- 要获得支持,以及 NetBeans Ruby 开发特性的最近更新,请加入 users @ ruby.netbeans.org 和 dev @ ruby.netbeans.org 邮件列表。
- 要提交自己的 NetBeans Ruby 教程,请访问 NetBeans Community Docs 页面。
- 混合 Java 和 Ruby 应用程序
- java和ruby
- ruby和java
- 使用 Eclipse 和 RDT 开发Ruby应用程序
- Java和matlab混合编程
- Java和matlab混合编程
- C#和java混合编程
- Java和matlab混合编程
- java和matlab混合编程
- java和matlab混合编程
- Java和matlab混合编程
- scala 和Java混合编译
- xml和html混合和php应用程序使用xml
- thrift 交互ruby 和java
- 在 Ruby on Rails 应用程序中重用 Java 代码
- 在 Ruby on Rails 应用程序中重用 Java 代码
- 【Ruby】Ruby和Java比较——方法访问权限
- 初探java和matlab混合编程
- 快速排序的C语言代码实现
- 游标
- SAP BW 模型简介
- PKU 3678 Katu Puzzle(2-SAT)
- string replace C version
- 混合 Java 和 Ruby 应用程序
- Group By 的用法
- 创建一个 Java 应用数据库的桌面应用程序
- 在NetBeans IDE 中使用Java DB数据库
- 一步一步建立linux交叉编译开发环境(学习笔记)
- Java SE 6 新特性系列
- Java 之数据类型
- struts2 doubleselect标签用法示例
- J2ME中使用Socket开发联网程序