新闻背后:看Java和动态语言的两极分化
日前,CSDN翻译自国外博客的一文:为什么大部分大规模网站不是用Java写的?引来很多网友的关注和评论,而国外的原文:Why most large-scale Web sites are not written in Java亦在国外引发了激烈的争论。 为此记者采访了纯月(CSDN网名),其实在较早的时间纯月就关注了原文并在个人博客中做了简单点评。 记者:作为Java开发者,您是否认同原文“most large-scale Web sites are not written in Java”这个观点,能谈谈原因么? 纯月:首先我认为《Why most large-scale Web sites are not written in Java》这个标题是原文作者有意而言之,目的是为了吸引人的眼球,引发大家的讨论。其次作者在文中列出的实例站点基本都是一些内容管理系统,它们不需要JEE庞大的体系结构,因此使用LAMP架构是一个明智的选择。但这些网站并不能代表“大多数大规模网站”。 金融、电信等行业以及一些大型电子商务网站例如Ebay,Amazon等仍然是基于Java的,这些公司有大量的资金可以投入硬件和购买服务,因此能够方便的构建具有高伸缩性的负载平衡,应用集群,数据库阵列等方案。 记者:文中所列举的网站不同于传统门户网站,是互联网的后起之秀,多带有新一代互联网的气息。从中些许可以看出网站架构语言的趋势,这是否因为着未来使用Java的网站会越来越少? 纯月:现在很多新兴的网站通常最初由一个或几个人出于兴趣开发,由于受资金限制,更倾向于选择PHP,Ruby等快速开发语言和免费的LAMP架构,这些网站通常是读大于写,无需复杂事务,当网站访问量增大时,可以通过在应用层做缓存,实现负载平衡或数据库分区(例如Shards)等方法来实现伸缩性。 记者:文中的网站多基于PHP,Python,Perl,Ruby等脚本语言,您认为相对于Java主要有哪些优势? 纯月:PHP,Python,Perl,Ruby等脚本语言相对于Java主要有以下几个方面的优势: l 非常易学,开发速度快。而基于Java或JEE的应用学习难度相对较高,开发,测试和部署Java应用速度相对较慢,通常对开发用机的性能要求比较高。 l 国内外有很多成熟的CMS(例如Mambo),Forum(例如Phpbb,Discuz)都是基于PHP开发的,并且都得到了广泛的应用。 l PHP虚拟主机非常多,而且价格便宜。相对而言Java的虚拟主机就要昂贵的多。 因此我认为,在内容管理领域的网站开发中,脚本语言仍然会大行其道。 记者:“脚本语言仍然会大行其道”,在这种情况下,您认为Java和脚本语言各在哪些领域发挥哪些作用呢? 纯月:随着Java应用的深入,人们渐渐开始不再把Java作为万金油。Java在Web开发上的确不具有明显的优势,Struts,JSF等框架相比基于脚本的语言增加了开发复杂性,很多开发者开始回到基于JSP的简单MVC2+持久层的方案。甚至在其他表现层上,例如桌面应用中Java都不具有优势。而Java和JEE更适合开发企业后端系统,例如消息中间件,ESB等。 此外,在金融和电信以及ERP和电子商务等领域,相比基于内容管理的网络公司他们对业务系统需要更高可靠性,容错性来保证交易事务成功。因此金融,电信等行业以及企业选择ERP时,更倾向于选择成熟的开发商,成熟方案和成熟产品,而非单单选择某种语言,技术,或一个应用服务器。例如IBM,SAP,Weblogic等大型软件开发商卖的都是整套的实施方案,从行业咨询到流程优化重组,从软件到硬件,从数据库到应用服务器,从开发部署到大规模部署的服务等等。而这些软件商的主流软件产品都是基于Java的。 记者:目前Java开发着仍是语言开发者种比例最大的人群,您认为在动态轻便的脚本语言越来越受欢迎的情况下,开发者是否应该学习一门动态语言呢? 纯月:我个人很鼓励Java程序员尝试拥抱PHP,Python,Ruby等脚本语言,让自己在开发时能多一种选择。 一方面,实践证明,基于LAMP架构作为中小规模应用的架构非常稳定。如果你要开发的网站或者基于Web管理系统是相对简单的基于数据库的应用,无需复杂的事务逻辑、持久层和消息总线,LAMP是一个不错的选择。 另一方面,一些Java应用服务器也开始支持PHP,例如Caucho,它使用Java重新实现了整个PHP编译和解释器。这样可以让程序员在享受PHP快速开发的同时,也享受Java应用服务器带来的稳定和伸缩性。 记者:谈到这里,对于Java开发者学习脚本语言并结合实践这方面,能否给些建议? 纯月:由于PHP和Java语言都属于C语系,所以对于Java程序员来说学习PHP没有任何难度。但是Java程序员应该站在更高的层次来学习PHP,即把Java优秀的设计模式引进到PHP中,我们不建议Java开发者使用一些现成的PHP框架,例如Cake Framework等等,而是尽量构建自己的简易的MVC2,模板引擎,标签库,工作流等等。此外PHP中还有很多优秀的开源框架,例如Pear,ADODB,JPGraph等可以利用。 最后,我们提倡程序员根据应用的具体情况选择合适的方案,例如在系统开发时,可以在一个应用的不同部分选择不同的技术,例如后端事务处理选用Java,前端Web展示层选用PHP/AJAX,桌面客户端选用VB,嵌入式客户端选用C,客户端和后台通过Webservice技术实现交互。 此外,程序员在关注编程语言的同时,更应该树立一种系统全局观,把安全和性能这两个因素通盘考虑。在安全上,关注程序是否能够防止SQL注入,是否能够防止暴力破解登陆口令和DDOS攻击,今后能否方便的集成到统一身份认证或单点登陆系统中。 在性能上,Web开发只否实现了SEO和缓存静态页面,业务层的常用数据是否做了内存缓存处理,数据库参数是否做好了充分的优化,今后如果要实现伸缩时采用集群冗余还是数据分区,要充分估计系统内可能遇到瓶颈的地方,一些同步处理是否可以改成异步的等等。【 呐不喊】 纯月简介:擅长JEE领域开发,对企业级系统架构,设计模式,敏捷开发等方面有深入研究。目前任教江苏大学,并兼职从事电子政务和数字化校园的应用开发,主要项目涉及门户,内容管理,工作流,应用数据集成等。2006-2007年度CSDN最受欢迎Blog第二名。 个人博客:http://hi.csdn.net/danny_xcz/profile
责任编辑:
评论加载中…
新闻线索
如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13256307008