写点什么

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

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

关注

评论

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

区块链RWA软件的技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链RWA

mestrenova 14下载安装(核磁数据处理软件)-Mac/win

Rose

区块链ETF软件的核心功能

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链ETF

FunProxy - 使用 Rust 构建跨平台全链路测试抓包代理工具

vivo互联网技术

效率 rust 测试 代理 抓包工具

小红书笔记评论API接口(附代码示例)

tbapi

小红书API 小红书笔记评论接口 小红书笔记内容采集 小红书笔记评论api

即时通讯APP遭遇DDoS攻击怎么解决

网络安全服务

CDN 服务器 即时通讯IM 高防IP DDoS 攻击

B2B 电商 API 实战:1688 平台实时商品数据采集接口对接指南

代码忍者

Autodesk AutoCAD 2026破解版(cad2026中文安装包)-Mac/win

Rose

小红书笔记详情API接口(附代码示例)

tbapi

小红书笔记详情接口 小红书API 小红书笔记数据采集 小红书笔记详情api

BeeWorks IM:专业安全的企业私有化即时通讯软件

BeeWorks

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

最近爆火的MCP究竟有多大魅力?MCP开发初体验|得物技术

得物技术

mcpserver

掌握Multi-Agent实践(一):使用AgentScope实践入门和Workstation上手指南

汀丶人工智能

Agents

编程开发!IntelliJ IDEA 2025.1.1中文激活教程-Mac/win

Rose

百度公布动物语言转换专利!可实现与动物深度交流

科技热闻

文献解读-LettuceGDB: The community database for lettuce genetics and omics

INSVAST

基因测序 基因数据分析 Sentieon 变异检测 精准医疗

和 Mint 一起了解 SuperStacks:开启 Superchain 激励的全新范式

NFT Research

NFT web3

【FAQ】HarmonyOS SDK 闭源开放能力 — PDF Kit

HarmonyOS SDK

harmoyos

AI驱动仿真未来丨2025 Altair区域技术交流会华东站,报名开启!

Altair RapidMiner

AI 汽车 数字孪生 仿真 CAE

私有化im即时通讯及协同办公平台推荐!

BeeWorks

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

影响LED显示屏清晰度的三大关键要素

Dylan

商业 LED显示屏 全彩LED显示屏 led显示屏厂家 舞台表演

荣誉|奇点云荣登“2025杭州准独角兽企业榜单”

奇点云

AI 数据 大模型 专精特新 独角兽

AI 时代:程序员的史诗级转型与未来发展

代码制造者

AI编程

2D动画设计 Reallusion Cartoon Animator Mac中文激活版

Rose

演讲大咖预告丨2025 Altair离散元仿真技术研讨会火热报名中!

Altair RapidMiner

数字孪生 仿真 CAE 离散元仿真 工程机械

Amazon Q 从入门到精通 – 快速实战篇

亚马逊云科技 (Amazon Web Services)

低代码如何赋能前沿科技,打造智能企业生态

天津汇柏科技有限公司

人工智能 低代码

千万级成品数据集:OCR全能选手的“硬核底座”

数据堂

OCR 实现光学字符识别 数据标注 大模型 人工智能、

区块链ETF软件的技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链ETF

低代码云MES、轻量级部署、让智造更简单

万界星空科技

制造业 mes 云 原生云 CTO 云mes 低代码云MES

密码测评:确保数字安全的必要手段

黑龙江陆陆信息测评部

仓库拣货优化的领域建模

PeterOne

人工智能 运筹优化

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