`

专题:使用Ruby进行iphone开发

阅读更多

    近期涉及到一个类似的项目,需要了解iphone上相关应用支持。所以,单门列这样一个专题,进行相关资料收集和整理。本来如果iphone支持flex问题就解决了。如果,iphone对ruby支持不好,那就要看看object-c的执行效果了。

    

iphone越来越流行了, 如果你想开发iphone上面的软件,你又不想学习Objective-C, 那么怎么办呢?
也许你可以从这里找到你要的答案。
http://www.digitalsanctum.com/2008/10/04/iphone-development-with-ruby/

你也可以看看这个:
Rhodes是一个开源的解决方案,它使得开发人员能够在移动设备上进行Ruby开发。而且它允许使用类似
Java的特性,一次编写,到处运行。它还支持多种设备,例如iPhone、Windows Mobile和RIM的BlackBerry,
并且在将来还会支持Symbian和Android。
http://www.infoq.com/cn/news/2008/12/rhodes-iphone-winmobile-rim

 

 

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

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


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

平台

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

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


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

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

分享到:
评论
2 楼 fireflyman 2009-08-13  
感謝分享.
1 楼 Hooopo 2009-08-13  
好东东。。。

相关推荐

    驾驭代码的流转:在Ruby项目中使用Git进行版本控制

    3. **自动内存管理**:Ruby具有垃圾回收机制,自动管理内存使用。 4. **闭包和块**:Ruby支持闭包和迭代器块,使得循环和迭代操作更加灵活。 5. **元编程**:Ruby支持元编程技术,可以在运行时修改类和模块的定义。 ...

    前端学 Ruby:熟悉 Ruby 语法.pdf

    ### 前端学 Ruby:熟悉 Ruby 语法 #### Ruby 是什么? Ruby 是一种动态的、面向对象的脚本语言,由日本人松本行弘在 1995 年设计并开发。作为一种解释型语言,Ruby 具有简单易懂、功能强大且灵活的特点。Ruby 在 ...

    Ruby-rubybuild编译和安装Ruby

    在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build`来编译和安装Ruby。 `rbenv`是一个用于管理全局或用户级别的Ruby版本的工具,它...

    使用 Ruby on Rails 和 Eclipse 开发 iPhone 应用程序教程(含图例)

    【使用 Ruby on Rails 和 Eclipse 开发 iPhone 应用程序教程】是一个面向中级开发者的系列教程,旨在教读者如何利用 Ruby on Rails 框架在服务器端为 Mobile Safari 设计和提供自定义内容,以适应 iPhone 和 iPod ...

    使用 Ruby 进行 Web 应用程序的开发和部署.zip

    本资料主要聚焦于使用 Ruby 进行 Web 应用程序的开发和部署过程,以下是相关知识点的详细说明: 1. **Ruby 基础**: - **变量和数据类型**:Ruby 支持多种变量类型,如局部变量、实例变量、类变量和全局变量。它有...

    ruby gem环境

    Ruby Gem环境是Ruby编程语言中的一个关键组成部分,它是一个包管理器,负责安装、管理和使用Ruby库,也就是所谓的Gems。...通过正确配置和使用Gem,你可以轻松地利用Ruby社区丰富的开源资源,提高开发效率。

    Ruby.Programming_向Ruby之父学程序设计(第2版)

    《Ruby Programming:向Ruby之父学程序设计(第2版)》是为了让完全没有程序设计经验的读者也能灵活地使用Ruby,因此书中详细地说明了各种知识。从程序所需要的变量、常数、方法、类、控制结构等语法的说明,到类的主要...

    编程语言发展史:Ruby语言的发展和应用

    * Web开发:Ruby on Rails是Ruby最流行的应用之一,它是一个Web开发框架,可用于快速构建Web应用程序。 * 数据分析:Ruby提供了许多库和工具,可用于数据分析和处理。 * 游戏开发:Ruby可用于开发2D和3D游戏。 * ...

    ruby开发文档

    Ruby是一种面向对象的、...通过深入学习这些知识点,开发者不仅能理解Ruby的基础,还能熟练运用Ruby进行Web开发(如使用Rails框架)、系统脚本编写、命令行工具开发等。Ruby的世界广阔且富有创造力,等待着你去探索。

    Ruby语言入门教程:基础知识与Web开发指南

    ③ 引导读者使用Ruby进行Web开发,特别是通过Rails框架快速构建Web应用程序。 阅读建议:阅读过程中,读者应该结合实际动手练习,尤其是搭建环境、编写基础代码和尝试Web开发的部分。理论与实践相结合,才能更好地...

    Web开发:Ruby on Rails.pdf

    Web开发:Ruby on Rails.pdf

    Ruby on Rails开发 从入门到精通实战教程.rar

    本资源是一套关于Ruby on Rails开发的全面教程,旨在帮助学习者从入门到精通掌握Ruby on Rails框架的开发技能。教程内容涵盖了Ruby语言基础、Rails框架搭建、Web应用开发、数据库操作、部署与维护等方面的知识。 ...

    ruby 经典教程从新手到专家

    - **游戏开发**:使用Ruby进行基本的游戏开发。 ### 学习Ruby的理由 - **简洁易学**:Ruby的语法清晰、表达力强,易于上手。 - **社区活跃**:拥有庞大的开源社区支持,丰富的库和框架可供选择。 - **应用广泛**:...

    使用 Ruby on Rails开发个人博客应用的设计与实现

    内容概要:本文档提供了使用 Ruby 开发的简单个人博客应用的设计实例。此应用实现了用户文章的基本CRUD操作,即创建、浏览、修改与删除。通过项目引导初学者掌握 Ruby 语言的基础语法、MVC架构及数据库相关技能。...

    ruby on rose开发文档-开发

    在阅读提供的rdoc文件时,你可以找到关于Rails框架中各个组件的详细文档,包括类和函数方法的说明,这对于深入理解和使用Ruby on Rails进行开发非常有帮助。通过学习这些文档,开发者能更好地掌握Rails的精髓,提高...

    Ruby on Rails教程:学习使用Rails进行Web开发Ruby on Rails Tutorial: Learn Web Development with Rails

    本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。

    Ruby 简介及安装 视频教程

    7. **Ruby开发环境**:设置Ruby开发环境,如安装IDE(如RubyMine、VSCode等)或文本编辑器,配置Ruby版本和依赖,以及使用Git进行版本控制。 8. **IRB(交互式Ruby shell)**:学习如何使用IRB进行代码测试和调试,...

    rubyml:使用 Ruby 进行机器学习

    Title: Machine Learning with Ruby Abstract: I will discuss ways to make sense out of data. Specifically: * Using Classification, Clustering and Recommendation algorithms * and a demo Requirements ...

    解释学:使用Ruby轻松进行CGI和邮件处理

    **解释学:使用Ruby轻松进行CGI和邮件处理** Ruby是一种强大的、面向对象的脚本语言,因其简洁的语法和丰富的库而受到开发者喜爱。在Web开发领域,Ruby被广泛用于创建动态网页和处理服务器端请求,特别是通过CGI...

    Ruby_learning_教程-中文版

    - c:/ruby/lib/ruby/site_ruby: 用户自己的Ruby代码或第三方库目录。 - c:/ruby/src: Ruby源代码目录。 - c:/ruby/samples: 示例程序目录,用于存放各种例子。 编写Ruby程序时,所有的源文件都必须以.rb作为文件...

Global site tag (gtag.js) - Google Analytics