Ruby 1.9针对Symbian的版本已经发布了,之前针对Symbian的Ruby 1.8版也早已出现(同时还有Python for Symbian)。

除了应用于Symbian的Ruby,现在还缺少对移动电话上的Ruby的支持。不过我们可以在Android上运行Ruby的ARM版。

既然Android基于Java,我们当然就可以在它上面运行JRuby了。一个需要注意的问题是Android不会执行Java字节码,而是执行Dalvik字节码(我们必须将JVM字节码转换成Dalvik字节码)。在JRuby用户列表的一个讨论中,JRuby的Charles Nutter列举出了如下可能的解决方案:

有如下两种可能的执行场景会突破这些限制:

* 纯解释,所有的代码在设备上完成了解析并且通过我们的AST-walking解释逻辑执行。其速度可能比我们想的要慢点但实现起来很简单。

* 纯编译,所有的调用和处理都提前生成好。

在当前的代码基上已经实现了这两种方式;还需要做的一件事就是生成一个可用的.jar文件,该文件只会提供其中一种方式并且不会依赖于另一种方式。

当前在JME上运行JRuby实在不是一个好主意。早在2007年的JavaOne大会上就已经介绍了针对JME的JRuby版本。这个链接页面上的Zip文件含有该介绍的幻灯片,它详细说明了如何得到JRuby的一个子集以运行于JME上。因为JME是Java的一个简化版,因此要想让JRuby运行于其上需要对JRuby的很多内容进行重写。当前版本的JRuby依赖于Java 5——但正如幻灯片中所述,JME缺少Java 1.2之后所增加的那些类和方法。其中最缺少的就是正则表达式和大部分Collections API。

针对iPhone的IronRuby和Mono很快就要出来了。但iPhone AppStore不提供解释器的下载,最新版本的Mono提供了一个解决方案:提前编译,也就是说将CIL中的代码编译到CPU指令中,对于iPhone来说就是编译到ARM指令中。因为IronRuby可以将Ruby代码编译到CIL中而不是对其进行解释,所以我们可以将Ruby应用编译到CIL中,接下来AOT再来编译并在iPhone中运行该应用。正如Miguel de Icaza所述,要想成功运行IronRuby代码,我们还需要解决一些小问题:

当然,一旦移除了JIT,你将无法使用任何动态生成的代码。这意味着如果没有Reflection.Emit,也就没有了IronPython/IronRuby。

John Lam在PDC上跟我说他们正在研究如何实现IronPython/IronRuby/DLR的静态编译,因此这种限制很可能是短暂的。

查看英文原文:Mobile Ruby Roundup: Symbian Ruby 1.9, Android, JME, iPhone and Mono

更多相关文章

  1. android EditText设置不可写
  2. android 使用html5作布局文件: webview跟javascript交互
  3. android studio调试c/c++代码
  4. IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
  5. 锁屏界面
  6. android ndk编译x264开源(用于android的ffmpeg中进行软编码)
  7. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
  8. Android(安卓)version and Linux Kernel version
  9. Android(安卓)闹钟管理类的使用

随机推荐

  1. Android 编译环境下常用命令
  2. android openGL简例1
  3. android添加常驻图标到状态栏
  4. android键盘的监听
  5. [Android]:Android(安卓)studio 添加jar
  6. andorid RecyclerView下拉刷新,上拉加载更
  7. Android 签名信息读取
  8. Android低功耗蓝牙(BLE)随笔(二)
  9. Android Toast
  10. android中的spinner