写点什么

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:581992
用户头像

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

关注

评论

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

O'Reilly出版社又一经典之作——Python设计模式

计算机与AI

Python

Spring bean 加载顺序导致的 bug 问题

AI乔治

Java 架构 Spring Boot

Rethink:多版本文件的命名细节

小匚

团队 随笔杂谈

Pulsar Summit Asia 2020 | 主题演讲:大咖呈现,紧扣社区

Apache Pulsar

大数据 开源

文科妹子都会用 GitHub,你这个工科生还等什么

沉默王二

GitHub

架构师训练营第 1 期第 8 周学习总结

好吃不贵

极客大学架构师训练营

实时指挥调度的发展和优势

anyRTC开发者

ios android 音视频 WebRTC RTC

当我们在讨论实时性的时候,我们在讨论什么?

VoltDB

数据分析 5G 工业互联网

双11购物节国外剁手党同狂欢 阿里云视频云电商直播实时字幕

阿里云CloudImagine

云直播 直播 直播带货 语音识别

当人脸识别对准执法者,AI的应用边界博弈

脑极体

如何应对大促流量洪峰?揭秘京东技术人的备战手册

京东科技开发者

云计算 大数据 亿级流量

如何预防工业物联网中的恶意攻击?

VoltDB

大数据 数据分析 5G 工业互联网

架构师训练营第八周

我是谁

极客大学架构师训练营

接口文档生成详细教程

测试人生路

接口文档

什么?美团T9首发内部JVM高级特性笔记,看完差距不止一点

小Q

Java 学习 程序员 架构 面试

一个技术总监的忠告:精通那么多技术,你为何还是受不到重用?

四猿外

程序人生 技术管理 加薪 职场成长 源码阅读

低代码开发平台核心功能设计——组件自定义交互实现

徐小夕

大前端 编辑器 H5 大屏可视化 lowcode

数据结构与算法系列之递归(GO)

书旅

数据结构与算法 Go 语言

记不住Spring中Scheduled中的Cron语法?让我们看看源码吧

AI乔治

Java spring 编程 架构

Reactor中的Thread和Scheduler

程序那些事

响应式编程 reactor 多线程 程序那些事 reactivex

代码简易调试方法.md

Albert

Java LeetCode 调试

2020双11:每秒58.3万笔!阿里云又扛住了!

云计算 互联网 运维 云原生 科技

微信视频号强制置顶朋友圈:盈利不可牺牲用户体验

石头IT视角

Dubbo-go Client端调用服务过程

apache/dubbo-go

dubbo dubbo-go dubbogo

2 w字长文带你深入理解线程池

Java架构师迁哥

甲方日常 47

句子

工作 随笔杂谈 日常

祝贺 StreamNative 团队成员 Jennifer 当选 Apache Pulsar PMC 成员

Apache Pulsar

大数据 开源 Apache Pulsar

HTTPDNS开源 Android SDK,赋能更多开发者参与共建

移动研发平台EMAS

android 阿里云 开源 httpdns 移动研发平台

甲方日常 48

句子

工作 随笔杂谈 日常

这份笔记我必啃完!美团T9首发内部JVM高级特性笔记,差距不止一点点

Java架构追梦

Java 源码 架构 面试 JVM

靠脑机接口“隔空探物”,大脑植入芯片可实现“心灵感应”

脑极体

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