众所周知,JAVA语言一直因其语法上的简洁优雅(JAVA1.5中泛型的引入或多或少改变了这点)而被大部分人所喜爱.
但另一方面,语法上的简洁也造成了使用上的一些不方便.譬如,你只想实现往控制台输出一个"Hello,world",你也得老老实实先写一个class,然后再写一个public static void main(String[] args)方法,最后才是System.out.println("Hello,world");
而如果使用
Python之类的语言,可能只需一行代码就搞定了.
当然,上面这个例子看起来不是那么有说服力.
不过如果你做过GUI开发的话,你就会感受到"Everything is an object"所带来的不便之处了.为了监听GUI事件并做出相应的反应,你会大量用到匿名类(而实际上你的目的只是要传入一个回调方法而已),这样不仅做了一些额外不必要的工作,也给代码的可读性造成一定影响.
譬如这类的问题还有很多,Stevey写过一篇文章:名词的王国(Execution in
the Kingdom of Nouns),用形象生动的语言描叙了为什么使用
JAVA会让某些工作变得的啰嗦.他的观点是由于JAVA中的"everything is an object",在某些时候限制了我们用清晰而合理的表达方式来表述我们的思想.
在JAVA诞生以来,语法上最大的变动可能就是在JAVA 1.5中泛型的引入了.而且随着JAVA的
开源,以后可能会有更多的元素被引入到JAVA语言里面来(官方的或非官方的).目前正在进行中的JDK7就有可能增加一些新的语言特性(见javapolis举行的关于JAVA7语言特性投票的结果),其中最重大的改变莫过于
闭包的引入了.毫无疑问,这些语言特性的引入都是为了让我们这些Javaer活的更轻松一些.
那么,闭包能改善目前JAVA语言所存在不足吗?就是说闭包能够让我们写出简单而易读的代码吗?要知道闭包并不是一个面向对象的东东.
Bruce Eckel在他的文章Will Closures Make Java Less Verbose里讨论了这个问题.并且在文章的末尾,他提出了一个很大胆的想法
JAVA 3K(其实我也一直这么想的^_^):
引用
我们知道Python有个Python 3000计划,这个Python 3000相对之前的Python有大幅度的修改,并且不兼容之前的Python语法,这样可以完全摆脱因考虑向后兼容性而带来的不必要的负担.那么我们为什么也搞个JAVA 3000呢?它与之前的JAVA有着类似的语法,并且也能运行在JVM上,但语法上与原有JAVA语言不兼容.在JAVA 3K里面我们可以有真正的泛型,闭包,并且可以丢弃掉int那些基本类型.对于那些想继续使用原有JAVA的人来说继续用就是了,而程序员想学习新的JAVA语言也很容易.
你是如何看待这件事情的呢?
参考文章:
Execution in the Kingdom of Nouns
Seeking the Joy in Java
Will Closures Make Java Less Verbose
闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗? 闭包能让JAVA语言变得简洁吗?