频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

使用Java Web Start部署JRuby应用(1)

作者: 佚名 出处:InfoQ中文站 2008-04-08 11:36    砖    好    评论   进入论坛
阅读提示:为了让你的浏览器能通过Web Start加载应用,我们需要使用application/x-java-jnlp-file MIME类型来发布JNLP文件。因此如果你的浏览器仅仅显示了JNLP文件的内容并且javaws没有自动加载的话,你就需要改变web服务器的配置。

你通常需要一个命令来进入Ruby和Java的联合世界:

include Java

这使你可以实例化Java类,调用其方法,甚至继承它们,就好象它们仅仅是普通的Ruby对象一样。但这其中有一些微妙的差异,这篇文章将向你展示如何管理它们以便能以最快的速度设计出新的应用并部署到你的客户那里。

这篇文章基于一个简单的应用,该应用使用JRuby和Swing实现了一个简单的ObjectSpace浏览器。Ruby的ObjectSpace特性提供了一种方式来访问系统中所有对象。例如,我们可以这样打印所有使用中的字符串:

ObjectSpace.each_object(String) do |string| puts stringend 

当该程序在我的irb会话中运行时,大约会产生28000个字符串。通过使用Swing和JRuby,我们可以把不同的类显示在一个非常棒的图形界面上,包括它们的实例以及可用的方法。你甚至可以在最右边的面板中点击它们来调用无参的方法:

图1

JRuby的ObjectSpace支持在默认情况下是被禁用的,这是由于它在运行时所产生的性能问题,当然还有其他原因。

我要指出它在实现中的一些有趣的细节,并就如何开始使用JRuby中的Java集成特性给出一些提示。

Java集成

一旦你将Java集成到脚本中,你就可以继承现有的Java类。我们只需要通过指定Java类的完整限定名就可以做到这一点。在这个例子应用中,主窗口继承了JFrame。该类中还包含进了javax.swing和java.awt包,所以你不必每次都使用类的全名。

class MainWindow < javax.swing.JFrameinclude_package 'javax.swing'include_package 'java.awt' ...

做为另外一种选择,你还可以使用include_class功能包含指定的类,这样就不会因你没有使用某些类,而污染了名称空间。

调用父类的构造方法就和普通的Ruby代码一样,这意味着我们可以在initialize方法的第一行通过调用super("JRuby Object Browser")来设定窗口的标题。

因为类包含了整个javax.swing包,所以实例化Java类就变得非常直接:

list_panel = JPanel.newlist_panel.layout = GridLayout.new(0, 3) 

如果你仔细看看第二行,你可能会觉得我们直接访问了JPanel的layout属性,但事实并非如此。JRuby为Java对象增加了一些便捷的方法,所以上面的语句也可以用我们熟知的方式编写:

list_panel.setLayout(GridLayout.new(0, 3)) 

不再使用getters和setters,看起来你可以直接访问属性。JRuby还向Java对象增加了更多的“语法糖”,这使得整个感觉更像Ruby了:对于任何方法调用,你可以使用snake_case符号而不是为任何方法调用而实际定义的camel case名。由此产生出调用setLayout方法的第三种方式:

list_panel.set_layout(GridLayout.new(0, 3))

从类中调用setter方法时要小心,Ruby可能会认为你想创建一个局部变量,所以你必须以self作为接收者来显式地调用它:

self.default_close_operation = WindowConstants::EXIT_ON_CLOSE

Java和Ruby的另一个区别是对于常量的访问,像之前代码片断中的EXIT_ON_CLOSE。记住,当你将Java代码转化为Ruby时,要将所有的.访问符替换为::。

到目前为止,JRuby对于Swing开发所带来的变化看起来好像也没什么,但是我们尚未涉及到一个非常重要的方面:监听器。在Java中,将一个监听器与事件关联起来通常需要在一个匿名类中实现一个接口:

button.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent e) {   ...       } });

如果你想附加很多监听器时这很容易搞乱你的代码。在JRuby中,以下两行代码就能解决问题(如果你不使用event变量,你甚至可以忽略掉它):

button.add_action_listener do |event|     ... end 

这些是你使用JRuby开发Swing时需要掌握的基础。尽管JRuby使得用Swing开发GUI变得更方便,但是你还是需要手写很多代码,当需要复杂布局时更是如此。如果你希望能更简单地创建Swing UI时,请参考使用JRuby GUI APIs的三种方式。


共2页: 1 [2] 下一页
【内容导航】
关于 Java  Web  部署  JRuby
专题
企业Web安全威胁在线评估系统
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
Web 2.0基础知识大全
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看73353次)
·UML类图详解 (查看65580次)
·UML统一建模语言 (查看35746次)
·C#技术开发指南 (查看34854次)
·C++是垃圾语言?! (查看33785次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (309个砖)
·.NET开发手册 (241个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (274个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (194个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
PHP开发应用手册
PHP开发应用手册
国际文档格式标准开战
国际文档格式标准..
微软出价446亿美元收购雅虎
微软出价446亿美..
· 微软出价446亿美元收购..
· 技术人求职简历完备手册
· 北漂技术人90天求职纪实
· 勇闯IT培训黑色围城
· 隐私保护技术探讨
· Windows Server 2008专..
· ASP.NET 2.0基础开发指..
· WCF开发基础
· 路由器设置与口令恢复
· 华为员工自杀频频拷问..
· VC++基础开发专题
· NAC安全访问控制
· 2008年春季英特尔信息..
· Visual Studio 2005开..
· Linux——从菜鸟到高手
· 如何优化IT 控制能耗
清除流氓软件——51CTO特别专题
清除流氓软件——..
ARP攻击防范与解决方案
ARP攻击防范与解..
iSCSI应用与发展
iSCSI应用与发展
· iSCSI应用与发展
· SQL Server 2008/2005..
· SOA 面向服务架构
· SQL Server 2008/2005..
· iSCSI应用与发展
· RAID——磁盘阵列基础
· 中间件应用技术专题
· SQL Server入门到精通
· 病毒查杀专题
· 国际文档格式标准开战
· Linux防火墙
· 路由器设置与口令恢复
· 打造安全服务器
· SOA 面向服务架构
· PHP开发应用手册
· ADSL应用面面俱到
ARP攻击防范与解决方案
ARP攻击防范与解..
SQL Server 2008/2005全解
SQL Server 2008/..
iSCSI应用与发展
iSCSI应用与发展
· iSCSI应用与发展
· 中间件应用技术专题
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· iSCSI应用与发展
· RAID——磁盘阵列基础
· 身份认证技术
· 病毒查杀专题
· 清除流氓软件——51CTO..
· 路由器设置与口令恢复
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· ADSL应用面面俱到
· ADSL应用面面俱到
· 反垃圾邮件技术应用