Oracle 在三月发布的 GlassFish 蓝图中没有任何提及 GlassFish gem 的文字,这个不寻常的现象引起了人们的关注。这套基于 gem 的服务器软件可以运行 Rails,Merb 和 Sinatra 应用程序,作为 JRuby 平台上最流行的几个服务器软件之一(BitNami 的 JRuby stack 的一部分),一直备受 JRuby 社区的青睐。它是一个轻量级的服务器软件 - 4.3MB 的 gem 包包含了 GlassFish v3 内核,Grizzly 以及其他的工具 - 但是作为工业级品质的应用程序,它最广为人知的优点便是托管处理每秒数千次请求的Sinatra 应用表现出的良好的性能。Rails 用户能够在gem 的支持下使用多线程模式,充分利用JVM 的多线程特性带来的性能提升。
在三月初,这个消息不胫而走,从 jruby-user 邮件列表中透露出的消息表示 GlassFish gem 团队已经不会将这个项目从 Sun 迁移到 Oracle,也就是说,这个项目实质上已经被废弃。Oracle 就此消息表示:
我们一直在鼓励社区继续 GlassFish gem 的开发工作,并且我们也会坚持对这些开发者的持续支持。
Engine Yard 没有明确表示 GlassFish gem 是否将会被加入到其 JRuby 商业支持列表中。 JRuby Summer of Code wiki 表示其正在开发“一个基于 GlassFish gem 的快捷高效的轻量级服务器软件,或者是直接接管 GF gem 然后将其使用在自己的项目中。”
在四月中旬,Vivek Pandey,GlassFish gem 项目负责人以及首席开发工程师,通知邮件组说他打算将一些时间花费在文档完善上,并且可能开始发布新的版本,但是 Oracle 并不支持这项工作,所以他只能将这个项目作为副业来看待。
那么他现在在为这个项目做什么呢?“修复 bug,添加特性(如果有的话)然后发布。当然还有文档完善和争取支持。代码开发现在不是重点了。”
邮件组中的讨论对项目的进展表示出了一些兴趣。GlassFish gem 的流行部分是因为其易用性。当问到为什么 BitNami 将 Tomcat 和 GlassFish 都作为 JRuby stack 的一部分时,BitNami 的 Daniel Liszka 回答道:
开发者貌似更加熟悉 Tomcat。我们希望提供给他们选择的机会。但是相比 GlassFish,将 Ruby on Rails 部署在 Tomcat 要艰难很多,我们希望能够简化这个过程,为那些需要使用 Tomcat 的用户提供支持。
和其他的 J2EE 服务器,GlassFish,JBoss 或者 WebSphere 一样,部署到 Tomcat 的过程也可以使用 Warbler ,这个工具能够将 Rails,Merb 或者 Rack 应用程序打包成 WAR 文件。Warbler 的 1.0 版本在 4 月早些时候发布,添加了对 Rails 3 的支持。“我非常高兴能够看到 Warbler 能够支持 Rails 3。我认为 Rails 3 已经被定位在 Java 开发者在构建 web 应用的时候选择的标准架构,”Engine Yard 的 Nick Sieger 如是说。
Warbler 当然不是一个开发工具,它是一个部署工具。在现在的 Java 应用中,WAR 的部署是非常普遍的。
Warbler 1.0 也同样支持使用 Bundler 将绑定的 gem 打包在一起。
在 JRuby 上也有其他的服务器软件。例如封装自 JBoss 的 Torquebox 。JBoss Fellow Bob McWhirter 说:
Torquebox 期望能够使用 JRuby,将企业级服务器 JBoss 的全部功能迁移到 Ruby 平台上。 这个软件简化了很多功能,例如将 Quartz job-scheduler 和 HornetQ message broker 友好地展示给 Ruby 开发者。它的目标是将整个应用程序,而不只是 web 部分转换成可部署和管理的单元。
Torquebox 比 GlassFish 要重量级得多:它的发布不是基于 gem 的,而且体积高达 300MB(包括完整的 JRuby 安装程序)。一个小于 10MB 的 gem“仅仅具有 web 功能,而且不会和 JMS 集成在一起”。
David Calavera 的 Trinidad 是一个基于 gem 的 Rack 应用服务器,它封装自 Apache Tomcat。需要运行的时候,你“只需要指定 Rack 应用的根目录然后运行一个简单的命令’jruby -S trinidad’即可,”Calavera 说。
它的主要优势之一是其轻量级特性。其他的服务器软件都是构建于某个大型库基础上,而 Trinitydad 则是建立在许多小型库上;核心不会大于 15KB,而且所需要的库大小也就 3MB 左右。
Trinidad 完全是使用 Ruby 编写,它并没有将所有的特性都塞入到一个包中,而且将各种特性单独地作为扩展插件发布。
Trinidad 也支持在同一容器中运行多个应用。
最后一个替代品是 Fabio Kung 的 jetty-rails ,这个软件支持在同一 Jetty 容器中运行 Rails 和 Merb 应用。虽然这个项目自从 2009 年 6 月开始就没有更新过,但是 Kung 仍然希望在未来继续对其改进。
查看英文原文: Whither the GlassFish Gem? Alternatives for Deploying JRuby Web Applications
评论