InfoQ

新闻

Glimmer—使用JRuby和SWT开发Eclipse RCP应用

作者 Werner Schuster译者 张龙 发布于 2008年2月26日 上午1时16分

社区
Ruby,
Java
主题
领域特定语言,
JRuby,
脚本,
富客户端/桌面
标签
SWT,
GUI,
Eclipse,
JRuby

JRuby可以使用Java的GUI库,因而诞生了很多访问JRuby GUI APIs的方式Glimmer就是其中一个使用了SWT工具集的后起之秀。

我们采访了Glimmer的创建者Andy Maleh,以此来了解该项目及其未来发展趋势。Andy这样论述Glimmer背后的设计原则说:

Glimmer起初的目标是通过一个健壮的平台、独立的UI技术来简化使用Ruby开发桌面应用的过程。Eclipse SWT正好符合上述要求,因此在对Ruby的JRuby实现过程中它得到了重用。

Glimmer的API设计遵循以下原则:

  • 简明而不重复
  • 以最小的代价去完成任务
  • 规则优于配置
  • 对SWT开发者友好

此外,API的设计充分利用了Ruby的每个语言技术优势来简化桌面应用开发。构建式语法就是上述技术之一,开发者利用该技术构建桌面应用的界面就像使用HTML来构建web界面一样。这是通过编写与界面相匹配的代码来实现的。

然而,Glimmer的目标超出了这个范畴。例如,Glimmer拥有内建的数据绑定支持以及可定制的默认设置。

Glimmer不仅在语法上求简,在架构上也是。它很容易扩展,而且无须开发者对要增加的关键字硬编码。这实际上也是为什么Glimmer能够支持第三方小部件的原因。

JFace是构建在基本的SWT部件之上的一套组件,Glimmer也一样:

Glimmer现在与JFace协同工作。事实上,只要有构造方法,它就可以支持任何SWT/JFace组件的定制。

Glimmer还可以用来构建如视图和编辑器这样的RCP UI组件。在我刚着手开发Glimmer的数据绑定支持时,我确实曾考虑过重用JFace的数据绑定框架。然而,最新的API需要调用静态类型的方法,这与Ruby的动态特性背道而驰,因此在Ruby中从头开始开发数据绑定支持可能会更简单。

查看Glimmer的数据绑定方式 来了解更多。

GUI库非常重要的一个方面是组件布局,Glimmer当然也没有忽视这一点:

Glimmer对组合部件如Shell,Composite和Group有非常棒的默认布局支持。例如在声明一个Composite时,常用的GridLayout就会作为其默认布局。当然也可以根据需要改变该默认的布局。

当被问及Glimmer的现有特性及未来计划时,Andy说:

Glimmer现在支持:
  • 以合适的默认值对SWT和JFace组件进行渲染,这包括Shell、Composite、Group、Text、Button、Spinner以及Label
  • Text、Spinner、Check-box Button、Radio Button和Table的数据绑定
  • 对于新的关键字通过编写命令处理器来扩充语法的能力

在不久的将来,Glimmer将对其他部件提供数据绑定支持,例如:Tree、Combo和List,同时还会对SWT和JFace中其他的部件提供默认值。

未来计划包括:

  • 探索简化RCP开发的方案
  • 当SWT提供对Ajax的支持时,增加拥有Ajax组件的Rails支持

Glimmer被提议将其作为Eclipse项目。Andy解释了背后的原因:

创建Eclipse项目有几个动因:
  • 通过Eclipse社区的帮助提高Glimmer的健壮性和可靠性
  • 从经验丰富的Eclipse开发者那里获得反馈
  • 提升知名度,获取更广泛的支持

在简化使用Ruby进行Eclipse开发上,GUI DSL是一个好的开始,但仅仅是冰山一角。未来的计划确定会包括探索如何简化RCP的开发,使用JRuby脚本来创建Eclipse插件也可能会被列入计划。

我尚且还没有仔细思考目前插件开发中存在的问题,但有两个地方可能会从Ruby的表达式语法中获益,那就是扩展点定义及插件的配置和集成。

查看英文原文: Glimmer - using JRuby and SWT for Eclipse RCP apps
译者简介:张龙,同济大学软件工程硕士,现就职于理光软件研究所。主要从事文档工作流和办公自动化解决方案的研发工作。热衷于Java轻量级框架的研究,对敏捷方法很感兴趣。曾有若干年的J2EE培训讲师经历。参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com

相关赞助商

InfoQ中文站Ruby社区,面向Web和企业开发的Ruby,主要关注Ruby on Rails,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Ruby社区提供一流资讯。

没有回复

回复

独家内容

构建的可伸缩性和达到的性能:一个虚拟座谈会

这个由业界主要专家们参加的座谈会探究了在使应用程序具备尽可能好的伸缩性及性能的过程中所面临的挑战和思考过程。

OpenSocial的分析与实现

本视频主要对OpenSocial进行了分析,并对实现的方式进行了介绍。其中包括:OpenSocial的开发经验、Container Provider的技术准备、平台的构成要素、具体的规范、以及对未来的展望。

缓存系统MemCached的Java客户端优化历程

Memcached在大型网站被应用得越来越广泛,但是Java客户端并不多,本文作者基于现有的开源客户端进行了封装优化,并翔实记录了这一过程。

超越SOA:动态业务应用的新企业应用框架(2)

在他们文章的第二部分,作者探讨了动态业务应用的架构并介绍了资源容器的概念。他们示范了如何在JEE之上构建这个架构,以及它如何影响实现生产力。

使用ClickOnce细分发布版本

ClickOnce让WinForms应用程序的部署轻而易举。David Cooksey演示了如何在ASP.NET中编写一个HttpHandler来实现对ClickOnce部署的版本细分。

敏捷教练,从A到Z

敏捷带来了新的领导者角色,“敏捷教练”。它是不是跟“部门经理”或“技术领导”一样,只是换汤不换药呢?教练Pat Kua在这篇启蒙文章中对敏捷教练一职做了概述。

利用Ruby简化你的Java测试(进阶篇)

本文是Productive Java with Ruby系列文章的第二篇,通过上一篇的介绍,我想大家对如何利用Ruby进行单元测试有了一个基本的了解,从这里开始,我将和大家一起讨论一些利用Ruby进行单元测试时的高级话题。

书评:《应用SOA》

《应用SOA》是由四位一流SOA专家合著关于SOA的新书,其主旨是帮助你成功地实施SOA。尤其是,这本书将帮助你把你的SOA项目与企业架构、IT治理、核心数据和BPM项目结合起来。