过去几周有几个新的Ruby实现与方言加入到了Ruby这个大家庭中,他们分别是MRuby、MobiRuby与RubyMotion。我们将在本文中介绍这些Ruby实现所提供的一些功能上的亮点。
首先从MRuby开始,它是由Ruby创建者Matz开发的。在RubyConf 2010上,Matz宣布他正在开发Rite,一个新的轻量级Ruby实现。该项工作的成果就是MRuby,现在已经发布到了GitHub上。MRuby完全兼容于不久前ISO所发布的Ruby语言规范,但它与MRI及Ruby 1.9的着眼点则完全不同,因此MRuby并非Ruby 2.0。MRuby可用于运行Ruby程序,但其设计目的在于集成到其他程序中(比如说,在游戏中作为Lua脚本语言的替代者)并运行在内存受限的小型设备中。MRuby对自带的标准库进行了大幅度的精简并去掉了一些特性;Matz在报告中提到MRuby不再支持线程与多语言化(m17n)。其他特性则可以在编译期进行定制(比如说去掉文件I/O,或是选择字符编码等)。
Matt Aimonetti编写了一份MRuby入门指南,还对MRuby与Lua进行了详尽的比较。构建在MRuby之上的项目已经出现了,这将我们带到了MobiRuby。
MobiRuby“旨在通过Ruby替换掉移动平台上的Objective-C/C/Java,就好像你可以使用Lua或Mono来在这些平台上构建应用一样”。Matt Aimonetti分析了该项目所面临的挑战,比如说两个运行时的性能问题以及与平台原生API的交互和文档等。但遗憾的是,MobiRuby尚未发布,因此现在很难做出比较。
但如果你现在仍然想使用Ruby来开发iOS应用,那么还有其他选择。MacRuby的创建者Laurent Sansonetti刚刚发布了RubyMotion,这是MacRuby的一个带有所有权的分支,你可以通过它使用Ruby来编写iOS应用(InfoQ上有对其的详细介绍)。Rake用于创建、运行和编译应用,整个工作流程都是基于命令行的,但你依然可以使用Apple的Interface Builder与Storyboard。RubyMotion更像是一个Ruby方言而非完全的实现,因此你很难轻松地重用现有的Ruby gems。
Android开发者不必感到失望,Ruboto在过去几个月中保持着稳步前进的步伐。此外还有Mirah,它的语法非常类似于Ruby,并且以Pindah的形式支持Android。最后,基于Ruby的跨平台框架Rhodes的创建者Rhomobile最近被Motorola Solutions收购了(这并非Google打算收购的Motorola的一部分)。
那么,你打算如何开发下一个iOS应用呢?
查看英文原文:Ruby Slims Down for Mobile with MRuby, RubyMotion, Ruboto