本文讨论的重点是java在利用spring等架构的web开发,对比php等在开发运维和性能方面有那些优势。尤其在电子商务等稍稍复杂一些的网站,java在业务实现上有那些优势。
人人都说java适合大项目,但没听说谁道出真正原因。我先说说自己的感觉。
java优势,是适合团队开发,软件工程可以相对做到规范,这是一个很难比拟的优势。
java劣势,是j2ee的架构很***,***版软件可以做满意,但是很不适合互联网模式的持续不断修改。互联网软件工程管理上的不足,持续的修修补补导致架构的破坏。系统更新需要重启web服务,很难接受。
以下是我与网友们的讨论
tong0245:做web开发的,不管php perl pyton ruby 都是脚本语言,而java不是。
野狼:这是java的优势? 是不是脚本语言根本无所谓. 虽然可以编译,我认为甚至也可理解java一样是脚本语言,不算独立运行 。我一贯使用c写web程序, java有些好的理念, 但常常人为把事情搞复杂。
艾斯尼勒:我觉得可能是这样,由于有jvm的存在,大型的系统开发起来还是象单机的程序那么简单而php...要考虑的貌似更多而且你用java就高级,设计也好。据说是能很好的提升可扩展性和可维护性
野狼 : 以前在公司,负责一套java做的系统,业务的复杂程度国内少有,最初请过sun工程师做的架构,两年多来敏捷开发,项目管理做的不算差,但业务的发展导致了100多次上线,架构破坏严重,面临重构。反思一下,在自己的项目中看不到java的优势在那里。感觉作为成品,卖给客户的物流erp系统,能发挥java的特点。 有做运营性的互联网项目的兄弟,介绍一下开发管理经验。
javavsnet :1.静态语言 2. 有大量成熟框架 再补充一点 3. 语言简单,健壮,不容易出错,适合民工使用.
野狼:所谓静态语言,是对比脚本语言?那没有任何优势。
php,asp成熟框架不见得少,hibernate搞得程序员sql都不会写,而且复杂查询性能不好。论语言简单,好像asp最简单,php也比java容易些吧。我问的也是,java在运营性的互联网项目的优势, erp等不算。
javavsnet : 如果你只用jsp,那也不用重启,修改jsp后直接拷贝到相应目录就可以。如果你用了jsp之外的技术,那是需要重新启动。java是静态语言,有丰富成熟的框架可用。比如hibernate这样的ormapping。一般来说,Java做的东西很复杂,很强大。
野狼:单纯的jsp当然了不需要。 是否重启不是重点。
javavsnet :Java是静态语言,有静态类型检查,健壮,如你所说,java优势是适合团队开发,软件工程可以相对做到规范。对于互联网项目,可以分为两类。一类是 web 2.0,需求变化快,网站的进化速度很快。比如开心网,出点什么错误用户也能忍受,用户喜欢的是炫目的功能。这方面Java没有优势,是劣势。另一类是Java的强项,所以目前是Java的天下。就是对可靠性要求极高的互联网项目。比如ebay,绝对不允许交易出现失误,系统crash谁受得了?还有就是Java的性能比脚本语言强,和c性能比Java强是一个道理。对大容量系统的支持比php,perl们容易。asp最简单,php也容易,但是他们谁能跟Java比健壮性?用php+c编的系统,性能上来了,但是可靠性呢?在可靠性方面,你对php+c有信心还是对Java有信心?
综合来看,Java做互联网项目开发速度比脚本语言慢,但是可靠性和性能上要强,是各有所长吧。
野狼:之前见过淘宝的***架构师,淘宝主营业务的确曾经考虑性能等愿意, 由php转的 java。不过我不认为java在性能上有优势、真正意义上的web2.0极少, 不如就说普通类型网站java没有优势。 不过事实上现在倒是java网站越来越多,甚至招聘php工程师都不好找。您说的可靠性,是安全还是稳定性? 安全基本上和语言无关, 稳定性似乎和语言也没关系啊。
javavsnet :说Java性能有优势,是编辑型语言对解释型语言的优势,这是根本性的优势。不过在web应用中,这部分性能占的比重不大。我觉得对于web应用的性能来说,关键的是语言对并发的处理能力。Java有成熟的多线程模型,可以充分利用多核CPU。说Java应用可靠,是因为Java没有指针,坏代码会造成内存泄露,但是不会造成系统crash。一般来说,内存泄露需要一定时间的积累才会消耗光系统内存,这个过程给了管理员机会来发现问题,解决问题。还有 Java是静态类型,这样编译器可以在编译时发现一些类型不匹配问题,在动态类型语言中只能靠程序员自己了。
野狼: 如您所说, web应用编译型语言不体现优势。系统的并发的处理能力和语言不是直接相关。 我理解Java有成熟的多线程模型,是用于处理复杂程序逻辑上。而比如简单的打开模板再输出,不可能超过apache+php的并发能力。所有解释语言都没指针,都不会因为程序员疏忽造成内存泄露系统crash。 在这点上解释语言应用更可靠,甚至不会造成内存泄露。
javavsnet :并发有两部分,一部分是web server对并发request请求的处理,这里Java和其他语言一样,都依赖Apache的处理能力。另一部分是application server对应用逻辑的并发处理,这里语言本身对并发的支持就很重要了。
野狼:java的语言能力肯定比php等强。不过我理解java的语言能力是配合框架,体现在特殊应用上, 比如单例模式,而不是对并发能力的提升。处理相同的业务算法,并发只和语言的处理效率,以及webserver相关。
思一克: 好像有的WEB应用不用JAVA做不出来,就是AJAX那类的,著名的是GOOGLE MAP等。AJAX技术, 将WEB页面做的可以和本地GUI一样漂亮。和PHP, CGI类的区别是本质性的。GOOGLE MAP的成功就是用这个。
野狼 :AJAX就是异步JavaScript和XML,和java毫无关系。 AJAX不是任何新的技术,也不是新的语言,协议。算是整理了一套javascrpit 在特殊情况的应用。 其实是微软先使用的AJAX在商业产品中。
【51CTO观点】JAVA与PHP ,二者的开发成本都不低。不过由于Java开源,所以代码重用率很高,在网上就可以找到很多开源的技术、框架,在有些时候可以降低很多成本。java 的扩展库特别多,开发起来相对比较容易。不过Java对服务器性能的要求高,因为Java虚拟机和连接池都是比较耗资源的。单看纯运用时,理论上JAVA的性能及安全可靠性也稍逊PHP。总之,JAVA与PHP都有各自的优势,大家在做互联网开发时,还是具体情况具体分析吧。
【编辑推荐】