你真的需要Java 7嗎?
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!
相關文章: