Java闭包之我见

来源:互联网 发布:macbook装windows 编辑:程序博客网 时间:2024/05/20 19:49

最近大家一直在讨论Java7及以后的Java8的应该加入哪些新特性,让Java看出来更“炫”,更“瘦”,更“优雅”,其中呼声最高的就是闭包了,表达一下自己对这些特性的看法,仅个人观点,言语用词“过激”的地方完全是想更直观的表达观点,没有任何诋毁的意思,希望能和大家多多交流。

首先,我不明白为什么非要让Java这种几乎纯粹的面向对象的结构化设计语言里面加入闭包这种更适合函数式编程的特性,我并没有看到有什么是闭包可以做到而Java现在做不到的,或者说是无法实现的且必须要这么做的,而且闭包的代码给人的感觉太随意,对于对象,结构明确的Java来说,突然冒出这么“一坨”代码,确实让人不爽,对于那些对编程风格要求严格或者完美的格式控来说,实在无法接受。现在有不少动态语言同时支持对象与函数式的编程,比如Scala,是很强大,但还是那句话,实在是没有看到必要性。

其次,关于Lamda表达式,呼声也很高,Java本身不支持,但一些框架已经支持,比如Struts2,不知道用过Struts2的人有多少人在用这个表达式,个人感觉,应该不多,在一些语言之中,比如C#,用的会多一些,很多时间确实可以让代码很简洁,很方便,但如果通篇全是这东西,就有点太过了吧,又不得于代码的阅读,跟踪起来还不方便,依然是没有看到它的必要性。

凡事没有绝对,以上这两个特性是C#里面的,确实有可取的地方,但实在不认为Java有什么理由非得加入这两个特性,不加入就过时了,完全落伍了,或者“XXXXJava已死了”,相反,个人感觉反而会让Java变的有点别扭,道家讲究“为腹不为目”,我觉得Java真的没有必要在什么所谓的特性上追求时尚,非得是别的语言有的我Java也有,才能算是进步。

大家一直认为Java臃肿,应该瘦身,但首先臃肿不臃肿不是通过代码量来衡量的,臃肿更多是源于项目本身的设计存在问题,Java真的很冤枉,就像很多人说Android不如iOS流畅是因为Java性能不行,更有”专家“解释说是Java的GC不定时在垃圾回收,所以卡,卡的时候就是GC回收呢.....相信清楚的人都知道是Android本身的线程管理问题,就不要拿Java挡枪了,就算Java本身臃肿,刚问世的时候也是魔鬼身材,只是随着应用的广泛与需求,一点点的成长到现在,我想说的是不要被某个或者某些新生代的语言所谓的简洁与快捷所左右,等发展到Java这种程度,也许还不如Java也说不定,谁家孩子也不是一生出来就200斤,语言也需要时间的考验。

很多特性大家认为可以让编程简单,确实,我以前用C编程的时候,觉得确实很多地方应该简洁点,太麻烦了,用Java编程,感觉非常痛快,几乎C时期的烦恼都没有了,用C#编程的时候,感觉更痛快,但是却没有那种非得这么痛快的感觉,觉得还是Java在这个度上做的更好一些。毕竟编程是件不简单的事,再简单也不简单,我想没有任何一个程序员希望编程成为一种傻瓜式的事情,谁都能做,这里引用郭老师一句名言“嫌我的相声不规矩,想要规矩?看升旗去呀“,差不多得了,多简单算简单呀?我想最简单的莫过于看别人编程了;最痛快的莫过于看别人编程,他还解决不了问题;呵呵,当然这是玩笑。

还是那句话,个人认为Java真没有必要追求所谓的时尚,每次的更新虚拟机性能上的提高才是关键,必要的确实好的特性应该加入,非必要的,理解这种思路,用Java本身这种结构化的设计来实现,也挺好,不过倒确实希望Java可以加入像Objective-C里面的@property这样的特性,毕竟我想现在大家的代码里面,set/get确实有点多。

个人愚见而已!

原创粉丝点击