写点什么

辩论:为什么多数大型网站不是用 Java 写的?

  • 2007-11-01
  • 本文字数:1990 字

    阅读完需:约 7 分钟

GigaSpaces Nati Shalom 最近问到为什么多数大型网站是用非Java 语言编写的。这个问题在Java 社区引发了一场大辩论,InfoQ 抓住机会了解到更多围绕这个问题的主要观点。

Shalom 在他的帖子中指出,他所知道的许多站点使用了 LAMP(Linux, Apache, MySQL, PHP/Perl)组合,有几个网站还开发了自定义的文件系统(如 Google’s GFS )或利用了缓存技术(如 memcached )。Shalom 指出了为大型 Web 应用和大型财务应用开发的各种可伸缩性解决方案的相似之处:

在数据层我们看到如下特征: 1. 增加一个缓存层以利用可用内存资源并减少 I/O 开销
2. 从中央数据库方式转向分区方式,也称为 shards(注: shards 是 google 贡献给 hibernate 的一个项目,目标是通过 hibernate 在多重数据库上提供一个统一的视图。)

在业务逻辑层: 3. 给应用层增加并行语义(如 MapReduce)
4. 转向向外扩展(scale-out)应用模型以达到线性可伸缩性
5. 远离经典的两阶段提交和 XA 事务处理(参见:来自 Pat Helland 的教训:生命超越于分布式事务

Shalom 接着质疑这些相似的解决方案怎样能有这么不同的应用组合数量。Shalom 指出一个可能的原因是由 Todd Hoff 提出的——LAMP 组合强大且免费,Java 是被使用了,但是作为一个辅助组件而非核心来使用。

其他一些观点:

GigaSpaces 的 Mickey Ohayon 有一个更细致的回应:

从技术的角度看: - 用 Php / Perl 开发快且简单,而用 JEE 更复杂

  • 从历史上讲有更多可用的知识、主机服务和开发者
  • LAMP 被证明是稳定且流行的,而 JEE 更多的是一个基础架构
  • JEE 需要应用服务器,而这对 Web 系统来说有时过于有杀伤力了
  • 从短期看,轻量级 Web 语言(Php/Perl)应对变化更加灵活(作为基于非 MVC 的糟糕架构,当然从长期看任何改变的花销都非常高)
  • 部署和测试 Java 应用很慢而且需要相对性能更强的机器

从财务的角度看: - JEE 开发者比 Perl / Php 更昂贵

  • 学习曲线和上市时间更长
  • 托管 JEE 应用服务器更昂贵

诺基亚的 Jilles Van Gurp 评论说 Java EE 是对企业领域来说是最优的,这一领域需求集合不同于面向消费者大型网站:

这些网站有相对简单的数据基础结构;对诸如事务和持久层(mysql + 非事务 ACID 后端大多数情况下就足够好了)的需求不严格;实际上没有对重型 Web 服务栈的需求;等等。基本上所有 J2EE 素材都是优秀的,大部分只是对面向消费者网站实现具有过度杀伤力。在这里你不需要迷人的 IDE;灵活的消息传递总线;难忍复杂的事务逻辑等等。取而代之,焦点集中于极度可伸缩性;内存使用;cpu 使用;缓存;等等。那些事情可由现货供应组件如 squid、apache、分布式 linux 文件系统等等来解决。他们也可由 Java 组件解决,但是这需要你有 J2EE 方面的专家去整合它们。这并不容易招募到,因为当前劳务市场缺乏,而且这些人倾向于从事报酬很好的企业类型的工作。

Van Gurp 也认为 Java 占据了今后的有利位置:

最终,我认为所有这些都正在改变。运行 ruby 或 php 的 Java 实现可以给你的 php 或 rails 应用给出一个好的安全性、性能、可伸缩性及可管理性推进。如果你正在运作这些大型系统部署却不尝试这一点是愚蠢的。这对 php 和 ruby 开发者来说仍是相对未知的,相当多的人没有对完成事情的效率给予足够的关心,相反它们宁愿在硬件上投资。但是一旦他们转而使用 Java 应用服务器上的 php 或 ruby,他们将发现一个额外组件的世界,可以进一步增强他们的应用。作为证据,Google 的 Web 开发工具链(部分开源)代表了极端大型和快速原型 Web 开发的技术发展水平。而且从 Web 开发者的视角看,应用逻辑 100% 用 Java 书写。据我了解,Google 在它们的 Web UI 层没有大规模部署 php 或类似架构 (如果不是这样,我很有兴趣去学习学习)。

看到辩论展开之后,Shalom 表示他与 Michael O’Keefe 的观点一致,该观点囊括了上面表述的几个观点。Shalom 还提及,伴随诸如 Spring on Rails Caucho 的基于 Java 的 PHP 实现 的出现,市场出现了集中的趋势,而且开发可伸缩站点的挑战将使 LAMP 套件和 Java 在将来日趋靠拢。

你怎么认为?

查看英文原文: Debate: Why are most large-scale websites not written in Java?

2007-11-01 01:498374
用户头像

发布了 150 篇内容, 共 47.3 次阅读, 收获喜欢 10 次。

关注

评论

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

哪些项目管理软件值得一试?9款推荐清单

爱吃小舅的鱼

项目协同进度软件

腾讯云的相关DDoS攻击问题概览

网络安全服务

腾讯云 服务器 DDoS 腾讯云服务器 DDoS 攻击

阿里巴巴商品搜索API返回值中的关键信息点

技术冰糖葫芦

API 接口 API 测试 API 协议 API 优先

鸿蒙生态崛起,开发者如何抓住这波“红利”?

最新动态

深度解读GaussDB逻辑解码技术原理

不在线第一只蜗牛

数据库 oracle

聊聊jvm的内存结构, 以及各种结构的作用

EquatorCoco

Java JVM 开发语言

资源成本降低60%,揭秘Serverless的省钱秘籍

华为云开发者联盟

容器 运维 #Serverless CCE

CQ社区版 v2024.10 | 支持k8s、helm部署!

BinTools图尔兹

k8s Helm 数据安全 数据库管理 CloudQuery

云电脑的性价比高么

青椒云云电脑

云电脑

汇聚全球智慧·共绘软件蓝图,2025北京软博会

AIOTE智博会

软博会 世亚软博会 北京软博会

淘宝商品类目API的获取与应用探索

科普小能手

API 接口 API 测试 淘宝API接口 淘宝数据采集 淘宝评论API

专业的RAW转换器Capture One Pro 21 for Mac

Mac相关知识分享

图像编辑器

Java面试最常见的1309 道 BAT 大厂 java 面试题(附答案分享)

采菊东篱下

java面试

掌握数据,赢得市场 —— 淘宝商品详情API让电商运营更精准

技术冰糖葫芦

API 接口 API 测试 API 协议 API 优先

8大主流全生命周期项目管理工具对比

爱吃小舅的鱼

全生命周期项目管理工具

到底什么学历可以胜任程序员?

秃头小帅oi

《一篇就够系列》之HTTP详解,覆盖高频面试考点!

EquatorCoco

面试 网络协议 HTTP

实现员工职业目标与项目目标对齐的策略

爱吃小舅的鱼

目标对齐

利用 Vector 将 Kafka 中的日志数据高效写入 GreptimeDB

Greptime 格睿科技

kafka 时序数据库 vector

ppt文字描边怎么设置?用这2个软件轻松制作!

职场工具箱

职场 PPT 办公软件 AI生成PPT

2024年中国IT用户满意度调研结果公布

Geek_2d6073

袋鼠云产品功能更新报告12期|让数据资产管理更高效

袋鼠云数栈

浅谈运营商政企存量客户运营

鲸品堂

大数据 产品运营 运营商 企业号 2024年10月PK榜

最好学的编程语言一览,建议收藏

高端章鱼哥

【活动预告】Apache TsFile 干货总结在 COSCON'24 等你~!

Apache IoTDB

倒计时1天 | 袋鼠云秋季发布会明日10:00开幕,我们云上见!

袋鼠云数栈

团队沟通技巧:管理层与技术人员的协作之道

爱吃小舅的鱼

团队沟通技巧

如何选择项目管理软件?8款工具详解

爱吃小舅的鱼

项目管理软件

Laravel后台极速开发框架 - 集成日历组件

YangGe

laravel

代码审查不足?教你改善流程的策略

爱吃小舅的鱼

代码审查

Java EasyExcel 导出报内存溢出如何解决

不在线第一只蜗牛

Java 内存

辩论:为什么多数大型网站不是用Java写的?_Java_Ryan Slobojan_InfoQ精选文章