John Jiang

          a cup of Java, cheers!
          https://github.com/johnshajiang/blog

             :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理 ::
            131 隨筆 :: 1 文章 :: 530 評論 :: 0 Trackbacks
          Java SE 7發(fā)布:2006年12月以來的首個主版本升級
          在經(jīng)過漫長地等待之后,Java SE 7終于發(fā)布了。Info的這篇文章總結(jié)了JDK 7的關(guān)鍵新特性,希望對大家了解JDK有幫助。(2011.07.30最后更新)

              從今天開始就可以使用Java 7了,這是Oracle收購Sun之后Java平臺發(fā)布的第一個版本。該版本包含一系列很小但很受歡迎的語言變化,含有一個新的文件API及Fork/Join框架,改進了JVM對動態(tài)語言的支持。
              Java 7的語言級變化已成為Coin項目(JSR 334)的一部分,該項目是JSR 201的后繼者,它被設(shè)計成使用一組能改善生產(chǎn)率的細(xì)小變化來提升Java語言。特別值得注意地是對"try-with-resources"的介紹。這是對C#的using語句的模仿,但是基于try語句的形式。結(jié)果,using語句只能處理單一資源,而try-with-resources能夠在給定語句塊的范圍內(nèi)處理多個資源。
              有兩個針對異常處理的變化。第一,多個異常類型能夠由單個try語句塊處理。擴展了try語句中catch子句的語法,使它能處理一系列的異常類型,這些異常類型由"OR"操作符"|"分隔開,這將用于異常參數(shù)的聲明處。第二,如果一個異常參數(shù)未被修改,且未在cactch語句塊中被重新拋出,就不必把該異常加到方法簽名中。
          其它的語言級變化還包括:
          1. String類型可用于switch語句
          2. 支持二進制常量,且能在數(shù)字中使用下劃線進行分隔,例如,long creditCardNumber = 1234_5678_9012_3456L
          3. 簡化的可變長參數(shù)方法的調(diào)用:當(dāng)包含可變長參數(shù)的方法使用了不確定的數(shù)組類型時,編譯器會報出警告。現(xiàn)在將該警告從方法調(diào)用處移到了方法聲明處。
          4. 改進了泛型實例創(chuàng)建時的類型推導(dǎo)(< >,即鉆石符):在創(chuàng)建類實例時使用受限制的類型推導(dǎo),以便顯式地為構(gòu)造器聲明參數(shù)類型,但從上下文可以確定這些類型,那么可用一個空的類型參數(shù)設(shè)置去替代這一聲明。所以,為了替代如下寫法:
          Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
          可以寫成:
          Map<String, List<String>> anagrams = new HashMap<>();

              已經(jīng)介紹過兩個主要的新API。第一個是JSR 203,這個API的加入是為了文件系統(tǒng)的訪問,可伸縮的異步I/O操作,Socket-Channel綁定與配置,以及多播數(shù)據(jù)報。特別能引起企業(yè)級開發(fā)者興趣的是真實的異步I/O API。對于那些會跨許多連接且要求低延時、高吞吐的高級服務(wù)器端應(yīng)用,該API顯得尤為重要。作為加入Java的最后一個文件系統(tǒng)API,JSR 203還支持某些操作系統(tǒng)的特殊功能。例如,你可以為那些支持符合鏈接的系統(tǒng)創(chuàng)建這種鏈接。因此,JSR 203有些爭議,它并不嚴(yán)格遵循"編寫一次,隨處運行"這一原則,盡管它提供了一組能運行在所有平臺上的通用API,但它也提供了某些平臺的某些特定功能。
              第二個新API就是Fork/Join框架(它是JSR 166的一部分),原計劃是放到Java 5中的。它為開發(fā)者提供了一種將問題分解成任務(wù)的機制。這些任務(wù)可在任意數(shù)量的多核處理器中并發(fā)執(zhí)行。
              在其它方面,平臺尋求新的網(wǎng)絡(luò)與安全特性,并擴展了對國際化的支持,包括對Unicde 6.0的支持。
              最后,Java SE 7還引入自Java起始以來最新的字節(jié)碼結(jié)構(gòu),InvokeDynamic關(guān)鍵字。InvokeDynamic加入了多于一個的調(diào)用模式,以及多于一個的鏈接模式,這樣就能基于用戶定義的規(guī)范進行編程。它的本意是在缺少靜態(tài)類型信息時能高效且靈活地執(zhí)行方法調(diào)用,這就使得運行在JVM上的動態(tài)語言,如JRuby和Jython,的性能得到實質(zhì)性地提升。
              在歡迎這些特性的同時,從許多方面看來,對于該版本最重要的事情,是它真的終于發(fā)出來了。在Sun和Apache軟件基金會之間長期存在的分歧,可能還有Sun在它最后的日子中的領(lǐng)導(dǎo)力與資源分配方面的問題,導(dǎo)致了這次版本間不同尋常的長期斷層。就如Mark Reinhold在最近的一次訪談中所評論的:   
          由于商業(yè)與政治方面的原因,Java在一段時間內(nèi)進行了冬眠模式。但我們又回來了,并且將要發(fā)布版本7。它不是一個革命性的版本,只是一個改進的版本,但它里面確實有一些好東西。
              開發(fā)者們對JDK 7版入門的興趣,就會撬動對NetBeans 7.0IntelliJ IEDA 10.5的應(yīng)用,它們都支持Java SE 7平臺的最新特性。Eclipse Indigobeta版也已支持Java 7,Oracle的JDeveloper計劃在今年晚些時候發(fā)布一個版本去支持JDK 7。
          posted on 2011-07-30 22:23 John Jiang 閱讀(1997) 評論(1)  編輯  收藏 所屬分類: JavaSEJava翻譯

          評論

          # re: Java SE 7發(fā)布:2006年12月以來的首個主版本升級(譯) 2011-08-03 21:02 Sha Jiang
          2011.07.31,InfoQ China也發(fā)布了"Java SE 7 Released: First Major Update Since December 2006"的中文版(比我的譯文晚了約一天*_*)。從譯文的內(nèi)容來看,和我翻譯的差不多。我覺得不太好翻譯的地方,Info China也翻譯地差強人意;-)  回復(fù)  更多評論
            

          主站蜘蛛池模板: 鹤庆县| 崇仁县| 韶山市| 肥西县| 佛冈县| 黄梅县| 武胜县| 潮安县| 东源县| 光泽县| 铁力市| 杂多县| 塔城市| 武穴市| 阿鲁科尔沁旗| 武乡县| 呼图壁县| 通海县| 宁化县| 萨迦县| 清苑县| 光泽县| 大冶市| 镇康县| 天镇县| 长岛县| 岑溪市| 大埔区| 社会| 固镇县| 漳平市| 南陵县| 金湖县| 德州市| 巢湖市| 宜兰市| 揭阳市| 高淳县| 墨脱县| 竹山县| 道真|