JAVA技術
  當前位置:首頁 > 技術支持 > JAVA技術
JKD1.7新特征
發布時(shí)間:2017-09-07 浏覽:2174次
  
1 對(duì)集合類的(de)語言支持 
      Java将包含對(duì)創建集合類的(de)第一類語言支持。這(zhè)意味著(zhe)集合類的(de)創建可(kě)以像Ruby和(hé)Perl那樣了(le)。 
      原本需要這(zhè)樣: 
         List list = new ArrayList(); 
         list.add("item"); 
         String item = list.get(0); 
         Set set = new HashSet(); 
         set.add("item"); 
         Map map = new HashMap(); 
         map.put("key", 1); 
         int value = map.get("key"); 
      現在你可(kě)以這(zhè)樣: 
         List list = ["item"]; 
         String item = list[0]; 
         Set set = {"item"}; 
         Map map = {"key" : 1}; 
         int value = map["key"]; 
      這(zhè)些集合是不可(kě)變的(de)。 
 2 自動資源管理(lǐ) 
      Java中某些資源是需要手動關閉的(de),如InputStream,Writes,Sockets,Sql classes等。這(zhè)個(gè)新的(de)語言特性允許try語句本身申請更多(duō)的(de)資源, 
   這(zhè)些資源作用(yòng)于try代碼塊,并自動關閉。 
      這(zhè)個(gè): 
         BufferedReader br = new BufferedReader(new FileReader(path)); 
         try { 
         return br.readLine(); 
               } finally { 
                   br.close(); 
         } 
      變成了(le)這(zhè)個(gè): 
          try (BufferedReader br = new BufferedReader(new FileReader(path)) { 
             return br.readLine(); 
          } 
      你可(kě)以定義關閉多(duō)個(gè)資源: 
         try ( 
             InputStream in = new FileInputStream(src); 
             OutputStream out = new FileOutputStream(dest)) 
         { 
         // code 
         } 
      爲了(le)支持這(zhè)個(gè)行爲,所有可(kě)關閉的(de)類将被修改爲可(kě)以實現一個(gè)Closable(可(kě)關閉的(de))接口。 
3 增強的(de)對(duì)通(tōng)用(yòng)實例創建(diamond)的(de)類型推斷 
      類型推斷是一個(gè)特殊的(de)煩惱,下(xià)面的(de)代碼: 
         Map> anagrams = new HashMap>(); 
      通(tōng)過類型推斷後變成: 
         Map> anagrams = new HashMap<>(); 
      這(zhè)個(gè)<>被叫做(zuò)diamond(鑽石)運算(suàn)符,這(zhè)個(gè)運算(suàn)符從引用(yòng)的(de)聲明(míng)中推斷類型。 
4 數字字面量下(xià)劃線支持 
      很長(cháng)的(de)數字可(kě)讀性不好,在Java 7中可(kě)以使用(yòng)下(xià)劃線分(fēn)隔長(cháng)int以及long了(le),如: 
         int one_million = 1_000_000; 
   運算(suàn)時(shí)先去除下(xià)劃線,如:1_1 * 10 = 110,120 ? 1_0 = 110 
5 switch中使用(yòng)string 
      以前你在switch中隻能使用(yòng)number或enum。現在你可(kě)以使用(yòng)string了(le): 
         String s = ... 
         switch(s) { 
         case "quux": 
              processQuux(s); 
     // fall-through 
         case "foo": 
   case "bar": 
              processFooOrBar(s); 
     break; 
         case "baz": 
        processBaz(s); 
              // fall-through 
   default: 
              processDefault(s); 
            break; 
  } 
6 二進制字面量 
      由于繼承C語言,Java代碼在傳統上迫使程序員(yuán)隻能使用(yòng)十進制,八進制或十六進制來(lái)表示數(numbers)。 
      由于很少的(de)域是以bit導向的(de),這(zhè)種限制可(kě)能導緻錯誤。你現在可(kě)以使用(yòng)0b前綴創建二進制字面量: 
         int binary = 0b1001_1001; 
   現在,你可(kě)以使用(yòng)二進制字面量這(zhè)種表示方式,并且使用(yòng)非常簡短的(de)代碼,可(kě)将二進制字符轉換爲數據類型,如在byte或short。 
   byte aByte = (byte)0b001;    
   short aShort = (short)0b010;    
7 簡化(huà)的(de)可(kě)變參數調用(yòng) 
      當程序員(yuán)試圖使用(yòng)一個(gè)不可(kě)具體化(huà)的(de)可(kě)變參數并調用(yòng)一個(gè)*varargs* (可(kě)變)方法時(shí),編輯器會生成一個(gè)“非安全操作”的(de)警告。 
   JDK 7将警告從call轉移到了(le)方法聲明(míng)(methord declaration)的(de)過程中。這(zhè)樣API設計者就可(kě)以使用(yòng)vararg,因爲警告的(de)數量大(dà)大(dà)減少了(le)。

8、其它更新

JDK7中會包含JAXP1.3、JAXB2.2、JAX-WS2.2等。

小的(de)改進java.util.Objects,提供了(le)一套9個(gè)靜态方法。其中兩個(gè)方法用(yòng)來(lái)檢測當前對(duì)象是null還(hái)是非null。兩個(gè)方法用(yòng)來(lái)提供生成toString()字符串同時(shí)支持null對(duì)象。兩個(gè)用(yòng)來(lái)處理(lǐ)hash的(de)方法。兩個(gè)方法用(yòng)來(lái)處理(lǐ)equals。最後一個(gè)compare方法用(yòng)來(lái)進行比較。

Swing JLayer組件JXLayer是一個(gè)組件裝飾器,提供了(le)用(yòng)來(lái)裝飾多(duō)個(gè)組合組件的(de)方式,并且可(kě)以捕獲所有鼠标、鍵盤和(hé)FocusEvent的(de)事件,并針對(duì)所有的(de)XLayer子組件。這(zhè)個(gè)組件隻會對(duì)public swing的(de)api起作用(yòng),對(duì)全局設置沒有作用(yòng),例如對(duì)EventQueue或者RepaintManager。(除了(le)這(zhè)些,Swing還(hái)将在JDK7中提供JXDatePicker和(hé)CSS方式樣式)

并發和(hé)集合API,JSR166,并發和(hé)集合API提供了(le)靈活的(de)異步處理(lǐ),并發HashMap,傳輸隊列和(hé)輕量級的(de)fork/join框架以及本地線程方式的(de)僞随機數生成器。

類加載器體系結構,類加載器已經升級到了(le)可(kě)以在無等級類加載器拓撲中避免死鎖。JDK7中包含了(le)一個(gè)對(duì)于多(duō)線程自定義類加載器的(de)增強實現,名字爲具有并行能力的(de)類加載器。使用(yòng)平行能力的(de)類加載器加載class,會同步到類加載器和(hé)類名。

Locale類的(de)改進,Java Locale避免由于小的(de)變化(huà)導緻數據丢失。除此,Locale應該提供更多(duō)的(de)特性,例如IETF BCP 47和(hé)UTR 35(CLDR/LDML)。

分(fēn)離用(yòng)戶Locale和(hé)用(yòng)戶接口Locale,JDK7分(fēn)離了(le)UI語言的(de)locale和(hé)格式化(huà)locale,這(zhè)個(gè)已經在Vista之後的(de)windows系統中實現了(le)。

嚴格的(de)類文件檢測,通(tōng)過JavaSE6的(de)規範,version51(SE7)的(de)類文件和(hé)之後的(de)版本必須通(tōng)過類型檢測來(lái)檢驗。對(duì)于老的(de)推理(lǐ)驗證VM不可(kě)以宕掉。

Elliptic-CurveCryptography (ECC)橢圓曲線加密,從JDK7開始,Java提供對(duì)标準的(de)ECC算(suàn)法的(de)靈活實現(基于橢圓曲線的(de)公鑰加密算(suàn)法)。

Swing中的(de)Nimbus外觀,Nimbus是JDS(Java Desktop System)中的(de)新外觀。這(zhè)個(gè)也(yě)是Solaris11的(de)GTK主題。

Java2D中的(de)XRender Pipeline,JDK7中加入了(le)基于X11 XRender擴展的(de)Java2D圖形管道。這(zhè)将提供更多(duō)的(de)對(duì)于當前先進的(de)GPUs訪問的(de)功能。

TLS1.2,TLS (Transport Layer Security)是一個(gè)用(yòng)在Internet上的(de)數據傳輸安全協議(yì),用(yòng)來(lái)避免監聽(tīng)、引誘和(hé)消息僞造。TLS的(de)主要目的(de)是提供兩個(gè)應用(yòng)間通(tōng)信的(de)隐私和(hé)數據完整。TLS是RFC5246标準,在JDK7中提供TLS1.2。

JDBC4.0/4.1,JDBC4.1特性隻在JDK7或者更高(gāo)版本中存在。JDBC4.1隻是對(duì)JDBC4.0進行較小的(de)改動。關于一些JDBC4.0/4.1的(de)特性:

  • 數據源—Derby包括了(le)對(duì)于javax.sql.DataSource的(de)新的(de)實現
  • JDBC驅動自動加載—應用(yòng)不必在通(tōng)過Class.forName()方法來(lái)加載數據庫驅動了(le)。取而代之的(de)是DriverManager會根據應用(yòng)請求連接的(de)情況,自動查找到合适的(de)JDBC驅動。
  • 包裝—這(zhè)是JDBC4.0中的(de)新的(de)概念,主要是通(tōng)過這(zhè)種機制可(kě)以讓應用(yòng)獲取的(de)廠商提供的(de)标準JDBC對(duì)象實現,例如Connections,Statements和(hé)ResultSets。
  • Statement事件—連接池可(kě)以監聽(tīng)Statement的(de)關閉和(hé)錯誤時(shí)間。addStatementEventListener和(hé)removeStatementEventListener被加入到了(le)javax.sql.PooledConnection。
  • JDK7提供了(le)JDBC4.1全部的(de)支持。
 
 
    
 
 
版權所有 © 2005-2024 安徽問法信息技術有限公司  
地址:安徽省合肥市蜀山區(qū)望江西路69号西湖國際廣場(chǎng) 電話(huà):0551-64935878 郵箱:admin@ajsoft.cn