写点什么

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

  • 2013-11-07
  • 本文字数:2132 字

    阅读完需:约 7 分钟

假如你要从头开始开发一个 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 开发的国内同行们提出你们的观点和看法,让我们一起讨论。

2013-11-07 12:227481
用户头像

发布了 88 篇内容, 共 262.2 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

元气部落仿站开发,元气部落盲盒系统APP开发

WDL22119

盲盒小程序开发 盲盒源码 盲盒H5开发 盲盒APP系统开发 元气部落仿站开发

GPU渲染全解读:GPU渲染器的发展与对比

Finovy Cloud

渲染器 GPU服务器

如何高效的进行接口测试?【工具篇】

Liam

测试 Postman 接口测试 API接口管理 接口测试工具

LeaRun.Java表单快速开发工具

力软低代码开发平台

Git 不要只会 pull 和 push,学学这 5 条提高效率的命令

CRMEB

国家先进计算产业创新(宜昌)中心正式落地 由中科曙光、升哲科技联合运营

SENSORO

人工智能 物联网 新基建 智慧城市

三星堆重大发现!信息量巨大

Dylan

三星堆 四川省 文物

打造软件供应链安全平台,「安势信息」完成数千万元天使轮融资

安势信息

UI自动化测试框架搭建-优化企业微信通知

伤心的辣条

Python 程序员 软件测试 自动化测试 UI自动化

OSPO如何帮助保护你的软件供应链

安势信息

开源 DevOps 开源社区 SCA opensource

养老金融政策频出,市场有多大?

易观分析

养老消费

新一代政务云的“前移”与“致远”

云计算

2022中国信通院安全运营发展论坛成功召开

中国IDC圈

安全

Vue-8-计算属性和侦听属性

Python研究所

6月月更

国际SaaS企业有哪些机遇和挑战

ToB行业头条

俄航天局局长:外星生命或正在研究人类文明

Dylan

俄罗斯 外星人 航天局

应用实践 | Apache Doris 在网易互娱的应用实践

SelectDB

MySQL 数据库 最佳实践 apache doris 数据优化

InnoDB体系架构

龙空白白

MySQL InnoDB

转行软件测试跳槽到新公司,工作如何快速上手?

伤心的辣条

Python 程序员 软件测试 自动化测试 接口测试

测试员该知道的软件测试流程,你都知道吗?

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

从功能测试进阶自动化测试,熬夜7天整理出这一份3000字超全学习指南【附网盘资源】

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

给你一个项目,你将如何开展性能测试工作?

伤心的辣条

Python 程序员 IT 自动化测试 接口测试

直播回顾 | 传统应用进行容器化改造,如何既快又稳?

BoCloud博云

云原生 容器云 应用

云上360行丨深耕快消品行业数字化转型,纷享销客与华为云合力同行

华为云开发者联盟

人工智能 modelarts 快消品 纷享销客

博云《应用上容器指南》首发!详解应用容器化改造

BoCloud博云

容器 云原生 容器云 应用

3 个技巧来破解你可以立即使用的 Flutter 生产力!

坚果

6月月更

CloudTTY:下一代云原生开源 Cloud Shell

Daocloud 道客

Kubernetes 云原生 开源项目 网页命令行

CVPR2022 |小红书首创多图交互建模挑战热门研究课题,大幅提升行人重识别性能

小红书技术REDtech

Transformer CVPR2022 行人重识别

安势信息加入OpenSSF (开源安全基金会), 共建软件供应链安全

安势信息

Linux DevOps SCA工具 opensource

前端工程化:保姆级教学 Jenkins 部署前端项目

伤心的辣条

Python 程序员 jenkins 自动化测试 接口测试

35人首次上榜、行者皆勇者——创业邦3040新青年创投峰会圆满落幕

创业邦

Ruby on Rails与Java,哪一个才适合你呢?_Java_张龙_InfoQ精选文章