改名換姓:意義深遠的J2SE 5.0誕生史
在2004年十月J2SE 5.0發布的時候,SUN公司這樣解釋這次版本名稱不是J2SE 1.5而是J2SE 5.0的原因:“從Java誕生至今已有9年時間,而從有J2SE 算起也有5個年頭了;在這樣的背境下,將該版本號從1.5改為5.0可以更好的反映出新版的J2SE 的成熟度、穩定性、可伸縮性、安全性。”
J2SE 的這次變更之重大和意義之深遠,的確也值得我們為之把版本號變換到J2SE 5.0。我們再看看Sun公司網站對J2SE 5.0的features描述:“通過增強Java平臺的力量,允許開發者更容易地使用,Java編程語言的這些改進將吸引大量各種Java開發者”,這是“Java技術發展歷程的一個重要里程碑” 。從這個描述我們可以看出,J2SE 5.0最大的目標是通過提供易用性而吸引各種開發者(當然包括以前的C/C++開發者) ,而它對以前版本的修改并不僅僅是API的升級,而且包括對Java語言層面的改進。
訪問環境變量: 最初的Java語言有一個訪問環境變量的方法System.getenv(),但因為Java宣稱的”Write Once,Run AnyWhere”特性,所以在JDK1.0中去掉了這個能夠訪問平臺專有信息的方法。在J2SE 5.0中,它又來了,并有所擴充。由此可見J2SE 5.0對編程方便性的重視程度。
泛型 J2SE 5.0提供了強大的泛型機制,讓程序員可以減少代碼重復,這個變化應該可以吸引小部分的C#開發人員吧。
增強的for循環 為了克服普通for循環的代碼臃腫特點,J2SE 5.0提供了增強的for循環,我們現在可以這樣寫一個for循環:
- public void printAll(Collection< String> coll)
- {
- for(String str : coll)
- {
- System.out.println(str);
- }
- }
怎么樣?是不是簡單了很多?
自動的裝箱/拆箱 我們以前手工的做裝箱(Boxing)/拆箱(unBoxing)操作時,是不是很煩?放心,J2SE 5.0提供了自動的裝箱/拆箱操作,我們現在可以寫如下的代碼:
- public void boxing(int i)
- {
- ArrayList< Integer> list=new ArrayList< Integer>();
- list.add(0,i);
- System.out.println(“i的值是”+list.get(0));
- }
可變參數數目 J2SE 5.0 開始支持Varargs(不固定自變量個數),J2SE 5.0中還加入了以前拋棄的枚舉和C風格的格式化輸出,這應該是為了吸引以前的C開發者吧。畢竟,在C開發中枚舉和格式化輸出用的是太多了。
并發 J2SE 5.0中加入了java.util.concurrent包,并向集合框架中加入了Queue接口,J2SE 5.0還為各種集合提供了并發情況下的實現。
Properties類增強 由于XML的普及性應用,J2SE 5.0為java.util.Properties類加入了從XML文件中裝載屬性和把屬性值存儲到XML文件中的方法。
Annotation功能 J2SE 5.0提供了注解(annotation)/元數據(metadata)功能,相信以后的大部分應用產品都將充分利用它的注解而實現產品的各種特性。
其它 J2SE 5.0還在多線程(并發機制)、安全、國際化、UI等方面進行了大規模的變更,使得我們能夠更方便地進行Java開發。
其實,上面的這些變更,并不是我們程序員非要不可的內容。我們完全可以通過自己的辦法來達到這些變更實現的功能。但J2SE 5.0的目標就是讓我們程序員能夠更加方便地進行開發,所以,我們在基于J2SE 5.0開發時,應該能夠明顯的體會到它的易用性。
【編輯推薦】