針對這些新特性彙總以下: html
1、針對java編程語言(Java Programming Language) java
1.lambda表達式:一種新的語言特性,可以把函數做爲方法的參數或將代碼做爲數據。lambda表達式使你在表示函數接口(具備單個方法的接口)的實例更加緊湊。 程序員
public class Calculator { interface IntegerMath { int operation(int a, int b); } public int operateBinary(int a, int b, IntegerMath op) { return op.operation(a, b); } public static void main(String... args) { Calculator myApp = new Calculator(); IntegerMath addition = (a, b) -> a + b; IntegerMath subtraction = (a, b) -> a - b; System.out.println("40 + 2 = " + myApp.operateBinary(40, 2, addition)); System.out.println("20 - 10 = " + myApp.operateBinary(20, 10, subtraction)); } }
2.方法引用 是lambda表達式的一個簡化寫法,所引用的方法實際上是lambda表達式的方法體實現,這樣使代碼更容易閱讀 算法
myDeck.shuffle(); myDeck.sort(Comparator.comparing(Card::getRank).thenComparing( Comparator.comparing(Card::getSuit))); System.out.println("Sorted by rank, then by suit " + "with static and default methods"); System.out.println(myDeck.deckToString());
詳細代碼參見《默認方法的概念與代碼解析》http://my.oschina.net/cloudcoder/blog/215594 express
3.默認方法:Java 8引入default method,或者叫virtual extension method,目的是爲了讓接口能夠過後添加新方法而無需強迫全部實現該接口的類都提供新方法的實現。也就是說它的主要使用場景可能會涉及代碼演進。 編程
默認方法使您可以添加新的功能到你現有庫的接口中,並確保與採用老版本接口編寫的代碼的二進制兼容性. 數組
4.重複註解:容許在同一聲明或類型(類,屬性,或方法)的使用中屢次使用同一個註解@Repeatable(Authorities.class) public @interface Authority { String role(); } public @interface Authorities { Authority[] value(); } public class RepeatAnnotationUseNewVersion { @Authority(role="Admin") @Authority(role="Manager") public void doSomeThing(){ } }
5.類型註解:在java 8以前,註解只能是在聲明的地方所使用,好比類,方法,屬性;java 8裏面,註解能夠應用在任何地方。 安全
類型註解被用來支持在Java的程序中作強類型檢查。配合插件式的check framework,能夠在編譯的時候檢測出runtime error,以提升代碼質量 併發
6.改善了類型推斷 oracle
private List<Card> entireDeck= new ArrayList<>();
7.方法參數反射
2、針對集合(Collections)Stream API的目的是利用多核技術可將大數據經過多核並行處理,提升數據的處理效率
public static void testInt(Integer... numbers) { List<Integer> l = Arrays.asList(numbers); List<Integer> r = l.stream() .map(e -> new Integer(e)) .filter(e -> e > 2) .distinct() .collect(Collectors.toList()); System.out.println("testInt result is: " + r); }
調用:testInt(2, 3, 4, 2, 3, 5, 1);
2.針對有Key Collisions的HashMaps的性能改進
3、Compact Profiles目前提供了三種Compact Profiles,分別是compact一、compact二、compact3,他們的關係是compact1<compact2<compact3。每一個compact profiles包括低版本的profiles(compact2 is a superset of compact1 即compact2是compact1的超集,The full SE API is a superset of the compact3 profiles 而the full SE API又是compact3的超集)
在命令javac,jdeps命令中都增長了-profile參數
該特性也是爲java9的模塊化項目作準備。
詳見:http://docs.oracle.com/javase/8/docs/technotes/guides/compactprofiles/compactprofiles.html
Full SE API | Beans | JNI | JAX-WS |
Preferences | Accessibility | IDL | |
RMI-IIOP | CORBA | Print Service | |
Sound | Swing | Java 2D | |
AWT | Drag and Drop | Input Methods | |
Image I/O | |||
compact3 | Security1 | JMX | |
XML JAXP2 | Management | Instrumentation | |
compact2 | JDBC | RMI | XML JAXP |
compact1 | Core (java.lang.*) | Security | Serialization |
Networking | Ref Objects | Regular Expressions | |
Date and Time | Input/Output | Collections | |
Logging | Concurrency | Reflection | |
JAR | ZIP | Versioning | |
Internationalization | JNDI | Override Mechanism | |
Extension Mechanism | Scripting |
使用不一樣的compact profiles的編譯後,佔用的大體空間見下圖:
4、安全性
這部分的內容較多,主要以下:主要是一些加密算法的支持,詳細能夠參見原文
5、JavaFX1.3D Graphics包括3D shapes, camera, lights, subscene, material, picking, and antialiasing等
2.WebView也提供了新的特性和功能改進
其餘能夠參見原文
六 工具(tools)8、部署
有兩項,都是針對權限方面的限制
9、Date-Time Package 代碼能夠參考《默認方法的概念與代碼解析》http://my.oschina.net/cloudcoder/blog/215594
10、Scripting
Nashorn Javascript Engine
11、java.lang and java.util Packages
5. The java.util.concurrent.locks.StampedLock class has been added to provide a capability-based lock with three modes for controlling read/write access.
十6、HotSpot
1. Hardware intrinsics were added to use Advanced Encryption Standard (AES). The UseAES and UseAESIntrinsics flags are available to enable the hardware-based AES intrinsics for Intel hardware. The hardware must be 2010 or newer Westmere hardware. For example, to enable hardware AES, use the following flags:
-XX:+UseAES -XX:+UseAESIntrinsics
To disable hardware AES use the following flags:
-XX:-UseAES -XX:-UseAESIntrinsics
支持基於硬件特性的AES,但硬件須要是2010年之後的設備或更新的Westmere硬件
2: Removal of PermGen.
移除了PermGen(內存的永久保存區域)
JDK8 HotSpot JVM 將移除永久區,使用本地內存來存儲類元數據信息並稱之爲:元空間(Metaspace);這與Oracle JRockit 和IBM JVM’s很類似,以下圖所示
默認狀況下,類元數據只受可用的本地內存限制(容量取決因而32位或是64位操做系統的可用虛擬內存大小)。
新參數(MaxMetaspaceSize)用於限制本地內存分配給類元數據的大小。若是沒有指定這個參數,元空間會在運行時根據須要動態調整。
3:Default Methods in the Java Programming Language are supported by the byte code instructions for method invocation.
支持java編程語言中的默認方法
詳細參見原文
原文參見
http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html