GlassFish Gem前途未卜,谁将取而代之?

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

你可能感兴趣的:(GlassFish Gem前途未卜,谁将取而代之?)