看到一篇收藏过的的文章,直截了当的指出了 Java 的复杂性的原因,转出来看看。
最近因为工作的关系要重拾Java,被EJB,JPA,Spring这样东西搞的头晕脑涨,但其实公司是要做一个用php来做不用一天就搞掂的东西。
我一直对Java的感觉都挺好的,有了java程序员就不用卷入程序跨平台的移植性,内存泄漏(java的垃圾回收机制)中,还有强制性的面对对象思想也大大简化了复杂度,还有强大如Jbuilder,Eclipse这样的开发工具,Apache.org这样的开源组织提供的无所不包的类库等等,这些都是我喜欢java的理由,但是……自从sun卷入企业级应用以后,一切都变味了,everything is concept,人为制造了很多复杂度,这个什么标准,那个什么架构的,什么J2EE,我打赌没有多少个java程序员可以讲清楚j2ee是什么。
Java 2 Enterprise Edition,Java企业级应用版,什么叫企业级应用,说白了就是数据库应用,不会也不可能比一个3D游戏引擎来得复杂,需要那么多概念么?美其名曰降低对象耦合,提高生产率,更合理的软件开发流程,分工,更大规模的软件开发能力。其实呢,其实把1个人1天可以做完的活变成10个人半年搞不好,搞出来了用户体验还很差。我认为Sun制造J2EE的概念背后的想法相当不老实。
Luma用JAVA做了一个跨平台QQ出来,厉害了把,我打赌他半点J2EE的东西都没用。
但是,一个社会现实就是,php的程序员工资很低,java的程序员工资很高。为什么这样,我从最近的看经济学的书上找到了答案,道理很简单,如果今天爱因斯坦退休的话,他是无法到美国的一间中学去教中学去教物理的,因为他没有中学物理教育的资格证书。这个行业证书是怎么弄出来的,是中学的物理老师的工会(XXX行业协会)弄出来的,就是一帮物理不怎么行的物理老师在一起商量要怎么保护他们的既得利益,防止别人进来竞争制定的进入门槛。从市场经济的角度,爱因斯坦退休后无法进入中学教书是一种浪费,是一种无效率。JAVA和php的关系真是这样,Java后期制造的很多概念实际上是在提高这种准入门槛,这种门槛越高,对Java程序员越有利,他们的工资就会越高,但是对于客户就越糟糕,成本就越高。这些概念都是阻碍了优秀的的php程序员为他们的客户提供更低成本(甚至更稳定,运行速度更快,更容易维护)的解决方案,从市场经济的角度讲,这是一种浪费。
但是客户就是这样被蒙骗的,你相信一个拥有专业资格证书的物理老师,还是相信一个退休蓬头垢面的老头。没有人告诉你他是爱因斯坦的情况下你一定会选择前者,如果你是半桶水的程序员,Java的高薪光环一定让你忘乎所以,但如果你是一位真正的程序员,你一定知道你就是爱因斯坦,你就是要用竞争把那些周围都是光环的人竞争下岗。
前一段时间还看到网上看到有人想用jsp写一个discuz(还只是停留在想的阶段),收皮拉,你们已经被php的discuz竞争出局很久了,市场早就选择过了,更低的成本,更优异的性能,答案早就不用说了。
略显片面。
我最近从java->php,感觉php的世界确实很方便简洁,但是有很多东西无规矩不成方圆。我看过一些所谓phper写的代码,很糟糕,没有任何结构(更不论架构)可言。一个php完成所有的功能,从一个request开始到echo出去,全部都在一个php里面,在php的各个地方都在include,require其他的php。。。
PHP5也在尝试OO,相信PHP6会更靠近java,慢慢地php也会发展成为一个复杂的语言。其实目前的java相比3-4年前的java确实复杂了不少,但是平心而论,这些新的变化一方面有厂商的推动(利润驱动),另一方面也确实有各种需求的引导。比如SOA,比如O/R mapping,比如依赖注入/AOP等等。其实这些概念在很早的书(可以翻阅一下C/C++论架构相关的书)里面都提及到的,而重新焕发出生命力也确实是IT界发展必然。
复杂的架构是有适用性的,在不同场合使用不同的模式。不建议在任何应用里面都套用所有的模式,比如EJB,JPA,Spring等,有很多的替代方案可以选择。至于你说的Luma确实使用不到j2ee的核心技术,因为它只是一个客户端,只需要一些客户端开发相关的包即可(如果你要用php来做一个qq的客户端…难以想象,还得找tk之类的客户端库吧)。如果你要做一个QQ服务器呢,考虑高并发、高负载、高可用呢?
当然我写这么多并不是说java就一定好,只是php和java各有用途,他们针对的领域不同。真要比较还得找一个都匹配的领域来进行比较才有可比性。最近从java->php,也在发牢骚,互勉!
附lumaqq所用到的包,有些包你可以说是j2ee的,也可以说不是::)
{{
file:/mnt/LumaQQ/lib/xerces.jar
file:/mnt/LumaQQ/lib/swt.jar
file:/mnt/LumaQQ/lib/poifs.jar
file:/mnt/LumaQQ/lib/org.eclipse.ui.workbench_3.1.0.jar
file:/mnt/LumaQQ/lib/org.eclipse.osgi_3.1.0.jar
file:/mnt/LumaQQ/lib/org.eclipse.jface_3.1.0.jar
file:/mnt/LumaQQ/lib/org.eclipse.core.runtime_3.1.0.jar
file:/mnt/LumaQQ/lib/lumaqq.jar
file:/mnt/LumaQQ/lib/log4j-1.2.8.jar
file:/mnt/LumaQQ/lib/jql-20050817231959.jar
file:/mnt/LumaQQ/lib/jdom.jar
file:/mnt/LumaQQ/lib/commons-logging.jar
file:/mnt/LumaQQ/lib/commons-codec-1.3.jar
}}
layout Says @ 08-08-5 15:47
从网站的小团队快速开发来说,PHP有相当的优势,但是因为脚本语言规范性各个方面都不够强,对于大团队的军团式开发就显得力不从心,管理起来相当困难。这也是我们公司几年前从PHP向J2EE战略转型的一个重要原因吧。