Java Solaris 加入 SDN 参与讨论 我的社区 注册说明
 
JDK 6.0 API 中文版
 
 
 
 
 
Java API 文档中文版
NetBeans、Solaris 和 GlassFish:Ruby 的最佳搭档
 
By Janice J. Heiss, 4/5/08  
 

Ruby2006 年,一种反射性、动态性、面向对象的解释型语言 Ruby 正式在免费的 C 软件中实现,这距离它首次发行(1995 年)已经有 11 个年头了。本文讲述 Ruby、JRuby 和 Rails 在 Sun 微系统公司的故事。


 

目录

 
Ruby
Ruby on Rails 和 Ruby 的发展
Ruby 虚拟机
JRuby
jMaki
使用 NetBeans IDE 开发 Ruby
Ruby-on-Rails 开发者对 Ruby 的好评
开发和部署场景
  -  在 Solaris Express 开发版(SXDE)中开发 Ruby
  -  在 Solaris OS AMP 中部署
  -   在 GlassFish Application Server 中部署 JRuby
  -  针对 JRuby 应用程序的 Java DB
为什么将 Run Rails部署到 GlassFish 中?
向其它语言开放 JVM
 

Ruby

 

Yukihiro MatsumotoRuby 的优雅受人赞赏,它是 Yukihiro Matsumoto 在 Perl、Smalltalk、 Eiffel、 Ada 的 Lisp 语言的基础上创立的,目的是降低编程工作量和混淆性。Matsumoto 被称为 Matz,谈论到他努力使 Ruby 语言以“反映生活”的方式显得很自然但不追求简单性。Matsumoto 创立的 Ruby 语言比 Perl 语言更强大,而且比 Python 语言更接近面向对象。

虽然 Ruby 有时被称为脚本语言,但它的支持者们称它是可以广泛应用的通用计算机语言。

Ruby 可以免费地使用,复制、修改和发布 --而且具有很高的可移植性。虽然它在大多数情况下在 GNU/Linux 或 Mac OS x 系统上开发,但 Ruby 可在许多种 Unix 系统、Solaris OS 系统、微软的 Windows95/98/Me/NT/200/XP 系统以及其它操作系统上运行。Ruby 语言最近发布的版本是 1.90。

Ruby 语言包括下列特性:

  • 语法简单,部分原因是受到 Eiffel 和 Ada 语言的启发。
  • 异常处理功能可轻松处理各种错误。
  • 操作符为方法句法糖,重定义非常简单。
  • 完整、全面、纯面向对象 -- Ruby 中的所有数据都是对象,在这个意义上与 Smalltalk 语言相同:无异常。
  • 单继承
  • 代码块 -- 括号 -- 在 Ruby 语言中是一等公民,普遍应用在几乎全部的 Ruby 程序中。
  • 全部 Ruby 的对象与“标记-清除”垃圾回收器一同工作。
  • 如果操作系统允许,可动态装载扩展库。
  • 独立于操作系统之外的线和。

Gems Ruby 被人批评的问题有:性能低下, 一些场景下使用线程很困难,缺少对 Unicode 或多字节字符串的原始支持。正在设计中的 2.0 版通过新型速度更快的比特码解释器来解决这些问题,从绿线程(green thread)转换为原始线程(native thread),并且增加了对 Unicode 字符串的全面支持。

RubyForge 是一个开源 Ruby 对象的主页。RubyGems, 现在已经是 Ruby1.9.0 版中标准库的一部分,它是 Ruby 的包管理器,为分布式 Ruby 程序和库提供了定义了标准的格式。

Ruby on Rails 和 Ruby 的发展

 

在2008年3月,TIOBE 索引:一个测量编程语言增长率的网站, 根据在全球范围内对约 2.6% 的程序的调查,Ruby 的受欢迎程度排名第 10 位。

Ruby 的成长很大程度上与开源的 Ruby-on-Rails 框架(称为 Rails )的流行密不可分,它用于基于模型-视图-控制器(MVC)设计模式的数据后台 web 应用。

Ruby on Rails 为数据库网站的建立提供了代码框架性,可提高开发的速度并降低开发难度,因此在年轻的开发者中很受欢迎。Ruby 的速度和灵活性对 web 开发产生了很大的影响。Rails 可使用的 web 服务器包括 GlassFish、Apache、Mongrel、和 LightTPD、可使用的数据库包括 MySQL、PostgreSQL、SQLite、Oracle、SQL Server、Java DB 和 DB2。

Rails Rails 通过以下方式增强网站的建设:分析数据库结构、理解表关系、自动创建对象-关系映射代码。开发人员可对其进行编辑、润色、定制、标准化、应用模板或进行其它期望的调整。因为它包含了标准数据库后台 web 应用的全部组件,Rails 被称为是“成套包含”的框架。

Rails 框架可以与被 Tim O'Reilly出 版社称作 Web 2.0 的应用很好地匹配,它已经把这些增殖扩散的互动网站定义为 FlickrYouTubeFacebookMySpace,以及其它大量信息从网络边缘进入站点为特点的网站。许多未来的 Web 2.0 站点可能会用到 Fails,因为 Web 2.0 成功的关键是快速占有市场并提供可靠的维护。Rails 在可维护性方面占有估计,但对于需要计算的 web 应用显得比较慢。

Ruby 虚拟机

Ruby 的官方实现通常指的是在 Matsumoto 之后 Matz 的 Ruby 解释器或 MRI,已经被广泛应用。它有时也被称为是 CRuby,因为它由 C 语言编写。

随着其它组件的实现,Ruby 的流行已经超越了最初的运行时而转向基于 VM 的运行时。这些包括 JRuby:Ruby 与 Java 平台的接口 IronRuby: Microsoft 的 .NET 框架的一个实现;Ruby.NET:一个编译器,可将 Ruby 源代码转换为只适用于第三方微软平台的 .NET 中间代码;以及 Rubinius:在自主 Smalltalk 虚拟机之后的解释器模型。

YARV:表示另一个 Ruby VM,它是一个为 Ruby 开发的新型比特代码解释器,设计目的是减少 Ruby 程序的运行时间。随着 Ruby1.9.1 版的发布,由于 YARV 的快速性,它将变为 Ruby 的官方解释器。

JRuby

 

JRuby JRuby:一个 Ruby 语言语法、核心库和标准库的 Java 语言实现,它的优点是 Ruby 语言简单的语法以及与 Java 应用程序的互操作性 -- 以及可移植性、安全性并提供了Ruby语言的类库。

它最初由 Jan Arne Peterson 于 2001 年编写,JRuby 被 Thomas Enebo Charles Nutter 加以起一步开发。Sun 微系统公司在 2006 年 9 月雇佣了两名开发人员用于 JRuby 核心的开发 -- 表明 Sun 公司许诺了 Ruby 的发展,也表明了对于 Java 语言通过其它语言扩展应用范围的开放性。

Thomas Enebo Enebo 和 Nutter 更加努力地为开发人员提供了广泛的 Ruby 和 JRuby 的开发场景,并在 Solaris Express 开发版(SXDE)中提供了全合一的下载方案(它包含 NetBeans 集成开发环境(IDE)的工具和在 Solaris 操作系统上的部署),这样就可使开发过程流水线化。

Ola Bini 除此之外,Ola Bini:一位 Practical JRuby on Rails 的作者,目前是 ThoughtWorks 工作室的开发人员,已经为 JRuby 作出许多贡献。

Sun 公司的战略的假设在于选择之后才会部署,它来自于一条信念就是商业上不会部署没有支持的重要应用或解决方案。作为 Sun 公司的 CEO,Jonathan Schwartz 说,“思想占有会赢得市场占有。”

Tim Bray“我们对支持非 JAVA 技术非常感兴趣”,比如 PHP、Perl、Python 和我们系统中和 OS 平台上的 Rails”Tim Bray -- Sun 公司的 web 技术和分布式工程师总监这样说。“而 Rails 是一个非常好的框架”,Sun 公司正使它变得更快。Java 技术可使 Rails 在 GlassFish 上非常好地部署,而 NetBeans 6.0 则提供了可用的、最好的 Rails 和 Ruby 编程工具。

2008 年 2 月,JRuby1.1 的第二个候选版本 JRuby1.1RC2 发布了。

Charles Nutter“JRuby 用一种不同的方式看待 Ruby”,Sun 公司的 JRubby 核心开发人员 Charles Nutter 解释说。“因为它在 Java 应用程序上运行,因此它有很好的伸缩性,测试也行彻底,而且使 Ruby 进入 Ruby 和/或 Rails 未曾进入的企业。

他写道:现在 Ruby 开发人员可以访问数目庞大的 Java 库了。”JRuby 对于想更好地获得伸缩性或以不同的方式伸缩的开发人员而言可能会是一种解决方案。JVM* 的沙盒秘密允许开发人员构建健壮的、基于因特网的应用程序。额外的好处是,Ruby 开发人员可访问 Java API 并可访问拥有 600 万开发人员的社区。

Ruby 语言包括以下特征:

  • 100% 由纯 Java 技术编写-兼容的 Ruby 解释器。
  • 大部分内置 Rub 类
  • 支持与 Ruby 交互并在 Ruby 内部定义 Java 类。
  • 支持 Bean Scripting Framework (BSF)
  • 在第三方许可证下发行:CPL/GPL/LGPL

JRuby on Rails 是运行在 Java 平台上最初的 Ruby-on-Rails 框架,它增强了 Rails 并提供了 Java 库和应用服务器功能。Sun 公司积极工作使 Rails 应用程序进入 Java 平台上,希望使 JRuby on Rails 成为未来 Web 开发的中心。

jMaki

jMaki jMaki 是一个 Ajax 框架,它通过 Java 技术、Ruby、PHP 和 Phobos 提供了用于创建以 JavaScript为 中心的能够使用 Ajax Web 2.0 应用程序的轻量级模型。它使用 CSS 布局,小部件模型,使用客户服务,如出版/订阅把小部件联系到在起,使用 JavaScript 活动句柄,和通用代理与外部的 RESTful web 服务交互。

使用 NetBeans IDE 开发 Ruby

 

NetBeans 6 NetBeans IDE 6.0 提供了 Ruby、 JRuby、jMaki 和 Ruby-on-Rails 框架的编程 工具
NetBeans Ruby 的支持插件提供的 IDE 可用于 Ruby 和 Ruby-on-Rails 应用程序的构建、执行、测试和排错。开发人员可以 下载 只含 Ruby 的 NetBeans IDE 6.0 或对自己下载的 NetBeans IDE 6.0 增加 Ruby 支持。
 
此外,他们也可以从下载的全合一的 Solaris Express 开发版(SXDE)中得到 NetBeans IDE Solaris Express Developler Edition (SXDE)是一个完整的开发和部署环境,包括Ruby、Rails、JRuby、RubyGems、PostgreSQL、MySQL、Java DB 和 GlassFish。

NetBeans Ruby 项目类型支持 Ruby 文件,RSpec 说明书文件和 YAML 文件。项目可以通过 JRuby 或任何其它在系统中安装的原始 Ruby 执行。NetBeans IDE 拥有 Rake 构建工具并可访问交互式 Ruby Shell (IRB).

Ruby 源代码编辑器按句法和语义缩进、补全并高亮 Ruby 代码,随着开发人员的键入实时地解析代码,因此它可以匹配单词和括号,标记错误和位置,并可显示提示和 RDoc。只需敲几下键盘就可从活动模板中插入代码断。重构并支持测试:单元测试、自动测试,并且很好地集成了 RSpec。

NetBeans Ruby on Rails 项目类型支持 Rake 目标和数据库移动,使用户可以生成 Rails 项目或通过 Rails 代码生成器图形界面向导生成代码。逻辑项目视图很清晰地把控制器与模型、视图和数据库移动分开。

用户可以编辑 RHTML 文件并把项目直接部署到集成 WEBrick 和 Mongrel web 服务器上,可以在 Rails 活动和相应的视图之间快速跳转,并滚回与正编辑的文件最相关的 URL 的网址。

Ruby 和 Rails Debugger 使开发人员可单步或完成执行 Ruby 代码和 RHTML 文件。用户可以设置断点,察看局部变量,遍历调用栈,或切换线程。把鼠标停在编辑器中的一个变量上,开发人员就可以评介这个表达式并在工具提示中显示。

NetBeans IDE 支持 Ruby 或 Rails 程序的快速 Debugger 扩展,它是一个纯粹的 Ruby debugger 和 JRuby debugger。Ruby Gems 安装管理器通过集成的 Ruby Gems 打包系统扩展了 Ruby 的安装,使用户可以添加或管理免费得到的 Ruby 软件库并发布自己的包。

Arun Gupta 是 Sun 公司的 web 服务和 web2.0 应用的技术传播者,他解释了如何把 NetBeans IDE 6.0 中的 JRuby解释器 换为基于 C 语言的 Ruby 解释器,相反的过程也加以解释。

Ruby-on-Rails 开发者对 Ruby 的好评

 

David Heinemeier Hansson JRuby 和 NetBeans IDE 已经得到 David Heinemeier Hansson 的热烈夸奖,他是 Ruby on Rails 的创建者。在谈到一位领先的 Java 开发人员对 Rails 的夸奖后,Hansson wrote 于 2007 年 9 月 19 号说:“Sun 公司将进一步增加对 Rails 的支持。他们的工作把 NetBeans 变成奉承 Rails IDE,但似乎正在快速发展(已经赢得一些爱好者)。然后它与正处于上升期的、由 Thomas [Enebo]、Charles [Nutter] 和 Ola [Bini] 推动的 Ruby 相比,就显得逊色多了。这些人们正以疯狂的速度改进他们的 Ruby 的 JVM 实现。

”JRuby on Rails 已经在一些公司中开始生产。Rails 仅仅是一个 Web 存档文件 [WAR] 的论据可使企业(如 ThoughtWorks)更容易地把 Rails 引进企业中。上面讲到的“与你的 Java 遗产集成”的论据(这里你可以一直前进到用 EJB 工作!)就可以很容易明白为什么企业变得眼花缭乱。

开发和部署场景

Ruby 在大多数情况下在 GNU/Linux 开发并可在许多种 Unix 系统、Mac OS 系统、微软的 Windows95/98/Me/NT/200/XP 系统以及其它操作系统上工作。但是 Sun 公司已经使在 Solaris 操作系统上通过 NetBeans IDE 开发 Ruby 应用程序变得很容易。这时讲如何进行。

在Solaris Express Developer Edition (SXDE) 中开发 Ruby 应用程序

SXDE Solaris Express Developer Edition (SXDE) 是一个免费的、Sun 公司从 OpenSolaris.org(OpenSolaris 社区和开发人员合作的主页)的源代码库中构建的下一代 Solaris OS 的季度版本。

SXDE 包含了许多未在 Solaris 10 OS 中包含的改进。SXDE 版本,适用于 X86 平台,包含了为 Solaris OS、Java 应用平台和 Web2.0 创建应用程序需要的最新的工具,技术和平台。开发人员可以 下载 它,或者定购一张 DVD工具包,或者免费把 SXDE 配置成 VMware 虚拟应用

SXDE 支持 Ruby、Rails、JRuby、RubyGems、PostgreSQL、MySQL、Java DB、GlassFish 应用服务器,NetBeans IDE 还有更多,包括对一些流行的开源数据库的顶层支持,如 PostgreSQL 和 MySQL。

在 Solaris OS AMP 中部署

Solaris事件 Solaris OS AMP 栈,也称为 酷栈,是一个优化的开源软件栈,它以 Solaris 的 pkgadd 格式提供了好多个包,可以使开发人员安装他们需要的包,包括 CSKruby(它包括Ruby、RubyGems 和 Ruby on Rails)。Ruby 的版本升级到 1.8.6,Rails 的版本升级到1.2.3。

在 GlassFish 应用服务器中部署 JRuby

GlassFish JRuby Project GlassFish 是一个开源社区,包括客户、开发人员、合作者、创建了业界领先的、Java EE 5 兼容的、企业级质量的应用服务器的传播者。

JRuby通过一个 JRuby on GlassFish 模块获得 Project GlassFish 的支持。此模块使它更容易地把 Ruby-on-Rails 应用程序部署在 GlassFish 应用服务器上,使 Rails 开发人员可利用 GlassFish 的优点。

此模块中的 JRuby1.0.1 源代码已经包括以下 Ruby gems 更新:

  • rails-1.2.3
  • rake-0.7.3
  • activesupport-1.4.2
  • activerecord-1.15.3
  • actionpack-1.13.3
  • actionmailer-1.3.3
  • actionwebservice-1.2.3
  • ActiveRecord-JDBC-0.5
针对 JRuby 应用程序的 Java DB

Java DB Java DB 是 Sun 公司支持的开源 Apache Derby 的 100% Java 技术的数据库。它完全事务化,安全,易于使用,基于标准的 SQL、JDBC API 和 Java EE-并且很小,只有 2MB。Apache Derby 项目拥有一个强大且不断增长的社区,它包括许多大公司的开发人员,如 Sun 微系统公司和 IBM 以及个体投稿者。Java DB 包含在 JDK 6 中。

为什么在 GlassFish 上运行 Rails?

GlassFish JRuby 在 GlassFish 上运行 Rails 有很多很好的理由。第一,多线程-在 GlassFish 上运行 Rails 时,可得到更多的 JRuby 服务器并可按需配置。CRuby 需要一个 Mongrel web 服务器的单线程包。

第二,GlassFish 允许数据库连接池,这一点在 CRuby Rails 中可能被忽略了。第三:开发人员可从自己的 Rails 应用程序中访问任意的 Java 名称和目录接口(JNDI)API 资源和任意的 Java Persistence API 数据资源。

向其它语言开放 JVM  

向 Ruby 开放 JVM 以及 JRuby on Rails 的出现标志着 Java 的技术进步。它使 Web2.0 时代更快创建、更易维护的丰富网站成为可能。

需要特别注意的是 Da Vinci Machine 项目,它用一流的 Java 之外的语言的构建支持扩展了 JVM,重点是动态语言。本项目将为 JVM 的扩展做一些原型,以便它可以与 Java 语言本身媲美的性能高效地运行其它语言。Sun 公司积极地为 JVM 构建实现多语言实现做出努力。

Ruby 的日益流行,加上 JVM 通过 JRuby 的支持,再加上 NetBeans IDE 和 Solaris OS 通过 Cool Stack 对它提供的工具支持,Ruby 的开发环境从工具和数据库到服务器和运行时方面变得完整,现在在 Solaris Express Developler Edition (SXDE)中可用。

至于其它动态语言和应用的进化,灵活性、互操作性以及 Java 平台绝对的能力可使下一代 web 变得更强大。

_______
*在本站点中,术语"Java虚拟机"或"JVM"表示 Java 平台中的虚拟机。

更多信息