在最近图灵公司总编刘江发布的一个博客中,提到PHP 3之后的主要语言开发者、Zend公司创始人Andi Gutmans向Java平台发难,说其已经失利于现代Web开发的这场战争,寄希望于JVM并不能挽回颓势。但社区似乎并没有完全支持Gutmans的 这一观点。
根据Gutmans的表述,最终目的的不同是动态语言和Java平台选择不同道路的主要诱因。Java从所诞生的那一刻起就注定是为企业平台开发服务,而动态语言则好像是为Web开发量身打造,这一发展趋势仍然在延续:
[大 型企业级项目团队中最优秀的人]恰恰忽视了Web,因此Java EE设计时并没有以Web为中心,而且关注在企业集成、事务管理和其他后端处理上。虽然Java EE通过Servlet和JSP支持Web开发也有不短的历史,但是掌握标准发展的大公司们忽视了Web的RESTful本质,仍然在向通用平台的方向上 走。
而与此同时,建于C语言库和工具的生态系统之上的LAMP架构,则成了Web程序最流行的开发平台。其中最常用的语言是PHP。 由于PHP专注于Web开发,而且为此不断演变,它简直就是为Web范型(paradigm)量身打造的,能够快速和容易地解决常见的Web问题,因此获 得了最大的市场份额。
Java平台显然也注意到了Web开发的兴起,当包括CRM、ERP、报表、文档管理等业务应用程序也都转向了Web 后,Java厂商开始支持各种标准和非标准的Java Web框架,比如JSF、Struts、Spring MVC等,以使得Java适应Web。但结果并不理想,Gutmans分析其原因是:
它们都无法解决Java在Web上的主要问题:由于严格的类型化和架构过度复杂,开发时间和开发人员的技能要求都更高,也就是说,总成本无法令人满意。
而且,大的Java厂商还什么都想占着。一方面想融入Web,一方面又不肯放弃自己已经在Java上建立起来的数十亿计的生意。甚至动态语言的广泛流行都未能显著改变他们的行为模式。
一直对技术社区保持关注的国内技术专家李锟对Java在面向互联网Web开发领域被边缘化,也给出了自己的见解:
Java 在面向Internet的Web开发领域被边缘化已经不是新闻。在2005年Rails和Ajax崛起的时候,Java差不多就已经出局了。遗憾的是, Java社区的一些人仍然冥顽不化。一个典型的例子是Sun派了SOAP/WSDL等规范的主要制定者去掌管REST规范JSR 311委员会。这帮家伙完全无视REST与SOAP/WSDL在设计理念上的巨大差异,决定基于与SOAP/WSDL相同的理念来设计JSR 311。
拥抱REST是Java在Web开发领域挽回颓势的必要举措,这是一件非常紧急的事情,他们却陷入了争论和政治斗争的泥坑。Rod Johnson决定甩开这帮家伙,在Spring 3.0中提供全面的REST支持,无疑是一个明智之举。失去了Web,Java就失去了未来。企业应用的传统领地也会逐渐被蚕食的。
观察这一技术 讨论背后的原因,“是否遵循标准”是答案之一。对于Java,由于有着大厂商的支持,在标准的遵循上要求比较严格,这也是其适合大型项目的一个原因。而 Web开发更喜欢敏捷地变化,就如同开发这些动态语言的使用者的理念一样,他们的目的不是遵循标准,而是为了快速地搞定工作。