JAVA技(jì)術(shù)
  當前位置:首頁 > 技(jì)術(shù)支持 > JAVA技(jì)術(shù)
JKD1.7新特征
發布時(shí)間(jiān):2017-09-07 浏覽:2440次
  
1 對(duì)集合類的(de)語言支持 ‍≠$₹;
      Java↑λ£将包含對(duì)創建集合類的(de)第一(yī)類語言¶₹π支持。這(zhè)意味著(zhe)集合類的(d€•e)創建可(kě)以像Ruby和(hé)Per₹§∏l那(nà)樣了(le)。 
      原本需要(yào)↕‌‍‌這(zhè)樣: 
         List☆₩≥↓ list = new ArrayList(); 
         list∑γ✔".add("item"); 
      ±÷   String item ↕§'★= list.get(0); 
         ≥₽Set set = new HashSet(); 
       ' →;  set.add("item");&nbs₩↔↔p;
      &nb>↑​sp;  Map map = new HashMap(); 
         φ<;map.put("key", 1); 
        &↑&"λnbsp;int value = map.get("key≥β "); 
      現(xiàn)在你(nǐ)可(δ←β<kě)以這(zhè)樣: 
        &nb×↔<sp;List list = ["item"];& €nbsp;
         ≈÷δγString item = list[0]; 
         Se¥✔•t set = {"item"}; 
         π₽÷α;Map map = {"key" : 1}; 
         int v>±alue = map["key"]; 
     ←γ 這(zhè)些(xiē)集合是(shì)不(bù)可(kě)變的(de)。&¶¥σnbsp;
 2 自(zì)動資源管理(lǐ) 
      Java中某些(xiē)資源'★是(shì)需要(yào)手動關閉的(de),如(rú)InputStr↔☆eam,Writes,Sockets,Sql classε♠ es等。這(zhè)個(gè)新的(de)語言特性允許try語句本身(sh≤  ēn)申請(qǐng)更多(duō)的(de)資源, 
   這(zhè)些(xiē)資源作(><αzuò)用(yòng)于try代碼塊,并自(zì)動關閉。 β£
      這(zh→✔è)個(gè): 
      ₽→    Buffered∑®&©Reader br = new BufferedR₹✘eader(new FileReader(path))☆§; 
        &nbβ<sp;try { 
      &≥‌↑nbsp;  return br.readL✘ ine(); 
      &nb✘>sp;     &nbs★¥p;  } finally {±→σφ 
      &nb÷λsp;      ☆₹ ";      br.clos​÷e(); 
      ☆ ↔   } 
      變成&"↓♠了(le)這(zhè)個(gè): 
      &≥εα‌nbsp;   try (BufferedRe∞®ader br = new Buffere‌σ↓dReader(new FileReader(path)) { 
         ↑✘₽φ;    return→¶Ω< br.readLine(); 
        &≤σ ‍nbsp; } 
      你(nǐ)可(kě≈♥>$)以定義關閉多(duō)個(gè)資源: 
      &nbsλ₹€≥p;  try ( 
       &";      Inp✘φutStream in = new FileI×₩'nputStream(src); ≥∏";
       <€↔;      OutputStream o‌εut = new FileOutputStream(dest))&nbsε≤≠€p;
        &nε♠&bsp;{ 
         ♣≥↑;// code 
        € €ε } 
      為(wèi)了✘¥(le)支持這(zhè)個(gè)行(xíng)♥®為(wèi),所有(yǒu)可(kě)關ε☆閉的(de)類将被修改為(wèi)可(kě)以實現(xiàn)一(yī)個(♠Ω>πgè)Closable(可(kě)關閉的(d☆ε≈e))接口。 
3 增強的(de)對(duì)通(tōng)φΩ用(yòng)實例創建(diamond)的(de)類型推斷 
      類型推斷是(sh×γ‌ì)一(yī)個(gè)特殊的(de)煩惱,下(xià)面的(de)代碼:&→¶∑δnbsp;
         ←;  Map> anagrams = new HashMap>(); 
     ₩  通(tōng)過類型推斷後變成: 
      &nbsλ≤ p;  Map> anagrams = new HashMa ≥p<>(); 
      這(zhè→φ)個(gè)<>被叫做(zuò✘ )diamond(鑽石)運算(suàn)符,這(zhè↑®‌)個(gè)運算(suàn)符從(cóng)引÷¥¥用(yòng)的(de)聲明(míng)中推斷類型。 
4 數(shù)字字面量下(xià)劃線支持& ≤nbsp;
      很(hě©♠n)長(cháng)的(de)數(shù)字可(kě)讀(dú★"™)性不(bù)好(hǎo),在Java 7中可(kě)以使₽™↔±用(yòng)下(xià)劃線分(fēn)隔長(cháng)int以及¶φαlong了(le),如(rú): 
        &n€↔≥bsp;int one_million = 1_000_000; 
   運算(suàn)時(shí)先去(qù)除下€≠'(xià)劃線,如(rú):1_1 * 10 = 110,120 ∏♦§? 1_0 = 110 
5 switch中使用(yòng)string 
      以前你(nǐ)在switch中隻能(∑♥πnéng)使用(yòng)number或enum。現¥↔(xiàn)在你(nǐ)可(kě)以使用(yòng)string了(le):λ" 
         Stβ←εring s = ... 
     ™↑π    switchγ≥©×(s) { 
        &✘©"nbsp;case "quux": 
         ∞•;     processQuu₩≥₽↔x(s); 
     // f₹£↔↓all-through 
        &•λ≈₹nbsp;case "foo": 
   case "bar": 
        &$∏≤nbsp;     processFooOrBa¶☆r(s); 
     break; 
         cas​ e "baz": 
        proc✔€essBaz(s); 
      πφ       ™₹★; // fall-through 
   default:&nγ₽<bsp;
          &¶✔nbsp;   processDefault(s);&n←♠λbsp;
      &nb★•£≈sp;     break; ₹©≈;
  } 
6 二進制(zhì)字面量 
      由于< ≥≈繼承C語言,Java代碼在傳統上(shàng)迫使程序 >ε♥員(yuán)隻能(néng)使用(yòng)十進制(zhì),八進≥→↔制(zhì)或十六進制(zhì)來(lái)表示數(shù)(number✘₩s)。 
      由于很(hěn)§↔Ω₹少(shǎo)的(de)域是(shì)以β'♦"bit導向的(de),這(zhè)種限制(zhì)可(kě)能(n×¥₩‍éng)導緻錯(cuò)誤。你(nǐ)現(x≠✔₩iàn)在可(kě)以使用(yòng)0b前綴創建二進>πε₽制(zhì)字面量: 
         ↕εint binary = 0b1001_1001;®✔ 
   現(xiàn)在,你(nǐ)可(kě)以使用(yòn‍$↕♦g)二進制(zhì)字面量這(zhè)種表示方式,并且使用(yò→•€÷ng)非常簡短(duǎn)的(de)代碼,可(kě)将二進制(zhì)>♠→$字符轉換為(wèi)數(shù)據類型,如(rú)在byte或shorπ∑‍≤t。 
   byte aByte = (₹☆→§byte)0b001;    ↑™∞
   short aShorβ₹¶t = (short)0b010;   ∏© 
7 簡化(huà)的(de)可(kě)變參數(shù)調用(yòng)&nbs↓σ↕p;
      當程序員(φ₩≥δyuán)試圖使用(yòng)一(yī)個(gè‍​)不(bù)可(kě)具體(tǐ)化(huà)的(de)可(kě)變參數<'♠™(shù)并調用(yòng)一(yī)個(gè)*varargs*γ"← (可(kě)變)方法時(shí),編輯器(qì)會(≤₹↕±huì)生(shēng)成一(yī)個(gè)“非安全操作(zuò)”的(d β©e)警告。 
   JDK 7将警告從(≥λγ&cóng)call轉移到(dào)了(le)方法聲明(mí₩®ng)(methord declaration)的(de)過程中。這(zh ∑&è)樣API設計(jì)者就(jiù)可(kě)φ§©→以使用(yòng)vararg,因為(wèi)警告的(‍€&Ωde)數(shù)量大(dà)大(dà)減少(shǎ✘"o)了(le)。

8、其它更新

JDK7中會(huì)包含JAXP1.3、¶₽€☆JAXB2.2、JAX-WS2.2等。

小(xiǎo)的(de)改進java.util.Objects,提供了(le)一(yī)套9個(gè)靜(jìσ"ng)态方法。其中兩個(gè)方法用(yòng₽α)來(lái)檢測當前對(duì)象是(shì)null還(h∑&$ái)是(shì)非null。兩個(gè)方法用(yòng)來(lái ÷β¶)提供生(shēng)成toString()≤>字符串同時(shí)支持null對(duì)象。兩個(§βΩπgè)用(yòng)來(lái)處理(lǐ)hash的(de↔σ✔•)方法。兩個(gè)方法用(yòng)來(lái)處理(lǐ)eq​σγuals。最後一(yī)個(gè)compare方法用(yòng)來(lá$↕♣i)進行(xíng)比較。

Swing JLayer組件(jiàn)JXLayer是(shì)一(yī)個(g¶Ωè)組件(jiàn)裝飾器(qì),提供了(le™γ)用(yòng)來(lái)裝飾多(duō)個(gè)組合組件(j÷¥iàn)的(de)方式,并且可(kě)以捕∑★'獲所有(yǒu)鼠标、鍵盤和(hé)FocusEvent的 ±→‍(de)事(shì)件(jiàn),并針對(duì)所有(yǒu)的(✘₽de)XLayer子(zǐ)組件(jiàn)。這( £₩zhè)個(gè)組件(jiàn)隻會(huì)對(duì)public sw↔↓↓ing的(de)api起作(zuò)用(yòng),對(duì)全€↕§≈局設置沒有(yǒu)作(zuò)用(yòng),例如(rú★ε¥€)對(duì)EventQueue或者RepaintManager "。(除了(le)這(zhè)些(xiē),Swing還(há×☆i)将在JDK7中提供JXDatePicker和(hé$☆✔)CSS方式樣式)

并發和(hé)集合API,JSR166,并發和(hé)集合API提供了(le)靈活的(de)異步處理£↓(lǐ),并發HashMap,傳輸隊列和(hé)輕量級的(de)fo ₽γ∑rk/join框架以及本地(dì)線程方式的(de)僞随機(®σjī)數(shù)生(shēng)成器(qì)。

類加載器(qì)體(tǐ)系結構,類加載器(qì)已經升級到(dào)了(le☆β)可(kě)以在無等級類加載器(qì)拓撲中避免死鎖。JDK7中包含了(le)¥×一(yī)個(gè)對(duì)于多(duōβ‍)線程自(zì)定義類加載器(qì)的(₽πφde)增強實現(xiàn),名字為(wè☆∞™i)具有(yǒu)并行(xíng)能(néng)力的(de)類加×σ≠載器(qì)。使用(yòng)平行(xíng)能(néng&€)力的(de)類加載器(qì)加載class¥•φ,會(huì)同步到(dào)類加載器(qì)和(hé)類名。

Locale類的(de)改進,Java Locale避免由于小(xiǎo)的(de)變化(γ☆≥≈huà)導緻數(shù)據丢失。除此,Loca₩€¶αle應該提供更多(duō)的(de)特性,例如(rú)IE ✔TF BCP 47和(hé)UTR 35(CLDR/LDML)。

分(fēn)離(lí)用(yòng)戶L≤‍™ocale和(hé)用(yòng)戶接口Locale,JDK7分(fēn)離(lí)了(le)UI語言的(de)locale和(®★→hé)格式化(huà)locale,這(zhè)個(gè)已經在V ∑φista之後的(de)windows系統中實現(φ →xiàn)了(le)。

嚴格的(de)類文(wén)件(jiàn)檢÷₽測,通(tōng)過JavaSE6的(de)規範,ver∞ sion51(SE7)的(de)類文(wén)件(jiàn)和(hé)之後←•₩±的(de)版本必須通(tōng)過類型檢測來(lái©✔≈)檢驗。對(duì)于老(lǎo)的(de)推理(lǐ)∑‌γ驗證VM不(bù)可(kě)以宕掉。

Elliptic-CurveCryptography (ECC)橢圓曲線加密,從(cóng)JDK7開(kāi)始,Java提₩↕™供對(duì)标準的(de)ECC算(suàn)法的(d‌σβe)靈活實現(xiàn)(基于橢圓曲線的(de)公鑰加密算©∞↕(suàn)法)。

Swing中的(de)Nimbus外(wài)觀,Nimbus是(shì)JDS(Java •₽Desktop System)中的(de)新外(wài)觀。這(zhè)個(δ$gè)也(yě)是(shì)Solaris1≈↔1的(de)GTK主題。

Java2D中的(de)XRender Pipeline,JDK7中加入了(le)基于X11 XRe×¥∏≠nder擴展的(de)Java2D圖形管δ>§道(dào)。這(zhè)将提供更多(duō)的(de)對←¥₩✔(duì)于當前先進的(de)GPUs訪問(wèn)的(de)功能(néng$↕>₩)。

TLS1.2,TLS (Transport Layer Security)是₹♦​(shì)一(yī)個(gè)用(yòng)在Internet上(shàn↓<×g)的(de)數(shù)據傳輸安全協議(yì),用(yòng)來(l ©‍ái)避免監聽(tīng)、引誘和(hé)消息僞造。TLS的(de)主要(yà‌§‍o)目的(de)是(shì)提供兩個(gè)應用(yòn¶♥βg)間(jiān)通(tōng)信的(de)隐私和ΩΩ&(hé)數(shù)據完整。TLS是(s&©<hì)RFC5246标準,在JDK7中提供TLS1.2。

JDBC4.0/4.1,JDBC4.1特性隻在JDK7或者更高(gāo)版本中存在 ≈φ。JDBC4.1隻是(shì)對(duì)JDBC4.0進行(xí∞δng)較小(xiǎo)的(de)改動。關于一(yī)些(xiē)J≥¥®γDBC4.0/4.1的(de)特性:

  • 數(shù)據源—Derby包括了(le)對(§÷₩‍duì)于javax.sql.DataSource的(de)新的(de)實現(ελxiàn)
  • JDBC驅動自(zì)動加載—應用(yòng)不(bù)↓®'必在通(tōng)過Class.forName()方法來©σ(lái)加載數(shù)據庫驅動了(le)。取而代之的(de)是(shì)D←δ&₽riverManager會(huì)根據應用(yòng)請(qǐng)求連接的γ€≈(de)情況,自(zì)動查找到(dào)合适的(de)JDBC驅動。
  • 包裝—這(zhè)是(shì)JDBC4.0中的(σ​de)新的(de)概念,主要(yào)是(shì)通(tōng)過這(zh  ≈è)種機(jī)制(zhì)可(kě)以讓應用(yòng)獲取的(de)廠(>→β®chǎng)商提供的(de)标準JDBC對(δ©>duì)象實現(xiàn),例如(rú)$₽ ₩Connections,Statements和(hé)Re$£≥×sultSets。
  • Statement事(shì)件(jiàn)£σ—連接池可(kě)以監聽(tīng)Statement的(de)關閉和(h""é)錯(cuò)誤時(shí)間(jiān)。addStatementEv>>entListener和(hé)removeStatement‌$EventListener被加入到(dào)了(le)javax.sql.♦ PooledConnection。
  • JDK7提供了(le)JDBC4.1全部的(de)支持。
 
 
    
 
 
版權所有(yǒu) © 2005-2024 南昌​✘™£億雲信息技術有限公司 京ICP證000000号  皖公網安備 34019202000659号
地(dì)址:安徽省合肥市(shì)蜀山(shān)區(qū‍↕∑<)望江西(xī)路(lù)69号西(xī)湖(hú)國(guó)際廣場(chǎ←​ng) 電(diàn)話(huà):0551-64935878 郵箱:ad¶↔min@ajsoft.cn