大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

面向移动的 Ruby:MRuby、RubyMotion 与 Ruboto

  • 2012-05-12
  • 本文字数:1002 字

    阅读完需:约 3 分钟

过去几周有几个新的 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

2012-05-12 03:345357
用户头像

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

关注

评论

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

io_uring的10个技术点

linux大本营

高并发 异步 零拷贝 io_uring

lwip_recv_tcp阻塞读取数据代码

linux大本营

TCP 阻塞队列

小程序自定义组件开发

程序员海军

小程序 三周年连更

Django笔记十二之defer、only指定返回字段

Hunter熊

Python django defer only

程序踩内存后,应该怎么排查

linux大本营

进程 内存管理 内存泄漏 C++

C++如何拿到线程池的返回值

linux大本营

线程池 C++

Go HTTP 调用

陈明勇

Go golang HTTP 三周年连更

算法题每日一练:组合总和 II

知心宝贝

数据结构 算法 前端 后端 三周年连更

xnginx在安全网关的应用场景

linux大本营

openresty 网关 web服务器

一文读懂物联网 MQTT 协议之实战篇

老周聊架构

三周年连更

c语言实现timer的10个技术点

linux大本营

进程 定时器, Timer 文件描述符

2023-04-20:有一堆石头,用整数数组 stones 表示 其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎 假设石头的重量分别为 x 和

福大大架构师每日一题

golang 算法 rust 福大大

借由Net5.5G,看到运营商的新沧海

脑极体

5.5G

Java EE应用服务器的事务管理

mazhen

Java transaction JavaEE

用户痛点与根因识别:解锁企业数字化转型成功的关键

L3C老司机

OceanBase 4.1解读:我们想给用户一个开箱即用的OceanBase部署运维工具

OceanBase 数据库

数据库 oceanbase

一键生成通用的web服务(gin)完整项目代码,开发效率至少提升2倍

vison

golang Web gin框架 代码自动生成

火山引擎边缘云,助力业务敏捷创新

火山引擎边缘云

CDN 边缘计算 火山引擎 边缘云

华为云 OpenTiny 跨端、跨框架企业级开源组件库项目落地实践直播即将开启!

Kagol

开源 前端 Vue 3 UI组件库

AI能训练出符合“核心价值观”的人工智能吗?

FN0

人工智能 ChatGPT Claude

AI视觉实战1:实时人脸检测

轻口味

android AI 三周年连更

怎么用systemd进行进程守护

linux大本营

Linux 进程 守护进程

OpenResty接口的详细讲解

linux大本营

负载均衡 反向代理 openresty 网关 HTTP服务

挑战 30 天学完 Python:Day10 循环语句

MegaQi

Python3 挑战30天学完Python 三周年连更

生活中的不确定性,如何应对?

Jack

组件必知必会|那些年我们使用过的轮子—Filter和Proxy

浅羽技术

javaWeb Proxy 过滤器 组件 三周年连更

OpenCV图像模糊操作(1) | 社区征文

A小调协奏曲

OpenCV C++ 三周年连更

大型商业银行的超级App是如何“组装”而成?

Onegun

超级app 超级应用

薪资结构重铸: Zebec将业务范围扩大到Web2薪资管理领域

股市老人

Android动画之帧动画

芯动大师

android App 三周年连更

面向移动的Ruby:MRuby、RubyMotion与Ruboto_Ruby_Mirko Stocker_InfoQ精选文章