InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Rhodes:将Ruby应用带给iPhone、Windows Mobile和BlackBerry

作者 Werner Schuster 译者 杨晨 发布于 2008年12月25日

领域
语言 & 开发
主题
富客户端/桌面 ,
Java ,
运行时 ,
.NET ,
Ruby
标签
Android ,
iPhone ,
XRuby ,
Symbian

Rhodes是一个开源的解决方案,它使得开发人员能够在移动设备上进行Ruby开发。而且它允许使用类似Java的特性,一次编写,到处运行。它 还支持多种设备,例如iPhone、Windows Mobile和RIM的BlackBerry,并且在将来还会支持Symbian和Android。

能够将程序部署到iPhone是一件非常有趣的事,它为iPhone开发提供了另一个选择(继Objective-C之后)。而且,Rhodes以及必需的解释器和程序库都是开源的,由Github托管,还有一个Rhomobile项目的公开BUG追踪系统


我们采访了RhomobileAdam Blum,深入地了解了Rhodes是如何工作的,以及他们是如何成功使得Ruby程序能够在iPhone上运行。

平台

关于如何使得Ruby程序成功地在iPhone上运行的问题。Adam解释说:

答案就是 [..] 我们将开发者的程序和我们的架构以及一个Ruby解释器绑定在一起。为了顺从于AppStore,开发者们不能随意地在其他地方下载解释过的代码。要么他 们忍气吞声,要么他们就选择一种更简单的方法来解决这个问题,只要他们肯违背这种限制的话,那就是集成一个Ruby解释器,直接下载Ruby代码。


iPhone上的Ruby版本现在是1.9版。而且Rhodes支持其他多种平台,并计划添加更多平台的支持,例如Symbian等等。

BlackBerry的应用程序都是用Java编写的,所以想让这个平台支持Rhodes和Ruby,就得多做点儿事。Rhomobile选择了一个雄心勃勃的解决方案,使用XRubyXRuby是一个Java的Ruby版本,它能够将Ruby源代码编译成Java类文件。XRuby的开发在去年停滞了下来,但是Rhomobile已经选择了XRuby,并且对其进行了改进,现在在Blackberry上使用的是XRuby来运行Rhodes应用程序的。Adam还提道:

我们现在还在搞Android,根据我们在RIM的实现(基于XRuby而不是JRuby)来尝试在Android上运行Ruby代码。


Adam也提到说,需要保持Ruby解释器体积足够小,而这会影响到一些Ruby库的使用:

我们定义了一个子集,这也是为什么我们要自己来做框架的理由。为了让解释器的体积更小,我们可做了不少工作,而且以后会做得更好。


例如eval()等特性现在也不支持。 

因为Rhomobile是与Ruby解释器需要在移动平台上协同工作,我们又和Adam聊了聊他对于这个问题的愿景:

嗯…… 我们当然希望看到Ruby解释器的实现者们把解释器做得更小,而且更关注于当构建了好用的Gems之时,程序库依赖的体积也更小。现在这些事情都是我们在做,不过也还好。

如何工作

Rhomobile目标是支持多种不同的移动电话平台,所以他们选择了构造Rhodes跨平台应用程序架构。简而言之:Rhodes应用程序就是运行在本地设备上的web应用程序(例如运行在设备上的应用程序,其Ruby部分就 如同HTML GUI一样)。这些程序的GUI用HTML来定义,并且使用浏览器来显示。现代的手机都带有浏览器程序,例如iPhone上的基于Webkit的 Safari。也就是说,开发者可以使用通用的web开发方法来开发应用程序,包括在GUI中使用Javascript。Rhodes同样关心如何使 GUI看起来像独立平台上的原生GUI组件,例如使用属于iPhone GUIs的IUI。 

但Rhodes还有一些新方法:有一些现代智能手机的高级特性在Rhodes应用开发中也可以使用,比如说地理定位信息;对加速仪摄像头以及本地PIM的存取下个版本就可以使用。下一个版本预定于1月发布。

使用这些特性,我们可以使用Ruby调用,并且在HTML文件中以HTML标签形式来使用,例如:

<geolocation/>

将会以如下形式展现

37.3317° North, 122.0307° West;37.331689;-122.030731


像其他Ruby的Web架构一样,开始编写Rhodes应用程序也很简单。在开始的时候,先使用一个生成器:

 rhogen app accountapp

这个命令产生了基本的应用程序骨架,包含了控制器以及其他的应用。更多信息请参见Rhodes示例。 

Rhodes还包括Rhom,它是一个对象映射器。在Github上同样也有其他的Rhomobile程序库。例如Rhosync,它可以将不同的数据源同步到移动电话上。

 
Rhomobile 还是一个新项目,现在发布的版本号是0.1,但是0.2版将会在这个月末发布,这个版本改进了PIM的存取以及GUI。0.3版预期会在2009年的一月 末发布,将会支持更多的平台以及支持更多设备(例如加速仪),以及为Rhodes开发者提供项目托管。

最后需要说明一件非常重要的事情,Rhodes是在Github上的一个开源项目。Rhomobile的商用模型基于双许可证。Rhodes应用程序是开源的,但是如果一个公司希望使用Rhodes,并且不打算对外公开源代码,那么就需要从Rhomobile取得商业许可证。

 
你还知道其他的跨平台解决方案能够像Rhodes一样提供类似级别的集成化吗?你会使用Rhodes来编写程序吗?

查看英文原文:Rhodes Brings Ruby Apps to iPhone, Windows Mobile, BlackBerry

译者 杨晨 对数据库和搜索引擎有深入了解,尤其擅长经典计算机科学理论,对历史学兴趣浓厚。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。