【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

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

  • 2008-02-26
  • 本文字数:1500 字

    阅读完需:约 5 分钟

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

2008-02-26 01:161173
用户头像

发布了 88 篇内容, 共 258.9 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

聪明人的训练(二十)

Changing Lin

4月日更

多源数据即席查询Trino(Presto)引擎剖析

小舰

4月日更

面试加分项!为了跳槽强刷1000道Android真题,附小技巧

欢喜学安卓

android 程序员 面试 移动开发

iMazing 一款替代iTunes的数据备份软件

懒得勤快

ios Mac imazing 手机管理

【全网首发】2021年移动开发iOS进阶提升方案,内附详细视频知识点解析和思维导图!【强烈建议收藏!】

flutter swift 数据结构与算法 ios开发 iOS逆向

一天下载量突破9000000!限时分享:阿里Java架构师成长笔记(2021版)

比伯

Java 架构 面试 程序人生 计算机

架构实战营 - 模块 2- 微信朋友圈高性能复杂度分析

吴建中

架构实战营

抢购倒计时自定义控件的实现与优化

vivo互联网技术

动画 安卓 自定义控件 倒计时

低代码:正在改变软件的开发方式

华为云开发者联盟

软件开发 低代码 低代码平台 华为云应用魔方 AppCube

MySQL常用引擎及优缺点

Sakura

4月日更

Rust从0到1-枚举-if let控制流

rust 枚举 if let

搭建亿级时间线数据的监控系统,我有绝招!

华为云开发者联盟

Grafana 监控系统 GaussDB(for Influx) 华为云数据库 时间线

三色标记原理,我给应聘者问懵了...

华为云开发者联盟

Java 节点 三色标记 SATB算法 回收器

《专访阿里研究员吴翰清:大数据时代下,如何保障网络安全和用户隐私》(采访提纲)

三掌柜

调查采访能力考核

架构实战营 - 模块 2- 总结

吴建中

架构实战营

腾讯万字Code Review规范出炉!别再乱写代码了

程序员生活志

破十亿浏览量的阿里最新Java架构师成长笔记开源!

Java架构追梦

Java 阿里巴巴 架构 面试 成长笔记

Redis持久化方案介绍之RDB方案

大数据技术指南

redis 4月日更

裸辞还可以吊打大厂面试官?四面拿到阿里、字节offer后我还是选择了美团!

Java架构师迁哥

凡尔赛?拿到阿里offer只用了29天?

Java架构师迁哥

【LeetCode】实现 strStr()Java题解

Albert

算法 LeetCode 4月日更

全程干货!拍乐云受邀LiveVideoStackCon,首席科学家分享拥塞控制最佳实践

拍乐云Pano

计算机原理学习笔记Day11

穿过生命散发芬芳

计算机原理 4月日更

【签约计划】行业分析能力考核成绩公布

InfoQ写作社区官方

签约计划 热门活动

GitHub开源:100美元自制激光雷达

不脱发的程序猿

GitHub 开源 DIY 4月日更 激光雷达

我很久没写代码了,但我是个好架构师

四猿外

Java 程序员 系统架构 架构师 代码

全球案例 | 霍尼韦尔:Atlassian 帮助我们在疫情期间拯救生命

Atlassian

敏捷 Atlassian Jira 远程协作 霍尼韦尔

神级Android进阶笔记!一次关于JVM的面试经历,建议收藏

欢喜学安卓

android 程序员 面试 移动开发

Linux tree命令

一个大红包

Linux linux命令 4月日更

华为云PB级数据库GaussDB(for Redis)揭秘第八期:用高斯 Redis 进行计数

华为云开发者联盟

redis GaussDB(for Redis) 计数器 计数

阿里员工:最惨P7,33岁才28K,感觉没有前途了。网友调侃:最美逆行者

程序员生活志

Glimmer—使用JRuby和SWT开发Eclipse RCP应用_Java_Werner Schuster_InfoQ精选文章