写点什么

JRuby GUI MVC 框架 Monkeybars 1.0 发布

  • 2009-02-15
  • 本文字数:2385 字

    阅读完需:约 8 分钟

如今有很多 JRuby 的程序库,通过它们,我们能够更加容易地使用 Java 工具进行 GUI 开发

我们采访了 Monkeybars 团队的 James Britt 。James 对 Moneybars 项目做了一个简短的介绍:

Monkeybars 是一个 JRuby 的 MVC 框架,这个框架基于 Swing 库之上。本质上来说,它并不是对 Swing 的一个重新封装,而是使用 Swing 类封装视图逻辑,从而将其和控制器逻辑和(Ruby 中的)模型逻辑分离开。从这方面来说,它提供了免费、高质量的所见即所得 Swing UI 设计工具,将我们从烦躁的 UI 设计中解脱出来,专注于 Ruby 开发。Monkeybars 最开始是从一个现实的应用中抽取出来的,它将专注于测试和维 护大型应用程序的项目。

James 阐述了 Monkeybars 如何处理交互:

Monkeybars 的目的之一是将视图和控制器分离开来;一个控制器从来不需要一个视图的直接引用。它使用信号来间接告诉视图应该要做些什么。这样的话,对控制器的测试就会更加简单,你无需担心 UI 的问题。

Monkeybars 没有直接实现 GUI 组件,它提供给我们任意选择 GUI 组件的机会:

Monkeybars 期望能够有表示 Swing UI 的类。在大部分情况下,我们开开心心地使用 Netbeans UI 编辑器来描画和编译 UI 组件,然后在应用程序中使用 Ruby 代码引用这些组件。理论上来说,你可以使用 Profigacy、Cherry 或者 SwiXML+Builder 等等,但是我还没有看到有代码这样做(同样见我关于 Monkeybars 的额外计划和简易编写内联 Swing 代码的评论)。

James 解释了开发者应该如何使用 Monkeybars:

很多用户都是在编写一些无谓的 JRuby 程序时随便用用 Monkeybars,但是我敢肯定有人在现存的 Java 应用程序中使用了它。目前 Monkeybars 有 gem 和 jar 的发布形式(同样也有源代码形式)。

我们希望知道是否可以在已经存在的应用程序中,使用 Monkeybars 处理 GUI 脚本:

[…] 在 Java 应用程序中,你可以加载和执行使用 Monkeybars 的 Ruby 代码,或者在 Ruby 应用程序中(假设在 JRuby 下执行)希望调用 GUI 的时候使用 Monkeybars。 虽然现在的代码不支持桌面 GUI,但是你的问题让我考虑是否需要现在使用现在的代码开发一个。例如,当开发一个 Web 应用的时候,如果使用一个优雅的 GUI 而不是在浏览器或者终端中呈现错误,那么这也许是一个很优秀的解决方案。将 Monkeybars 集成到 Ramaze 应用中,我们可以在开发的时候使 用 Swing 组件。我们也可以在一个多窗口 GUI 控制台应用程序中使用 Monkeybars 来查看源代码和文档。

在 Monkeybars 应用开发中, Rawr 是一个非常有用的工具。James 是这么解释 rawr 的:

Rawr 是另外一个从现实需求中演化出来的项目。它将 Monkeybars 集成到一个可执行的 jar 包中,提供了一些有用的 Rake 任务。你也可以将其集 成到 Windows 的 exe 程序或者 Mac 的 app 程序中(我们正在努力编写一个 Linux 包)。这个项目包括图标、媒体和内容 jar 包,还能够将 Ruby 编译进类中,提高载入速度。这就是我们如何将 JotBot 和我们的时间追踪程序集成在一起的。我们相信这个时间追踪程序是第一个商业 JRuby 桌 面应用程序。

我们也询问了一些 1.0 版之后,Monkeybars 未来如何发展的问题:

现在的核心是相当的稳定,大约一年之内都不需要做任何重要的修改。如果我们做了一些重大的改变的话,那么有一些大型应用程序将会花费大量的代价来重构,所以我们将来可能只是在这个基础上增量构建而不是做出修改。 但是,正得益于这种稳定性,我们可以考虑一些特性。例如,我们希望能够使用自定义的 DSL 或者构建器语法更加容易地创建 Swing UI 类。Swing 是非常巨大的,所以我们不打算封装所有的 Swing 组件,但是使用常规的 Ruby 语法,很多基础的 UI 形式和组件应该更容易使用。

我们现在还关注应用程序生成器。很多应用程序都有同样的形式和行为:启动画面(Splash Screen)、系统托盘图标、帮助和“关于”表格等。通过一些命令行调用或者 Rake 任务,程序员应该能够很方便地获得一个提供最少功能的桌面程序。然 后这个应用程序可以使用内联代码或者已编译的 Java 类来添加额外的 UI 组件。

Logan 已经使用了视图绑定功能,这个功能使得我们更加容易地在模型和视图之间建立映射,并且能让我们看起来数据一直是保持同步的。

另外一个项目将我们认为 Swing 的一些通用功能组合起来,但是现在我们现在还没有开始进行这个项目,也许这个项目并不容易。例如,禁止组合框中特定的元 素或者文本域的上下文菜单。我们也在努力地使 Monkeybars 能够更好地和 Cucumber 和 RSpec 一起工作;在这方面,我们已经做了一些工作。

最后,James 提供了一系列指导 Monkeybars 开发的资源,如果仍然不明白的话,那么可以直接询问 Monkeybars 的核心团队(现在是 James、Logan Barnett 和 David Koontz):

当然有 Monkeybars.org;我们现在正在更新 1.0 版本的文档和截图。 也可以通过 Freenode 联系#monkeybars 获取信息,而且还有 Monkeybars 的 Google group:

http://groups.google.com/group/monkeybars Logan Barnett 关于 Monkeybars 的博客:

http://www.logustus.com 在 RubyConf 2008 上 David Knootz 的视频:

http://rubyconf2008.confreaks.com/monkeybars-easy-cross-platform-guis.html
Martin Slader 在 Ruby Manor 中使用了 Monkeybars: http://rubymanor.org/videos/gui_manor_born/
开发者可以下载 JotBot,并且请求一个免费的试用 key 来尝试商业版本的 Monkeybars 应用程序:
http://www.getjotbot.com
我们也开始将一些东西迁移到 Kenai,这个网站更加稳定,这样能够为用户更好地提供文档。 http://kenai.com/projects/monkeybars

一旦这些东西整理好,我们会很快地在 Monkeybars 主页上放出详细信息。 你也可以通过 Twitter 来联系我们:

@jamesbritt
@logan_barnett
@dkoontz
@thehappycampers

那么。你会使用什么工具来构建 JRuby 的 GUI 呢?

查看英文原文: JRuby GUI MVC Framework Monkeybars Goes 1.0

2009-02-15 09:581591
用户头像

发布了 90 篇内容, 共 34.3 次阅读, 收获喜欢 5 次。

关注

评论

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

react源码中的生命周期和事件系统

flyzz177

React

算法基础:区间合并算法及模板应用

timerring

11月月更 区间合并 算法学习

聊聊Mybatis的数据源之工厂模式

急需上岸的小谢

11月月更

百度架构师手写万字Spring Security实战笔记,一篇就搞懂

小小怪下士

Java spring springsecurity

大数据分析如何进行?瓴羊Quick BI成为了很重要的工具

小偏执o

【Linux】之【CPU】相关的命令及解析[lscpu、mpstat]

A-刘晨阳

Linux 运维 cpu 命令 11月月更

与时俱进「风险系统保障质量之路」非同寻常

京东科技开发者

自动化 风险识别 风险控制 预警监控 风险系统

炎凰数据完成超亿元 A1 和 A1+ 轮融资,推出异构数据即时分析平台

晨山资本

大数据 大数据处理 大数据分析

PCB layout有DRC,为什么还要用CAM和DFM检查?

华秋PCB

PCB PCB设计 PCB工具

react源码分析:实现react时间分片

flyzz177

React

react源码分析:babel如何解析jsx

flyzz177

React

ERP系统能给企业带来的那些好处

SAP虾客

那些适用于跨境电商的ERP系统

SAP虾客

Karmada跨集群优雅故障迁移特性解析

华为云开发者联盟

云原生 后端 华为云

开源共建 | 中国移动冯江涛:ChunJun(原FlinkX)在数据入湖中的应用

袋鼠云数栈

flink 开源

云小课|云小课带您快速了解LTS可视化查看

华为云开发者联盟

云计算 后端 华为云

你可见过如此细致的延时任务详解

骑牛上青山

Java redis kafka 延时队列

高并发下丢失更新的解决方案

京东科技开发者

幻读 脏读 不可重复读 更新丢失

聊聊Mybatis的数据源之PooledDataSource

急需上岸的小谢

11月月更

动手实践丨基于ModelAtrs使用A2C算法制作登月器着陆小游戏

华为云开发者联盟

人工智能 华为云 A2C算法

学会二阶思维,你就能像巴菲特一样思考了

华为云开发者联盟

软件开发 开发 华为云 二阶思维

安卓??传奇!!探寻世界最大操作系统的崛起之路

博文视点Broadview

5种典型 API 攻击及预防建议

SEAL安全

API API安全

室内高清led电子显示屏的定义

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

主流BI软件,哪一个软件使用效果更好?

夏日星河

Centos7安装Mysql5.7(超详细版)

A-刘晨阳

MySQL Linux 运维 11月月更

centos安装python3/pip3项目所需的第三方模块(在线安装&&离线安装)

A-刘晨阳

Linux 运维 Python3 11月月更 pip3

ERP 实施,甲方公司前期应该准备什么?

SAP虾客

SAP ERP系统里的那些核心主数据

SAP虾客

混合开发Hybrid App的优劣

Onegun

ios 混合应用开发 移动端 andiod 混合开发

桌面端软件的开发框架如何选型

Onegun

macos windows 桌面端 桌面应用

JRuby GUI MVC框架Monkeybars 1.0发布_Java_Werner Schuster_InfoQ精选文章