写点什么

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:227949
用户头像

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

关注

评论

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

稳就业,保民生:2025年就业形势与实操指南,助你把握职场先机

Y11

找工作 招聘 就业 找实习 改简历

世界地球日,DeCloud如何助力节能减排?

PowerVerse

DePIN 节能减排 DeCloud

一天 Star 破万的开源项目「GitHub 热点速览」

电子尖叫食人鱼

GitHub

故障定位系列-2-服务&接口双粒度动态拓扑,精准定位共享连接池故障

乘云数字DataBuff

可观测性 故障定位 智能运维 运维监控

英特尔“大小脑融合”全新方案亮相:构建具身智能系统的理想选择

E科讯

“思考更长时间”而非“模型更大”是提升模型在复杂软件工程任务中表现的有效途径 | 学术研究系列

阿里巴巴云原生

阿里云 云原生

以人脸识别验票机为例,通义灵码如何助力嵌入式软硬件开发中的快速功能验证

阿里云云效

阿里云 云原生

用户说 | 手把手体验通义灵码 2.0:AI 程序员如何让我从“调参侠”进阶“架构师”?

阿里巴巴云原生

阿里云 云原生 通义灵码

天润融通携手天虹:AI Agent革新购物体验,优化服务效率

天润融通

天润融通AI Agent引领零售行业客户服务变革,塑造持久竞争力

天润融通

BeeWorks:低成本的国产化企业内网即时通讯

BeeWorks

即时通讯 IM 私有化部署 企业级应用

CAD放缩时文字消失怎么办

极客天地

CAD怎么将Z坐标调为0

极客天地

用户说 | 手把手体验通义灵码 2.0:AI 程序员如何让我从“调参侠”进阶“架构师”?

阿里云云效

阿里云 云原生 通义灵码

以人脸识别验票机为例,通义灵码如何助力嵌入式软硬件开发中的快速功能验证

阿里巴巴云原生

阿里云 云原生 通义灵码

国产直升机发展现状及思考

DevOps和数字孪生

航空航天 低空经济

全球线上直播会议丨快速赋能企业,仿真技术如何实现降本增效?

Altair RapidMiner

仿真 CAE hyperworks SimSolid Simlab

一文讲透“MCP协议+LazyLLM”实战:零基础秒建Agent分身!

商汤万象开发者

AI LLM

“思考更长时间”而非“模型更大”是提升模型在复杂软件工程任务中表现的有效途径 | 学术研究系列

阿里云云效

阿里云 云原生

2025 AI+研发数字峰会,我们在「AI 生产力工具创新论坛」等你来

阿里巴巴云原生

阿里云 云原生 通义灵码

用通义灵码写一个大学社团“自动化运营外挂” | 《趣玩》第3期

阿里巴巴云原生

阿里云 云原生 通义灵码

用通义灵码写一个大学社团“自动化运营外挂” | 《趣玩》第3期

阿里云云效

阿里云 云原生 通义灵码

2025深圳机器人展览会·高交会

AIOTE智博会

高交会 机器人展 机器人展会 机器人博览会

2025 AI+研发数字峰会,我们在「AI 生产力工具创新论坛」等你来

阿里云云效

阿里云 云原生 通义灵码

酒仙桥的AI变形记

脑极体

AI

最讨厌AI的人选了特朗普

脑极体

AI

天润融通智能工单系统,助力企业实现服务全流程可视化管理

天润融通

JDK的SPI有什么缺陷?dubbo做了什么改进?

不在线第一只蜗牛

Java

BeeWorks:专业的企业Im即时通讯平台

BeeWorks

IM 即时通讯IM 私有化部署 企业级应用

万字长文 | Apache SeaTunnel 分离集群模式部署 K8s 集群实践

白鲸开源

CAD怎么关闭保存备份bak文件

极客天地

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