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

作为一个Java程序员,我们常常会颇感自豪地说:金融行业的大系统一般都是用Java写的。有太多理由让我们相信,Java在企业级应用这块,起着举足轻重的作用。然而,事实果真如此吗?金融行业或许是那样,可是像Google、Amazon这样的大型网站呢?面对这样的疑问,在分布式应用、CORBA、JINI、J2EE、网格和SOA领域,有着10多年经验的Nati Shalom,根据事实,得出了“大多数大型网站不是用Java写的”结论,并且分析了形成的原因。原文一经发表,便引起了极大的关注。笔者希望本文可以对开发者如何选择适合自己的架构,起到一定的借鉴作用。 [size=2][/size] 在过去的几周里,我和我的同事Geva Perry就“为什么大多数大型网站不是用Java写的”这一问题进行了讨论。在blogosphere上,有大量信息用于描述Google、Amazon、eBay、LinkedIn、TypePad、WikiPedia之类受欢迎的网站的架构。 Pingdom上的人们收集了一些这样的信息,这些信息基于High-Scalability上的一些资料: [size=2][img=580,117]http://image.it168.com/cms/2007-10-26/Image/2007102695316.jpg[/img] [/size][b]图1[/b] 在看这些架构的过程中,一些发现,进入脑海:大多数这些站点使用LAMP(译者注:LAMP指Linux、Apache、MySQL和PHP的组合)作为核心运行期栈。一些甚至于开发了他们自己的文件系统(Google,Google文件系统);一些则使用缓存来解决数据库的瓶颈问题(memcached之类);大多数则是被迫由他们自己来开发这些解决方案,因为那个时候,没有能够满足他们需求的现成的选择对象。 [size=2][/size] 这些Web程序的应用栈与构建金融领域的关键性任务程序的应用栈有很大不同。在金融领域里,Java——较小程度上的J2EE——被广泛地使用。 [size=2]近年来,资本市场对可伸缩性的需求导致了中间件栈的快速转换。为了虚拟化CPU资源,引入了计算网格,它使得批应用程序并行化。为了虚拟化内存资源,数据网格也被引入。Spring变成当今世界上常用的开发框架。在GigaSpaces上,我们看到,Spring在越来越多的项目中成为J2EE应用的不二选择。[/size] [size=2][/size] 如果我们仔细观察两者(Web和金融领域),我们会发现,双方都在面临与可伸缩性有关的类似挑战。不要惊讶,两者没有引入相似的解决方案,其实都是为了迎接可伸缩性带来的挑战:在数据层,我们看到: 1. 添加一个缓存层以充分利用内存资源和减少I/O开销。 2. 将以数据库为中心的方式移到分区(又名碎片)的方式。在业务逻辑层: 3. 为应用层添加并行化语义(例如,MapReduce)。 4. 为了实现线性可伸缩性,移至向外扩展(scale-out)应用模型。 5. 为了事务处理,迁移典型的两阶段提交(two-phase)和扩充体系结构(XA)(参见:[url=http://natishalom.typepad.com/nati_shaloms_blog/2007/08/lessons-from-am.html][size=2]http://natishalom.typepad.com/nati_shaloms_blog/2007/08/lessons-from-am.html[/size][/url])。虽然有许多类似的挑战,并且在一定程度上,有类似的架构,但是似乎两者(Web和金融领域)采取了不同的路线,因为它涉及到应用栈。 [size=2][/size] 透过这些高可伸缩性网站,有人提出了这样的问题:为什么没人使用j2ee?以下可以作为这个问题答案的总结: 1. LAMP提供了一个有成本效益的解决方案(其中的大部分依赖于免费的开源产品)。 2. Java仍然被使用,只是没有被作为主要语言,例如,它被当作后台或者前台(例如,servlets)的一个组件使用。 [size=2][/size] 【译者序】抛开Nati Shalom的一些观点,笔者也有几点个人看法: 1. 从目前大多数网站的架构来看,在发展初期,大多会选择PHP、ASP.NET或者RoR之类轻、快的开发平台,而到了后期,只有当网站达到较大规模的时候,才可能开始考虑Java平台。毕竟,Java在Web开发这块,目前还做不到轻、快。选用Java平台,同时也意味着开发难度的增大,这无疑会增加开发成本。开发成本的增加,这在网站发展初期,是不大容易被接受的。 [size=2] 2. 在金融领域,稳定、安全是首先需要考虑的因素。就语言层面而言,Java相对于PHP、RoR来说,要成熟也稳定许多。再有,Java平台有大量的优秀的应用服务器可供选择,这对保证程序的稳定性和安全性,起着至关重要的作用。[/size] 所以,网站首先需要考虑的是成本,无疑LAMP会降低成本;而金融领域的应用,成本问题倒是其次了,在这种情况下,Java平台“好”的优势就发挥了出来。 2007-11-22 23:50南半球也有的,搜狐、阿里巴巴、ebuy都用java 2007-11-22 23:54南半球用什么技术 跟企业的历史积累有关,没有一概而论的,而且语言只是实现业务的工具听说腾讯还用CGI+javascript呢,呵呵在大型网站里ASP、php、JSP、perl、python等等都有应用 myspace 就采用的 微软平台作为解决方案,但总的来说用微软平台做大型网站的较少 2007-11-23 00:58cid73 大型网站和大型软件不是一回事啊, 网站的大小取决于内容量和访问量, 全部用手工编辑理论上也可以建造一个大型网站. 对网站的全部资源(具体表现为全部可以访问到的 url)进行精确描述统一管理实时监察, 再在这些资源上构建应用那才表现为软件开发, 这种情况下即使一个小小的图标也需要抽象化而不是直接访问它的 url, JavaEE 在这方面无可否认是有优势的. 另外通常所说的 Java 应用已经超出 Java 语言本身了, Java 语言只是 JavaEE 中的一种主流语言, 作者的观点有点过时. 2007-11-23 16:49zhaiduo 网站除了需要考虑成本,还要考虑系统的开发速度和维护方便,php很好的满足这些要求。 2007-11-25 15:21ttvast java作的程序不灵活,是由其框架决定的。 j2ee下更新了一段程序,可以不重起app server实现吗? java用于金融机构,主要因为有顶级的商业软件商支持,金融机构都是怕死鬼,怎么敢用开源的东西呢。 老是说,写java用structs, spring这种框架都落下乘了,这种框架自身都没有技术支持又可能有bug,再重要应用中使用真是很可笑。 2007-11-26 18:47Macolex 往易好像是java吧 2007-11-27 13:44showsa 网易有php也有python 本篇文章来自:百家学院 (www.9php.com),复制请注明.

### 回答1: Go语言的前景非常乐观,它比Java更加简单易学、更快速、更高效,具有更好的性能和可扩展性。它的代码更容易维护,由于其高效的性能和良好的可扩展性,Go语言正成为软件开发工程师们倾向于使用的语言。虽然Go语言可能不会完全取代Java,但它确实会抢占一定的使用率。 ### 回答2: Go语言作为一种编程语言,具有广阔的发展前景。首先,Go语言由Google开发并公开发布,背后有强大的支持和维护团队,这为其持续的发展提供了保障。其次,Go语言具有简洁易懂的语法和丰富的标准库,使得开发者可以更高效地开发和维护代码,从而提高开发效率。此外,Go语言还支持并发编程,拥有轻量级线程(goroutine)和基于消息传递的通信机制(channel),这使得Go语言在处理高并发和大规模数据处理方面具有很大的优势。 与Java相比,Go语言的优势在于以下几个方面。首先,Go语言的编译速度非常快,使得开发者可以更快地获取到运行结果,提高开发效率。其次,Go语言的内存管理由其自身的垃圾回收器负责,开发者无需手动管理内存,减轻了开发负担。此外,Go语言具有更小的依赖性,可执行文件大小较小,这使得部署和分发更加方便。 虽然Go语言在某些领域的性能和开发效率方面具备优势,但是否能够完全抢占Java的使用率则还不确定。Java作为一种老牌而且成熟的编程语言,有着庞大的生态系统和广泛的应用领域。并且,许多企业和开发者已经使用Java开发了大量的应用程序,迁移到其他语言需要付出较高的成本和风险。因此,Go语言可能在某些特定领域崭露头角,但在大多数场景下,Java仍然会持续保持其使用率。 ### 回答3: Go语言是一种相对较新的编程语言,目前在软件开发领域的发展势头非常迅猛,其前景非常广阔。 首先,与Java相比,Go语言有以下几个明显的优势。第一,Go语言在性能方面表现出色,其编译器和运行时系统经过精心设计,可以提供较高的执行效率。第二,Go语言具有并发编程的强大能力,它采用了轻量级的协程(goroutine)和通信机制(channel),使得并发编程变得更加简洁和安全。第三,Go语言的语法简洁易懂,学习曲线相对较低,让开发者可以更快速地上手和开发应用。第四,Go语言拥有优秀的包管理工具(go modules)和丰富的标准库,使得开发者可以更方便地组织和重用代码。 然而,尽管Go语言在技术上有这些优势,要说是否会抢占Java使用率还为时过早。Java作为一种老牌编程语言,已经在各个领域得到广泛应用,拥有庞大的开发者社区和成熟的生态系统。虽然Go语言在某些特定的场景下表现出色,但Java在企业级应用和大型系统方面仍然是非常强大和稳定的选择。此外,迁移现有的Java应用到Go语言需要一定的成本和风险。因此,目前来看,Go语言可能不会完全抢占Java的使用率,而是在特定领域和场景中与Java共同存在和发展。 总的来说,Go语言具备良好的前景,并且在一些方面具备与Java竞争的优势。然而,在Java的强大基础和广泛应用的支持下,Go语言需要逐步发展自己的生态系统和应用场景,才能真正成为Java的有力竞争者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值