What's New in JDK 8

https://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html

Java Platform, Standard Edition 8 is a major feature release. This document summarizes features and enhancements in Java SE 8 and in JDK 8, Oracle's implementation of Java SE 8. Click the component name for a more detailed description of the enhancements for that component.

  • Java Programming Language

    • Lambda Expressions, a new language feature, has been introduced in this release. They enable you to treat functionality as a method argument, or code as data. Lambda expressions let you express instances of single-method interfaces (referred to as functional interfaces) more compactly.

    • Method references provide easy-to-read lambda expressions for methods that already have a name.

    • Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility with code written for older versions of those interfaces.

    • Repeating Annotations provide the ability to apply the same annotation type more than once to the same declaration or type use.

    • Type Annotations provide the ability to apply an annotation anywhere a type is used, not just on a declaration. Used with a pluggable type system, this feature enables improved type checking of your code.

    • Improved type inference.

    • Method parameter reflection.

  • Collections

    • Classes in the new java.util.stream package provide a Stream API to support functional-style operations on streams of elements. The Stream API is integrated into the Collections API, which enables bulk operations on collections, such as sequential or parallel map-reduce transformations.

    • Performance Improvement for HashMaps with Key Collisions

  • Compact Profiles contain predefined subsets of the Java SE platform and enable applications that do not require the entire Platform to be deployed and run on small devices.

  • Security

    • Client-side TLS 1.2 enabled by default

    • New variant of AccessController.doPrivileged that enables code to assert a subset of its privileges, without preventing the full traversal of the stack to check for other permissions

    • Stronger algorithms for password-based encryption

    • SSL/TLS Server Name Indication (SNI) Extension support in JSSE Server

    • Support for AEAD algorithms: The SunJCE provider is enhanced to support AES/GCM/NoPadding cipher implementation as well as GCM algorithm parameters. And the SunJSSE provider is enhanced to support AEAD mode based cipher suites. See Oracle Providers Documentation, JEP 115.

    • KeyStore enhancements, including the new Domain KeyStore type java.security.DomainLoadStoreParameter, and the new command option -importpassword for the keytool utility

    • SHA-224 Message Digests

    • Enhanced Support for NSA Suite B Cryptography

    • Better Support for High Entropy Random Number Generation

    • New java.security.cert.PKIXRevocationChecker class for configuring revocation checking of X.509 certificates

    • 64-bit PKCS11 for Windows

    • New rcache Types in Kerberos 5 Replay Caching

    • Support for Kerberos 5 Protocol Transition and Constrained Delegation

    • Kerberos 5 weak encryption types disabled by default

    • Unbound SASL for the GSS-API/Kerberos 5 mechanism

    • SASL service for multiple host names

    • JNI bridge to native JGSS on Mac OS X

    • Support for stronger strength ephemeral DH keys in the SunJSSE provider

    • Support for server-side cipher suites preference customization in JSSE

  • JavaFX

    • The new Modena theme has been implemented in this release. For more information, see the blog at fxexperience.com.

    • The new SwingNode class enables developers to embed Swing content into JavaFX applications. See the SwingNode javadoc and Embedding Swing Content in JavaFX Applications.

    • The new UI Controls include the DatePicker and the TreeTableView controls.

    • The javafx.print package provides the public classes for the JavaFX Printing API. See the javadoc for more information.

    • The 3D Graphics features now include 3D shapes, camera, lights, subscene, material, picking, and antialiasing. The new Shape3D (BoxCylinderMeshView, and Spheresubclasses), SubSceneMaterialPickResultLightBase (AmbientLight and PointLight subclasses) , and SceneAntialiasing API classes have been added to the JavaFX 3D Graphics library. The Camera API class has also been updated in this release. See the corresponding class javadoc for javafx.scene.shape.Shape3Djavafx.scene.SubScenejavafx.scene.paint.Materialjavafx.scene.input.PickResultjavafx.scene.SceneAntialiasing, and the Getting Started with JavaFX 3D Graphics document.

    • The WebView class provides new features and improvements. Review Supported Features of HTML5 for more information about additional HTML5 features including Web Sockets, Web Workers, and Web Fonts.

    • Enhanced text support including bi-directional text and complex text scripts such as Thai and Hindi in controls, and multi-line, multi-style text in text nodes.

    • Support for Hi-DPI displays has been added in this release.

    • The CSS Styleable* classes became public API. See the javafx.css javadoc for more information.

    • The new ScheduledService class allows to automatically restart the service.

    • JavaFX is now available for ARM platforms. JDK for ARM includes the base, graphics and controls components of JavaFX.

  • Tools

    • The jjs command is provided to invoke the Nashorn engine.

    • The java command launches JavaFX applications.

    • The java man page has been reworked.

    • The jdeps command-line tool is provided for analyzing class files.

    • Java Management Extensions (JMX) provide remote access to diagnostic commands.

    • The jarsigner tool has an option for requesting a signed time stamp from a Time Stamping Authority (TSA).

    • Javac tool

      • The -parameters option of the javac command can be used to store formal parameter names and enable the Reflection API to retrieve formal parameter names.

      • The type rules for equality operators in the Java Language Specification (JLS) Section 15.21 are now correctly enforced by the javac command.

      • The javac tool now has support for checking the content of javadoc comments for issues that could lead to various problems, such as invalid HTML or accessibility issues, in the files that are generated when javadoc is run. The feature is enabled by the new -Xdoclint option. For more details, see the output from running "javac -X". This feature is also available in the javadoc tool, and is enabled there by default.

      • The javac tool now provides the ability to generate native headers, as needed. This removes the need to run the javah tool as a separate step in the build pipeline. The feature is enabled in javac by using the new -h option, which is used to specify a directory in which the header files should be written. Header files will be generated for any class which has either native methods, or constant fields annotated with a new annotation of type java.lang.annotation.Native.

    • Javadoc tool

      • The javadoc tool supports the new DocTree API that enables you to traverse Javadoc comments as abstract syntax trees.

      • The javadoc tool supports the new Javadoc Access API that enables you to invoke the Javadoc tool directly from a Java application, without executing a new process. See the javadoc what's new page for more information.

      • The javadoc tool now has support for checking the content of javadoc comments for issues that could lead to various problems, such as invalid HTML or accessibility issues, in the files that are generated when javadoc is run. The feature is enabled by default, and can also be controlled by the new -Xdoclint option. For more details, see the output from running "javadoc -X". This feature is also available in the javac tool, although it is not enabled by default there.

  • Internationalization

    • Unicode Enhancements, including support for Unicode 6.2.0

    • Adoption of Unicode CLDR Data and the java.locale.providers System Property

    • New Calendar and Locale APIs

    • Ability to Install a Custom Resource Bundle as an Extension

  • Deployment

    • For sandbox applets and Java Web Start applications, URLPermission is now used to allow connections back to the server from which they were started. SocketPermission is no longer granted.

    • The Permissions attribute is required in the JAR file manifest of the main JAR file at all security levels.

  • Date-Time Package - a new set of packages that provide a comprehensive date-time model.

  • Scripting

    • The Rhino javascript engine has been replaced with the Nashorn Javascript Engine

  • Pack200

    • Pack200 Support for Constant Pool Entries and New Bytecodes Introduced by JSR 292

    • JDK8 support for class files changes specified by JSR-292, JSR-308 and JSR-335

  • IO and NIO

    • New SelectorProvider implementation for Solaris based on the Solaris event port mechanism. To use, run with the system property java.nio.channels.spi.Selectorset to the value sun.nio.ch.EventPortSelectorProvider.

    • Decrease in the size of the <JDK_HOME>/jre/lib/charsets.jar file

    • Performance improvement for the java.lang.String(byte[], *) constructor and the java.lang.String.getBytes() method.

  • java.lang and java.util Packages

    • Parallel Array Sorting

    • Standard Encoding and Decoding Base64

    • Unsigned Arithmetic Support

  • JDBC

    • The JDBC-ODBC Bridge has been removed.

    • JDBC 4.2 introduces new features.

  • Java DB

    • JDK 8 includes Java DB 10.10.

  • Networking

    • The class java.net.URLPermission has been added.

    • In the class java.net.HttpURLConnection, if a security manager is installed, calls that request to open a connection require permission.

  • Concurrency

    • Classes and interfaces have been added to the java.util.concurrent package.

    • Methods have been added to the java.util.concurrent.ConcurrentHashMap class to support aggregate operations based on the newly added streams facility and lambda expressions.

    • Classes have been added to the java.util.concurrent.atomic package to support scalable updatable variables.

    • Methods have been added to the java.util.concurrent.ForkJoinPool class to support a common pool.

    • The java.util.concurrent.locks.StampedLock class has been added to provide a capability-based lock with three modes for controlling read/write access.

  • Java XML - JAXP

  • HotSpot

    • Hardware intrinsics were added to use Advanced Encryption Standard (AES). The UseAESand UseAESIntrinsics flags are available to enable the hardware-based AES intrinsics for Intel hardware. The hardware must be 2010 or newer Westmere hardware.

      Note: AES intrinsics are only supported by the Server VM.

      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
      
    • Removal of PermGen.

    • Default Methods in the Java Programming Language are supported by the byte code instructions for method invocation.

  • Java Mission Control 5.3 Release Notes

    • JDK 8 includes Java Mission Control 5.3.

Java 8 New Features的更多相关文章

  1. Java 9 New Features

    Java 9 概述 1. jdk 9 的发布.经过 4 次跳票,历经曲折的 java 9 终于终于在 2017 年 9 月 21 日发布. 2. Java 9 中哪些不得不说的新特性?java 9 提 ...

  2. Java 11 New Features

    前言 北京时间 2018年9 月 26 日,Oracle 官方宣布 Java 11 正式发布.这是 Java 大版本周期变化后的第一个长期支持版本,非常值得关注.从官网即可下载, 最新发布的 Java ...

  3. [Android Tips] 22. Available Java 7 Features in Android

    This only allows Java 7 language features, and you can hardly benefit from anything since a half of ...

  4. Java相关书籍分享

    Java核心技术(卷1):基础知识(原书第9版) [Core Java Volume I-Fundamentals (Ninth Edition)].pdf Java核心技术(卷2):高级特性(原书第 ...

  5. 【转】Java 8十个lambda表达式案例

    1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnable() { @Override public ...

  6. Java性能提示(全)

    http://www.onjava.com/pub/a/onjava/2001/05/30/optimization.htmlComparing the performance of LinkedLi ...

  7. Java theory and practice

    This content is part of the series: Java theory and practice A brief history of garbage collection A ...

  8. Java 8十个lambda表达式案例

    1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnable() { @Override public ...

  9. 程序员要拥抱变化,聊聊Android即将支持的Java 8

    WeTest 导读 Java 9预计今年也会正式发布,Java 8这个最具变革性且变革性最适于GUI程序的版本,Android终于准备正式支持.从自己开发JavaFx的感受,说一说Java 8应该使用 ...

随机推荐

  1. vuex中mapGetters的使用及简单实现原理

    一.项目中的mapGetters在Vue项目的开发过程中必然会使用到vuex,对vue项目公用数据进行管理,从而解决组件之间数据相互通信的问题,如果不使用vuex,那么一些非父子组件之间的数据通信将会 ...

  2. oracle在windows(含客户端工具pl/sql安装)下安装

    安装Oracle服务器端 系统默认创建的数据库名称为orcl,可自行修改. 全局数据库名(用来唯一标示Oracle数据库,每个数据库至少由一个Oracle系统标识符(SID)引用),orcl,后面称为 ...

  3. 使用spring boot 2.1.8生成的maven项目pom.xml第一行报错unknown error

    问题:eclipse neon4.6.3新建springboot项目时pom.xml报错unknown error 原因: spring boot 2.1.8更新了maven插件,eclipse不兼容 ...

  4. 【CSP-S膜你考】我们的可可西里

    我们的可可西里 题面 转眼到了2008年的6月9日,盼望已久的高考结束了.我们踏上了向西的旅程(本来是想写西去之路,可是考虑不太妥当).可可西里,多么诱人的名词,充满了奇幻的色彩和自然的淳朴.从可可西 ...

  5. K8s容器资源限制

    在K8s中定义Pod中运行容器有两个维度的限制: 1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod. 如: Pod运行至少需要2G内存,1核CPU    2. 资源限额: ...

  6. Trie字典树(超详细!!!)

    介绍 字典树,也称Trie.字母树,指的是某个字符串集合对应的形如下图的有根树.树的每条边上对应有恰好一个字符,每个顶点代表从根到该节点的路径所对应的字符串(将所有经过的边上的字符按顺序连接起来).有 ...

  7. Spring Cloud Greenwich.SR4 发布了,跟不上了……

    前几天 Spring Cloud Greenwich.SR4 发布了: https://spring.io/blog/2019/11/19/spring-cloud-greenwich-sr4-rel ...

  8. 缓存穿透 & 缓存击穿 & 缓存雪崩

    参考文档: 缓存穿透和缓存失效的预防和解决:https://blog.csdn.net/qq_16681169/article/details/75138876 缓存穿透 缓存穿透是指查询一个一定不存 ...

  9. Scala词法文法解析器 (一)解析SparkSQL的BNF文法

    平台公式及翻译后的SparkSQL 平台公式的样子如下所示: if (XX1_m001[D003]="邢おb7肮α䵵薇" || XX1_m001[H003]<"2& ...

  10. Guava 源码分析之Cache的实现原理

    Guava 源码分析之Cache的实现原理 前言 Google 出的 Guava 是 Java 核心增强的库,应用非常广泛. 我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Goog ...