写点什么

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

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

关注

评论

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

Java集合--从本质出发理解HashMap

量贩潮汐·WholesaleTide

Java 前端

Cloudflare D1 + Drizzle组合拳

溪抱鱼

typescript 数据库

WebGL 开发数字孪生项目的难点

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

软件外包公司 数字孪生开发 webgl开发

施工SaaS创业的血泪教训:现金流不健康,我们是怎么陷进去的

前鼻音

Word一键生成ppt的软件有哪些?3个AI工具让你效率翻倍!

职场工具箱

人工智能 格式转换 办公软件 AIGC AI生成PPT

商品中心—商品卖家系统的技术文档

不在线第一只蜗牛

架构

携手同行:中烟创新中标四川信产低代码开发平台项目

中烟创新

springboot项目集成dolphinscheduler调度器 项目管理

刘大猫

人工智能 算法 DolphinScheduler 调度器 大模型

Drizzle ORM:轻量级数据库工具

溪抱鱼

数据库 Drizzle

AnythingLLM - 全功能AI应用,轻松与文档对话

qife122

AI 多用户

苹果电脑杀毒软件哪个最好用?MacBook如何杀毒?

阿拉灯神丁

恶意软件 Mac电脑使用教程 mac电脑维护工具 杀毒软件 CleanMyMac X中文

达梦数据库监控观测最佳实践

观测云

数据库

使用 ETL 工具对神舟通用数据库进行数据抽取与转换的实操技巧

谷云科技RestCloud

数据库 数据处理 数据迁移 ETL 神舟通用

20250709: WSL+Pycharm 搭建 Python 开发环境

codists

Python

NocoBase v1.8.0 正式版发布

NocoBase

开源 低代码 零代码 无代码 版本更新

AutoAgent:全自动零代码LLM智能体框架

qife122

自动化 LLM

微服务的拆分规范和原则

互联网工科生

如何识别SQL Server中需要添加索引的查询

电子尖叫食人鱼

sql

告别「一来一往」式对话,Soul App 全双工语音大模型让人机交互更有人情味丨社区来稿

声网

使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建

极限实验室

Docker DevOps console easysearch

中烟创新参编的《数据企业评估规范》标准正式发布

中烟创新

【7 月 27 日北京】Community Over Code Asia 2025,IoTDB 出品专题等你来听

Apache IoTDB

Gemini Cli使用教程

溪抱鱼

Google Cloud Agent Starter Pack

qife122

generative-ai agent-development

你的得力干将—Parallels Desktop 20 ,在任何Mac上运行Windows应用

阿拉灯神丁

MacBook Parallels Desktop 虚拟机 Mac电脑运行win 如何在Mac上运行win游戏 PD虚拟机激活秘钥

Meta 斥资 35 亿美元入股全球最大眼镜商;Proactor AI:实时监听语音对话,主动识别用户需求并自主行动丨日报

声网

Golang基础笔记十之goroutine和channel

Hunter熊

golang channel goroutine 有缓冲通道

Moho Pro 14 for Mac —— 专业级2D动画创作神器,让创意跃然屏上

柠檬与橘子

KaiwuDB X 济南大数据局:构建城市级重点车辆智慧监管中枢

KaiwuDB

解锁新生产力:AIGC如何赋能与重塑低代码开发流程

量贩潮汐·WholesaleTide

从AI制药到打破医疗资源壁垒,芯片如何让“医疗普惠”好用又不贵?

科技热闻

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