自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

再探Java 7:最新特性更新、代碼示例及性能測(cè)試

原創(chuàng)
開(kāi)發(fā) 后端
本文包括Java 7的最新更新,代碼示例和對(duì)之前版本Java的性能比較等。我們可以發(fā)現(xiàn),Java 7在語(yǔ)言、內(nèi)核和客戶(hù)端方面的改進(jìn)和提升相當(dāng)明顯。

【51CTO獨(dú)家特稿】如果說(shuō)今年Java開(kāi)發(fā)平臺(tái)有什么大事兒,那就要數(shù)將于年底發(fā)布的Java 7了。之前51CTO曾報(bào)道過(guò)Java 7已經(jīng)完成的七大新功能,包括新增的垃圾回收器G1、JVM動(dòng)態(tài)語(yǔ)言支持以及模塊化等等(更多關(guān)于Java 7的報(bào)道可以參考51CTO專(zhuān)題:Java 7,下一代Java開(kāi)發(fā)技術(shù)詳解)。進(jìn)入2010年,Java 7有哪些新的進(jìn)展?這些新的特性更新對(duì)我們有哪些好處?該如何使用?Java 7的性能如何?本文將給你答案。

這里的內(nèi)容主要包括其***更新、一些代碼實(shí)例、跟以前版本的Java進(jìn)行性能比較需要參考的一些基準(zhǔn)、以及什么時(shí)候它才會(huì)發(fā)布等信息。

首先,讓我們來(lái)看最重要的事情。為了確定JDK 7中有哪些語(yǔ)言方面的微小變化,有關(guān)人員建立了一個(gè)名叫Project Coin的項(xiàng)目。描述了最終的五個(gè)變化(比五個(gè)多一點(diǎn))。

Java 7更新內(nèi)容如下所示:

◆允許在switch中使用字符串

◆自動(dòng)資源管理

◆通用實(shí)例創(chuàng)建來(lái)改進(jìn)類(lèi)型推斷(diamond)

◆簡(jiǎn)化的Varargs方法調(diào)用

◆更好的整型文字綜合性建議

◆Collections集合的語(yǔ)言支持

◆JSR292的語(yǔ)言支持

在the OpenJDK 7特性頁(yè)面中,你還可以看到其他的功能。

這些功能分為不同的種類(lèi):

◆虛擬機(jī)(VM)

◆壓縮的64位對(duì)象指針

◆G1垃圾回收器GC(G1)

◆JSR 292:非Java語(yǔ)言的虛擬機(jī)支持(動(dòng)態(tài)調(diào)用,InvokeDynamic)

語(yǔ)言方面(lang)

◆SR 294:模塊化編程的語(yǔ)言以及虛擬機(jī)支持

◆JSR 308:Java類(lèi)型注釋

◆語(yǔ)言微小增強(qiáng)(我所談?wù)摰腜roject Coin)

◆JSR TBD: Project Lambda

內(nèi)核(core)

◆模塊化(Jigsaw項(xiàng)目)

◆對(duì)類(lèi)加載器的結(jié)構(gòu)進(jìn)行升級(jí)

◆關(guān)閉URLClassLoader的方法

◆Unicode 5.1標(biāo)準(zhǔn)

◆并行以及集合的升級(jí)(jsr166y)

◆JSR 203:Java平臺(tái)(NIO.2)的更多新型I/O API

◆SCTP (流控制傳輸協(xié)議,Stream Control Transmission Protocol)

◆SDP (套接字直接協(xié)議,Sockets Direct Protocol)

◆橢圓曲線(xiàn)加密技術(shù)(ECC)

客戶(hù)端(client)

◆Java 2D的XRender管道

◆轉(zhuǎn)發(fā)端口6u10部署特性

◆為6u10圖形功能創(chuàng)建新的平臺(tái)API

◆Swing的Nimbus外觀和感覺(jué)

◆Swing的JLayer元件

網(wǎng)絡(luò)(web)

◆更新XML的棧

就像你所看到的,這涉及了很多東西。幾個(gè)月前,我親自嘗試了新的Garbage Collector (GC),其性能表現(xiàn)給我留下了非常深刻的印象。不幸的是,JVM幾個(gè)小時(shí)就會(huì)崩潰一次,所以這個(gè)產(chǎn)品不能使用JVM。雖然在Java 1.6中也可以使用這個(gè)GC,但也會(huì)出現(xiàn)同樣的問(wèn)題,經(jīng)常會(huì)出現(xiàn)崩潰。

我想,這就是Java1.7增加新特性的原因。那么,現(xiàn)在我們***去看一些代碼實(shí)例。#p#

Java 7新特性的代碼實(shí)例

下面列出的大多數(shù)例子都是來(lái)源于Joe Wright博客中(Java7中的新語(yǔ)言特性)的高水平文章。

集合的語(yǔ)言支持

在這里我們主要講的是,當(dāng)創(chuàng)建一個(gè)List、Set或者M(jìn)ap的時(shí)候,你怎樣盡量少寫(xiě)代碼。你不必先實(shí)例化Object,然后再給Collection添加元素。你現(xiàn)在只需1行代碼就可以完成。

  1. List list = ["item"];  
  2. String item = list[0];  
  3.  
  4. Set set = {"item"};  
  5.  
  6. Map map = {"key" : 1};  
  7. int value = map["key"];  

自動(dòng)資源管理

由于try / catch語(yǔ)句的原因,冗長(zhǎng)的代碼令人非常頭痛。你或許會(huì)喜歡這個(gè)全新的特性。

實(shí)際上,下面這些代碼:

  1. BufferedReader br = new BufferedReader(new FileReader(path));  
  2. try {  
  3.    return br.readLine();  
  4. finally {  
  5.    br.close();  
  6. }  

轉(zhuǎn)變成了如下這種形式:

  1. try (BufferedReader br = new BufferedReader(new FileReader(path)) {  
  2.    return br.readLine();  
  3. }  

通用實(shí)例創(chuàng)建來(lái)改進(jìn)類(lèi)型推斷(diamond)

當(dāng)你把對(duì)象的接口申明指定成范型后,你在對(duì)象實(shí)例化時(shí)不得不再指定一次。現(xiàn)在,你不必如此了,因?yàn)槟憧梢赃@樣:

  1. Map> map = new HashMap<>();  

數(shù)值文字的加強(qiáng)

我不敢肯定這個(gè)對(duì)大多數(shù)人都有用。你可以這樣做:

  1. int billion = 1_000_000_000; 

允許在switch中使用字符串

這個(gè)無(wú)需解釋?zhuān)湟馑己苊鞔_。

  1. String availability = "available";  
  2. switch(availability) {  
  3.  case "available":  
  4.     //code  
  5.     break;  
  6.  
  7.   case "unavailable":  
  8.     //code  
  9.     break;  
  10.  
  11.   case "merged":  
  12.     //code  
  13.  
  14.   default:  
  15.     //code  
  16.     break;  
  17. }  

二進(jìn)制文字

你可以使用前綴0b創(chuàng)建二進(jìn)制文字

  1. int binary = 0b1001_1001; 

以上這些就是Java1.7的代碼實(shí)例。如果有人能給我指出還有哪些沒(méi)有包含進(jìn)去,那就更好了。我敢肯定,已經(jīng)有其他的開(kāi)發(fā)人員對(duì)此進(jìn)行了關(guān)注。

Java 1.7的性能表現(xiàn)

Java 7的性能有多大的提升?這里我們來(lái)針對(duì)Java 7做一個(gè)測(cè)試,內(nèi)容如下。在一臺(tái)裝有ArchLinux系統(tǒng)的Macbook Pro電腦上(因特爾Duo CPU T7700,主頻2.40GHz,有兩年的使用時(shí)間)運(yùn)行了這些測(cè)試。內(nèi)存是2Gb的,把Heap Size設(shè)置成了728m(-Xms728m -Xmx728m)。

◆測(cè)試1 為一個(gè)List添加100萬(wàn)個(gè)字符串值(String字符串是一個(gè)UUID,是用UUID.randomUUID()產(chǎn)生的)。

◆測(cè)試2 帶有100萬(wàn)鍵、值對(duì)的HashMap。每個(gè)鍵、值對(duì)通過(guò)并行線(xiàn)程進(jìn)行計(jì)算。鍵是一個(gè)UUID,值int是用Math.random()產(chǎn)生的。

◆測(cè)試3 把100萬(wàn)個(gè)ArrayList條目打印到一定數(shù)量的文件(1000個(gè))中。把條目寫(xiě)進(jìn)恰巧并行的不同文件中。

我只比較了Java1.6 (1.6.0_19) 和 Java 1.7 (b87)。后來(lái)根據(jù)評(píng)論的要求,我把Java1.5也添加了進(jìn)來(lái),但是并沒(méi)有添加Java1.4,因?yàn)樗臅r(shí)間太久遠(yuǎn)了。

結(jié)果如下所示:

Java1.7性能測(cè)試 

Java 1.5

Java 1.6

Java 1.7

Test 1

10,698 

9,481

9,328

Test 2

69,827

37,935

36,636

Test 3

26,931

30,868

27,383

顯然,不同版本之間的性能差異并不是特別大。更多關(guān)于Java 7性能方面的測(cè)試可以參考51CTO之前的報(bào)道《Java1.7性能測(cè)試比較

Java 7的發(fā)布日期

在2009年11月的時(shí)候,Java1.7計(jì)劃是在2010年9月發(fā)布,到那時(shí)還將發(fā)布3個(gè)里程碑版本。其中,里程碑6在build 84版中已經(jīng)完成,里程碑7的***個(gè)測(cè)試版B85也計(jì)劃在2010年3月4日完成,而本文使用的B87版本已在2010年3月25日發(fā)布。這樣看起來(lái),Java 1.7很有可能在2010年9月發(fā)布。讓我們等待吧。 

 

【編輯推薦】

  1. 走進(jìn)Java 7中的模塊系統(tǒng)
  2. Java 7的***類(lèi)函數(shù):學(xué)習(xí)閉包的使用
  3. Java 7新功能代碼范例
  4. 專(zhuān)題:JVM詳解 Java虛擬機(jī)原理與優(yōu)化

 原文:Java 1.7 - What's new? Release date, code examples and performance  作者:inebium

責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2010-05-28 09:14:52

Linux性能測(cè)試工具

2009-08-31 18:40:01

Java 7新功能

2010-05-13 08:57:22

jQuery 1.4

2009-02-20 16:53:07

Windows 7BetaBug

2010-03-26 15:30:57

CentOS源代碼

2009-03-13 19:21:21

Windows 7性能測(cè)試

2011-08-01 16:24:04

XCode CodeTimer 測(cè)試

2009-01-07 13:11:13

Java 7Java SEJava

2024-03-06 18:09:06

Linux性能工具

2025-04-16 10:03:40

開(kāi)發(fā)Spring應(yīng)用程序

2009-11-12 14:10:04

2024-05-17 08:42:52

AttributeMyClass方法

2024-09-02 08:31:46

2009-08-05 08:46:04

Windows 7性能測(cè)試

2009-08-07 08:33:33

Windows 7最終版

2011-02-23 15:49:49

2009-10-22 08:48:59

Windows 7播放器推薦

2019-07-17 09:29:09

Python自動(dòng)化接口

2021-12-29 10:30:15

JMH代碼Java

2021-05-20 10:37:55

iOS蘋(píng)果系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)