从事JAVA开发已经7,8年了,算是一个JAVA开发老手了吧。想想起当初写一个HELLO WORLD都要半天,最后还是依靠水木JAVA版的帮助,才能成功运行第一个JAVA程序。转眼间,经历了EJB的老去,STRUTS的风靡,Spring的崛起,EJB3的重定义,Web Service的流行。虽然很多曾经的热点都已过时,好像在JAVA的世界里知识更新的太快,以前学的很多东西已经没用了。留下的更多的是思考的方法,平和的心态。

不再去讨论Eclipse和Netbean那个更强,不再讨论Swing和SWT那个更优秀,那个更有前途,不再讨论设计模式,框架。。。

适合自己的就是最好的。

世界在进步,软件开发方法在进步,JAVA也在进步,只不过进步的节奏越来越沉重。不支持闭包,不支持函数编程,复杂的API,纯粹的面向对象(同时也抹杀了其他的编程思想使用的可能)

当初那个代表最先进,最流行的程序语言已经逐渐老去,而新的那。。。

谈谈JAVA的缺点把:

(1)为了和以前版本的兼容,大量应该简化和淘汰的API依然保留在JDK中,带来了很大的复杂性。

(2)JCP中理论派和实际派永无休止的争斗限制了JDK的进步。

理论派和实践派的争论永远不可能休止,使用理想的纯面向对象还是多种编程思想混合应该交给实际的用户(程序员&架构师)去决策,而不是在程序基础语言上予以限制。关于闭包的争论已经持续了几个release,依然没有结果。

N多的大师已经另起炉灶(如scala),或者另投他方。很高兴看到scala等新的语言的出现给我们这些JAVA支持者提供了更多的选择,只是缺乏了JCP的支持,推广起来很难名正言顺。

(3)面向对象的反思。

“There is no sliver bulleti”同样使用与“面向对象”。不认同”万事万物皆是对象”的说法。软件是对现实世界的模拟,让我们看看现实中的世界中,真的全是对象吗?世界是多样的,我们的抽象也应该是多样的,永远不可能有一种编程思想可以解决所有的问题。死守着面向对象注定会失败。

(4)过度的追求松耦合。

不知道从几何时,做JAVA的开口闭口都是设计模式,框架设计,松耦合。但反思一下,我们真的需要这么多的松耦合嘛。过多的解耦合,割裂了程序描述的问题,更难阅读的代码。幸好XP给了我们新的答案。“you don’t need it”。

(5)JAVA本身的问题

在JVM中运行,无法充分调用底层硬件的能力,象Swing,到现在的硬件条件下,依然这么缓慢。在手持终端等各个方面,JAVA的应用受到了很大的限制,或许在这方面JAVA应该学学PYTHON。可惜,在现在JCP的情况下,我们很难看到。