最近一段时间移动开发界冒出了四大势力,他们同出自Ruby门下,分别是:MRuby、MobiRuby、RubyMotion以及Ruboto。其中,MRuby由Ruby之父主持并得到了日本政府支持;MobiRuby是基于MRuby的新兴
势力野心很大;Ruboto瞄准Android平台;而RubyMotion目前风头正劲,反响最为强烈,相信订阅了RubyMotion邮件列表的读者应该会印象比较深刻。(CSDN也曾对MobiRuby有过报道)
当然说RubyMotion是最佳的Ruby on iOS的实现还为时过早,但是至少就目前的表现来看,Matt Aimonetti,一位livingsocial软件架构师、资深的开源软件开发者和Web工程师、O'REILLY图书《MacRuby》作者
,在体验过了MRuby、MobiRuby和RubyMotion之后,大赞RubyMotion。为什么?Matt列举如下理由:
Objective-C不是Ruby
相信即使是很小众的语言也会有一些死忠,就不用说Ruby这种Rock Star。Objective-C很好,但是它不是Ruby,Ruby的死忠们觉得它不够顺手、不够灵活、有时候却很诡异。
基于MacRuby 互惠互利
在于Objective-C的斗争中,MacRuby诞生了。MacRuby的类就是Objective-C的类,而且执行的很好。MacRuby直接催生了RubyMotion,Matt称所有之前在MacRuby下的功夫都会在RubyMotion上开了花,前者
的所有概念均适用于后者。
REPL/Interactive shell
RubyMotion目前缺少debugger,但是有一个REPL。Matt认为这个特性在debugging应用和学习Cocoa API的时候非常有用。在虚拟机里点击一个虚拟元素,就可以在终端下实时修改类,并在虚拟机中立刻看到效果
不依赖于Xcode
Xcode经常崩溃,界面复杂,而且对MacRuby从来就支持不好。Matti在这里反讽了Xcode开发团队,称他们每次更新Xcode都在帮助其破坏MacRuby。而RubyMotion不依赖于Xcode,于是这个问题就这么解决了,
是的就这么解决了。
不用费心去做内存管理
至少一般情况下RubyMotion的开发者不用去在一内存管理这种东西。
当然,作为一个新兴的、非原生的iOS开发语言,你不能完全依靠它来进行开发,很多Cocoa的API不能访问,没有Xcode支持,没有IDE,所有的UI代码都要手写,没有Debugger,缺乏明确的目标听众以及缺乏完善
的文档支持。但是并不妨碍目前它在所有Ruby家族语言里,作为iOS开发的最佳角色