2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

软件测试 | 编程语言中的Interface

测吧(北京)科技有限公司

测试

Fabarta 与青岛市城阳区政府达成战略合作,共同推动区域数据要素市场建设

Fabarta

数据挖掘 数据要素 数据资产管理 图智能 数据要素流通

Prometheus实战-从0构建高可用监控平台(五)

小毛驴的烂笔头

Linux Prometheus

毕业设计-100w秒杀设计

Sam

架构实战营

Django笔记二十五之数据库函数之日期函数

Hunter熊

Python django extract trunc

2023-05-08:我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符, 并返回唯一字符的个数。 例如:s = “LEETCODE“ ,则其中 “L“, “T

福大大架构师每日一题

Go 算法 rust 福大大

如何安装OpenHarmony HAR

鸿蒙之旅

OpenHarmony 三周年连更

Flink数据流元素

阿泽🧸

flink 三周年连更

Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile

wljslmz

Linux 三周年连更

数据标注——数字世界的基石

数据堂

Prometheus实战-从0构建高可用监控平台(四)

小毛驴的烂笔头

Linux Prometheus

如何有效的向 AI 提问 ?

繁依Fanyi

人工智能

【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南

码界西柚

spring 缓存服务 三周年征文 CacheManager 缓存系统

对比编程语言的四种错误处理方法,哪种才是最优方案?

Python猫

编程

【干货集】PCBA板边器件布局重要性

华秋PCB

工具 电路 PCB 布局 PCB设计

数字化管理时代来临,瓴羊Quick BI、帆软Fine BI领跑国产BI市场

对不起该用户已成仙‖

什么是点对点传输?什么是点对多传输

镭速

Prometheus实战-从0构建高可用监控平台(三)

小毛驴的烂笔头

Linux Prometheus

锐捷网络,无边光景一时新

脑极体

网络

全新 – Amazon EC2 R6a 实例由第三代 AMD EPYC 处理器提供支持,适用于内存密集型工作负载

亚马逊云科技 (Amazon Web Services)

Amazon EC2

视频监控系统选择硬盘,绿盘、蓝盘、紫盘、黑盘、红盘到底选择哪个?

wljslmz

视频监控 三周年连更

Shell语法之基本运算符

芯动大师

Shell 三周年连更 shell变量

实现CyclicBarrier的原理和在Go中的应用

Jack

Django认证系统

测吧(北京)科技有限公司

测试

10年IT老兵亲述SpringCloud开发从入门到实战文档

程序知音

Java 微服务 java架构 Java进阶 spring-cloud

安卓机上 4G 内存跑 alpaca,欢迎试用轻量级 LLM 模型推理框架 InferLLM

MegEngineBot

开源 大模型 MegEngine LLM

接口测试

测吧(北京)科技有限公司

测试

JMeter实时性能监控平台实战

测吧(北京)科技有限公司

测试

今日分享丨inBuilder低代码平台有关前端的“道、法、术、器”

inBuilder低代码平台

前端 低代码平台

数据脱敏技术

穿过生命散发芬芳

数据脱敏 三周年连更

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