BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JRuby GUI MVC框架Monkeybars 1.0发布

| 作者 Werner Schuster 关注 9 他的粉丝 ,译者 杨晨 关注 0 他的粉丝 发布于 2009年2月16日. 估计阅读时间: 8 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

如今有很多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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT