James Sugrue说道:等待Java 7发布已经很长时间了,同时Java社区对JSR标准最终版一旦发布有很多猜测。我也期待即将到来的Java 7,以及其中我真正需要的部分。
真正思考过,我发现对于Java新版本的需求并不是那么迫切的,由于以下原因:
1。Java 5和6已经满足了开发者对JDK的大部分需求。
2。我期望未来的版本是一个精减蓝图的JRE,同时Java 6 update 10已经做了精减。
3。我们已经有了如此多的框架,所以,我们不再依赖于JRE环境的变化。
4。Sun把太多发布重心集中于JavaFX,也许这已经取代了对于下一个Java新版本的兴奋。
无论那种方式,在阅读了多种关于Java 7的预测,我决定把我自己对Java 7的期望列表列出来:
No Closures 不要闭包
Neal Grafter已经有了一个完整的闭包原型,但是我不确认这应该成为Java 7的一部分。当我几个月之前访问Joshua Bloch,我询问了他关于闭包讨论的意见:
Joshua Bloch 写道
正 如读者从第一版开始所知道的,我认为简单明晰的价值高于一切,因此,不要感到惊讶,我不想看到Java编程语言再添加核心内容,作为一个语言,它现在已经 相当复杂。如果Java程序员要使用语言中不存在的功能,我认为他们最好使用以JVM为目标的其他语言,比如Scala和Groovy。
我100%赞成这个观点,简洁是最关键的,但是增加闭包让事情更复杂。这个功能已经造成Java社区分裂几个阵营,至少现在,很多人只是感到包含这个功能不妥。如果不了解闭包,这里有一些很好的介绍。
更好的I/O
这是我确定无疑期待的。引入NIO是这几年最好的事情之一,JSR 203将包含更好的文件系统APIs。再David Linsin的博客上有一个精彩的JSR概述,Java.net也有一篇优秀的文章。
让Swing更加容易
我不是说Swing太复杂或者其他,但是JSR 296是一个受到欢迎的添加。它的目标是让用Swing开发桌面应用更加容易-这是很需要的部分。Eclipse RCP封装了桌面应用栏,Swing应该具有相应的竞争力。JSR 296让Swing更容易,更快,更好的创建的Swing程序。
在Sun开发者网络上有一篇优秀的文章概述了如何使用新的Swing应用框架。Geertjan也写了一篇文章描述它带来实际的好处。
如果你需要跟踪关于Java 7的讨论,最好的地方是Alex Miller的Linkblog。这个地方让我得到很多关于即将发布的Java 7的基本信息。
你已经阅读我对Java 7应该包含的内容,你的看法呢?你真的需要Java 7 吗?
-----------------------------------
此篇文章引起了很大争论,摘选一部分回复:
Jacek说道:
我很不赞同作者的意见,Java已经落后于很多其他语言(尤其是C#),Java很多方面缺乏一些基本的语言功能,比如:
1。缺少多行字符串string处理功能(Groovy/Python/Ruby拥有)
2。string字符串不能通过正则表达式或者内置路径换码(C#/Python能够)
3。regions区域(这对于组织管理源代码很有好处,C#拥有)
4。closures闭包(Delphi拥有,以及相关的COBOL将拥有闭包,比Java快)
5。自动资源管理(ARM拥有)
6。"真正的" properties 功能能够在盒子box之外进行数据绑定(比如:每个set()时候需手工使用firePropertyChange() )
7。没有好的数据绑定解决方案。
以及我认为Java应该吸收的其他语言的优势,比如
- mixins (Ruby)
- LINQ (C#)
- lambda functions (Python)
我认为Java要长期发展,必须不停进步。
以及其他阅读者观点:
-谁能告诉我为什么C#拥有闭包,而Java没有?
-我不需要新的语法,但是我需要新的Date和Time API,Java.util.Date class非常靠不住。
-我非常讨厌看到使用Groovy或者Ruby的言论,对于大型企业,转换语言是非常困难的!我们需要Java来解决问题。
-为什么不能有闭包呢?C#, C++, Delphi, JavaScript, Ruby, Python, Haskell, Scala, Groovy, Smalltalk, Lisp, D, VB.NET and Perl 都有,而且很有用。连PHP都支持闭包。
-Silverlight 2很有趣,我也用IronPython写了一些小例子,我也使用Python PyAMF或者Java 和JSR 311Jersey写Flex例子,我希望Java能对Flex的支持更好。Sun应该出台更有效的措施,而不是浪费时间坐等JavaFX!