写点什么

Mobile Ruby 综述:Symbian Ruby 1.9、Android、JME、iPhone 及 Mono

  • 2008-11-23
  • 本文字数:1017 字

    阅读完需:约 3 分钟

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

2008-11-23 23:22748
用户头像

发布了 88 篇内容, 共 264.1 次阅读, 收获喜欢 8 次。

关注

评论

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

阅读对写作的好处

董一凡

写作

KubeFATE 部署多集群联邦学习平台 FATE

亨利笔记

学习 Kubernetes FATE KUBEFATE

redis数据结构介绍五-第五部分 对象

Nick

redis 源码 数据结构 源码分析 算法

ARTS week 1

时之虫

ARTS 打卡计划

【译】并不存在的普通用户(面向极端用户的设计)

Yukun

设计思维 可用性

RocketMQ - 如何实现顺序消息

Java收录阁

RocketMQ

数据与广告系列三:合约广告与与衍生的第三方广告数据监控

黄崇远@数据虫巢

数据挖掘 互联网 广告 移动互联网

Java 异步编程:从 Future 到 Loom

理帆

Java 并发编程 kotlin Netty

Git数据传输模型及常用命令整理

王坤祥

git git flow

ansible-playbook中when结合tags使用,实现变量控制执行

唯爱

写给产品经理的信(4):你一定要做产品经理么?

punkboy

生涯规划 产品 程序人生 产品经理 职业规划

平台化服务的基石:用户认证模型设计

孤岛旭日

企业架构 模型 用户权限

ARTS-weekly-31

落英坠露

ARTS 打卡计划

OBS推流学习笔记

IT蜗壳-Tango

直播 OBS 推流 B站直播

[JVM] String#intern 面试必会

猴哥一一 cium

Java JVM string pool string Java 25 周年

Windows10 如何正确修改本地用户的名称及目录

Geek_3gb7ez

windows Windows 10 电脑故障 Windows技巧

Kubernetes in action 笔记

FeiLong

Kubernetes 容器

使用 Python 和 SudachiPy 进行日语分词

Roc

Python 日语 分词

教师节H5案例制作思路分享

Geek_3gb7ez

大前端 H5游戏

在 Go 中使用并发编程 - 第二部分

TuringTuring

并发编程 协程 线程模型 Go 语言

2020全球首创币期权DAPP智能合约强势来袭,闪耀数字经济

极客编

使用 Markdown 制作五线谱

Roc

GitHub markdown 五线谱

一个前端的 Windows10 开发环境

Gadzan

大前端 windows Windows Terminal 环境安装 开发工具

JUC整理笔记三之测试工具jcstress

JFound

Java

企业也有中年危机?探讨数字化与永续经营

FinClip

数字化转型 小程序生态

使用 Python 分析 Google Calender 日程

Roc

Python 总结 日历

财富的大门给我开了一条缝

YoungZY

读书笔记 读书

redis数据结构介绍四-第四部分 压缩表

Nick

redis 源码 数据结构 源码分析 算法

redis数据结构介绍六 快表

Nick

redis 源码 数据结构 源码分析 算法

学慢点儿,想深点儿

熊斌

学习

微信推文无缝滚动是这样炼成的

Geek_3gb7ez

微信 大前端 微信公众号 微信推文 图文混排

Mobile Ruby综述:Symbian Ruby 1.9、Android、JME、iPhone及Mono_Java_Werner Schuster_InfoQ精选文章