【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

  • 2008-12-25
  • 本文字数:1935 字

    阅读完需:约 6 分钟

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

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

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

平台

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

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

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

BlackBerry的应用程序都是用 Java 编写的,所以想让这个平台支持 Rhodes 和Ruby,就得多做点儿事。Rhomobile 选择了一个雄心勃勃的解决方案,使用 XRuby XRuby是一个 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

2008-12-25 09:312273
用户头像

发布了 90 篇内容, 共 32.7 次阅读, 收获喜欢 5 次。

关注

评论

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

基于50W携程出行攻略构建事件图谱(含码源):交通工具子图谱、订酒店吃饭事件图谱等

汀丶人工智能

人工智能 自然语言处理 知识图谱

社区征文 | 记一次“雪花算法”造成的生产事故的排查记录

悟空聊架构

架构 雪花算法 生产事故 悟空聊架构 年中技术盘点

Jedis 参数异常引发服务雪崩案例分析

vivo互联网技术

服务雪崩 Redis集群模式 主从切换 Jedis参数设置

百亿规模京东实时浏览记录系统的设计与实现 | 京东云技术团队

京东科技开发者

数据 离线 企业号 7 月 PK 榜 浏览记录

24款数据可视化工具介绍

2D3D前端可视化开发

数据分析 web前端 数据可视化工具 可视化看板 数据可视化软件

浅析本地缓存技术-Guava Cache | 京东物流技术团队

京东科技开发者

Java 缓存 Guava Cache Guava 企业号 7 月 PK 榜

什么是 JSON:一个简洁易懂的入门指南

Apifox

Java json 程序员 开发 Postman

电商企业需要堡垒机吗?采购堡垒机选择哪家好?

行云管家

网络安全 信息安全 电商 堡垒机 等级保护

为什么要做稳定性保障?

老张

SRE 稳定性保障

openGauss资源池化开发者入门指南

daydayup

opengauss

思考:数字卫星可视化如何实现?

DevOps和数字孪生

仿真建模 数字卫星

【我和openGauss的故事】 openGauss 5.0.0 分区表增强

daydayup

opengauss

【我和openGauss的故事】openGauss逻辑备份恢复

daydayup

【我和openGauss的故事】openGauss特性:CM支持两节点部署特性

daydayup

掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

订单逆向履约系统的建模与PaaS化落地实践 | 京东云技术团队

京东科技开发者

领域建模 企业号 7 月 PK 榜 订单逆向履约 快退

极客时间架构实战营模块一作业

Geek_6361c3

#架构实战营

【我与openGauss的故事】openGauss 5.0企业版主从部署,实战狂飙

daydayup

opengauss

【航遥 × ModelWhale】AI for Science 科研范式改革

ModelWhale

人工智能 云计算 算力 遥感 地球科学

这些大数据传输解决方案保证了企业快速传输和数据可靠性

镭速

高速传输 大数据传输 快速文件传输

MobPush 推送限制策略

MobTech袤博科技

程序员 前端 push 智能推送 推送

对线面试官-Redis 十一 | 双写一致性问题

派大星

Java 面试题

openGauss DBMind上的多指标关联性分析介绍

daydayup

opengauss

大语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解、Zero-shot CoT、Few-shot CoT 以及在LLM上应用| 社区征文

汀丶人工智能

人工智能 大语言模型 LLM模型 年中技术盘点 思维链

用热爱,走一些“远”路!

禅道项目管理

12 点半!Voxel51 亚太地区计算机视觉线上 Meetup,速来!

Zilliz

计算机视觉 Milvus Zilliz voxel51

【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅

daydayup

监控系统 Prometheus 的原理 | 社区征文

悟空聊架构

运维 监控 Prometheus 悟空聊架构 年中技术盘点

深耕行业创新 引领视听未来 | 宇视亮相北京Infocomm China 2023展会

新消费日报

点云标注在自动驾驶中的挑战

来自四九城儿

openGauss数据库源码解析系列文章——AI技术(二)

daydayup

opengauss

Rhodes:将Ruby应用带给iPhone、Windows Mobile和BlackBerry_Java_Werner Schuster_InfoQ精选文章