<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[用Java做互联网开发，优势究竟在哪?]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 10 Apr 2010 17:05:24 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	先说本人，俺对c，php，perl都有过几年开发经验。 说实话java我并不精通。讨论的重点java在利用spring等架构的web开发，对比php等在开发运维和性能方面有那些优势。尤其在电子商务等稍稍复杂一些的网站，java在业务实现上有那些优势。<br/><br/>人人都说java适合大项目，但没听说谁倒出真正原因。我先说说自己的感觉。<br/><br/>java优势，是适合团队开发，软件工程可以相对做到规范，这是一个很难比拟的优势。<br/><br/>java劣势，是j2ee的架构很完美，第一版软件可以做满意，但是很不适合互联网模式的持续不断修改。互联网软件工程管理上的不足，持续的修修补补导致架构的破坏。系统更新需要重启web服务，很难接受。<br/><br/>tong0245：做web开发的 不管php perl pyton ruby 都是脚本语言 java不是<br/><br/>野狼：这是java的优势？ 是不是脚本语言根本无所谓。 虽然可以编译，我认为甚至也可理解java一样是脚本语言，不算独立运行 .<br/><br/>我一贯使用c写web程序， java有些好的理念， 但常常人为把事情搞复杂<br/><br/>艾斯尼勒：我觉得可能是这样，由于有jvm的存在，大型的系统开发起来还是象单机的程序那么简单而php……要考虑的貌似更多而且你用java就oo嘛，设计好嘛嘛……据说是能很好的提升可扩展性和可维护性<br/><br/>野狼 ： 以前在公司，负责一套java做的系统，业务的复杂程度国内少有，最初请过sun工程师做的架构，两年多来敏捷开发，项目管理做的不算差，但业务的发展导致了100多次上线，架构破坏严重，面临重构。反思一下，在自己的项目中看不到java的优势在那里。<br/><br/>感觉作为成品，卖给客户的物流erp系统，能发挥java的特点。 有做运营性的互联网项目的兄弟，介绍一下开发管理经验。<br/><br/>javavsnet ：1.静态语言 2. 有大量成熟框架 再补充一点 3. 语言简单，健壮，不容易出错，适合民工使用。<br/><br/>野狼：所谓静态语言，是对比脚本语言？那没有任何优势。<br/><br/>php，asp成熟框架不见得少，hibernate搞得程序员sql都不会写，而且复杂查询性能不好。论语言简单，好像asp最简单，php也比java容易些吧。我问的也是，java在运营性的互联网项目的优势， erp等不算。<br/><br/>javavsnet ： 如果你只用jsp，那也不用重启，修改jsp后直接拷贝到相应目录就可以。如果你用了jsp之外的技术，那是需要重新启动。java是静态语言，有丰富成熟的框架可用。比如hibernate这样的ormapping.一般来说，Java做的东西很复杂，很强大。<br/><br/>野狼：单纯的jsp当然了不需要。 是否重启不是重点。<br/><br/>javavsnet ：Java是静态语言，有静态类型检查，健壮，如你所说，java优势是适合团队开发，软件工程可以相对做到规范。对于互联网项目，可以分为两类。一类是web 2.0，需求变化快，网站的进化速度很快。比如开心网，出点什么错误用户也能忍受，用户喜欢的是炫目的功能。这方面Java没有优势，是劣势。<br/><br/>另一类是Java的强项，所以目前是Java的天下。就是对可靠性要求极高的互联网项目。比如ebay，绝对不允许交易出现失误，系统crash谁受得了？<br/><br/>还有就是Java的性能比脚本语言强，和c性能比Java强是一个道理。对大容量系统的支持比php，perl们容易。asp最简单，php也容易，但是他们谁能跟Java比健壮性？<br/><br/>用php+c编的系统，性能上来了，但是可靠性呢？在可靠性方面，你对php+c有信心还是对Java有信心？<br/><br/>综合来看，Java做互联网项目开发速度比脚本语言慢，但是可靠性和性能上要强，是各有所长吧。<br/><br/>野狼：之前见过淘宝的首席架构师，淘宝主营业务的确曾经考虑性能等愿意， 由php转的 java.不过我不认为java在性能上有优势、<br/><br/>真正意义上的web2.0极少， 不如就说普通类型网站java没有优势。 ――不过事实上现在倒是java网站越来越多，甚至招聘php工程师都不好找。<br/><br/>您说的可靠性，是安全还是稳定性？。 安全基本上和语言无关， 稳定性似乎和语言也没关系啊。<br/><br/>javavsnet ：说Java性能有优势，是编辑型语言对解释型语言的优势，这是根本性的优势。不过在web应用中，这部分性能占的比重不大。我觉得对于web应用的性能来说，关键的是语言对并发的处理能力。Java有成熟的多线程模型，可以充分利用多核CPU.说Java应用可靠，是因为Java没有指针，坏代码会造成内存泄露，但是不会造成系统crash.一般来说，内存泄露需要一定时间的积累才会消耗光系统内存，这个过程给了管理员机会来发现问题，解决问题。还有Java是静态类型，这样编译器可以在编译时发现一些类型不匹配问题，在动态类型语言中只能靠程序员自己了。<br/><br/>野狼： 如您所说， web应用编译型语言不体现优势 .<br/><br/>系统的并发的处理能力和语言不是直接相关。 我理解Java有成熟的多线程模型，是用于处理复杂程序逻辑上。而比如简单的打开模板再输出，不可能超过apache+php的并发能力。<br/><br/>所有解释语言都没指针，都不会因为程序员疏忽造成内存泄露系统crash. 在这点上解释语言应用更可靠，甚至不会造成内存泄露。<br/><br/>javavsnet ：并发有两部分，一部分是web server对并发request请求的处理，这里Java和其他语言一样，都依赖Apache的处理能力。<br/><br/>另一部分是application server对应用逻辑的并发处理，这里语言本身对并发的支持就很重要了。<br/><br/>野狼：java的语言能力肯定比php等强。<br/><br/>不过我理解java的语言能力是配合框架，体现在特殊应用上， 比如单例模式，而不是对并发能力的提升。<br/><br/>处理相同的业务算法，并发只和语言的处理效率，以及webserver相关。<br/><br/>思一克： 好像有的WEB应用不用JAVA做不出来，就是AJAX那类的，著名的是GOOGLE MAP等。AJAX技术， 将WEB页面做的可以和本地GUI一样漂亮。和PHP， CGI类的区别是本质性的。GOOGLE MAP的成功就是用这个<br/><br/>野狼 ：<br/><br/>AJAX就是异步JavaScript和XML，和java毫无关系。 AJAX不是任何新的技术，也不是新的语言，协议。<br/><br/>算是整理了一套javascrpit 在特殊情况的应用。 其实是微软先使用的AJAX在商业产品中。也许正式这个简单而又强大的工具，让众多的程序员更加认可和信赖极限编程，从而引起了Java敏捷开发的狂潮吧。<br/><br/><br/><br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 用Java做互联网开发，优势究竟在哪?]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>