Ruby on Rails与Java,哪一个才适合你呢?

假如你要从头开始开发一个Web应用项目,当然了,这是个很复杂的项目,拥有大量的功能特性,并且要能做到可伸缩以及可维护。基于这些核心需求,对于一个团队来说,很难一下子就选择好最适合于这些需求的编程语言或是Web框架。基于这个假定,国外媒体cygnet-infotech进行了相应的讨论与分析。

现在有大量的技术与编程语言可供我们使用。对于这些技术来说,很多企业都选择了拥抱开源的面向对象编程语言,如Java、Python或是Ruby等等。对于这个Web开发需求来说,考虑到编码便利性以及语言结构,人们可能首先会想到的是Ruby on Rails与Java,因为其他语言可能由于结构等原因会导致开发时间变长。

现在的问题就变成了该使用Ruby on Rails还是Java来实现方才所提到的Web应用开发需求,下面我们从如下几个方面近距离来审视一下这两个技术,从而做出客观的决定。

工具、库与APIs

由于Java由来已久,现在有不少工具、APIs与库,这使得它的底层基础设施要比Ruby强大得多。当公司变得成熟并且客户需要高质量的服务与特性扩展时,这种基础设施就会变得非常重要。相对于Java来说,Ruby缺乏这些工具、库与APIs。这使得Ruby在这方面略逊于Java一筹。

学习曲线

在使用Java编码时,由于Java周边存在大量的库与技术组合,这使得开发者需要花费大量的时间来学习不同的架构,还要搞清楚具体细节。与之相反,Ruby却可以让你快速上手,因为它的开发架构非常简单,容易学习和使用。因此,从学习曲线这个角度来看,Ruby要胜于Java。

代码的可管理性

对于Java来说,管理代码与定义类是非常简单的事情,这是因为它是一门静态类型语言。在Java中,特别是在使用Eclipse的情况下,你可以轻松搜索定义好的方法与类;而对于Ruby来说,处理代码和命名类都不是一件容易的事情,因为它是一门动态类型语言。对于动态类型来说,你可能经常会出现混乱的情况,因为它缺乏静态编译器的警告信息。这样,Ruby在管理代码方面可能要花费更多的时间。

可伸缩性与稳定性

对于可伸缩性与稳定性来说,Java要胜于Ruby,因为Java的所有框架都提供了可伸缩的架构。在断电、特殊情况或是大量用户访问的情况下,Java框架要比Ruby更加安全且可靠。不少公司在其关键应用上都会选择Java而非Ruby。

招聘

在之前对SHARE用户组、IBM以及伊利诺伊大学的376名雇员的一次调查中我们发现,Java是企业招聘需求最为广泛的一门语言。Java占据了56%,而Ruby则只有5%。

根据上面的一些分析,你会发现如果你希望后端应用更加具有可伸缩性和可管理性,那么Java是更好的选择,如果希望进行快速开发,那么Ruby则是个不错的选择。下面我们再来看看社交网络巨人Twitter的一些情况供大家参考。

Twitter创立于2006年,是当前最为流行的微博与社交网络服务之一。Twitter早期使用的是Ruby on Rails。随着世界各地用户访问量的不断增加,有时Twitter会不堪重负,因为大量的推文与查询对后端服务器造成了严重的压力。此外,搜索延迟也经常出现,这造成请求处理的问题,直接导致服务不可用。

于是在2010年,Twitter工程师发现Ruby无法处理来自世界各地用户的数百万的推文。这时,团队开始考虑采用Java,这是因为它的可伸缩性与可维护性,非常适合开发高流量下的Web服务。接下来,Twitter工程师开始重写Twitter搜索引擎,并且从MySQL迁移到了Lucene。他们还将前端的Ruby替换成了Blender来改善搜索延迟和支撑流量。

Twitter工程师还在所有服务器上安装了JVM,并创建了一个独立的Web服务用于进行彼此的通信以及访问Web应用的各个部分。比如说会有一个独立的Web服务用来负责Twitter主页,另一个服务则用来处理来自移动设备的推文。经历过这些变化,Twitter的访问速度达到了之前的3倍并且没有再出现过问题。Twitter基础设施运维工程的副总裁Mazen Rawashdeh曾说过,我们的底线就是无论何时、无论何地、无论人们如何使用Twitter,我们都要保证24×7的可用性,我们努力工作来实现这个愿景。这就是Twitter在经历了这些问题后从RoR迁移到Java并获得成功的案例。

我们从上面的分析与示例中可以发现,Java在一些方面要好于Ruby。它不仅是门用于开发应用的编程语言,也是个虚拟机,可以运行各种语言所构建的代码。一些知名的公司如Google、LinkedIn、Tumblr及Square等都在使用Java,因为Java易用且有能力通过JVM处理多种操作。

由于轻量级且快速部署的架构,Java获得了人们的青睐。Wired Enterprise的编辑Cade Metz曾说过“就像Twitter一样,很多公司都发现Java特别适合于构建Web服务,用来处理互联网上与日俱增的流量”。在Oracle收购了Sun之后,Java变得越来越稳定且安全了。

各位InfoQ读者,相信大家在读完本文后也许会觉得这是篇Java软文,因为文中所讨论的各项内容基本上都在说Java的好话,这对广大的Rubist开发者也是不公平的。众所周知,现在的Java发展速度或多或少有些缓慢,新特性的发布也迟迟不见踪迹,但这没有影响到Java作为企业开发重要语言的位置。文中作者所列举的各个观点也仅代表了cygnet-infotech媒体的一家之言,在这里也非常欢迎从事Java与Ruby开发的国内同行们提出你们的观点和看法,让我们一起讨论。

This entry was posted in Case. Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s