Java Development Kit Release 8 (JDK 8) Early Access Documentation, which helps developers explore features in the upcoming JDK 8 release, has been enhanced and updated. It comprises the Developer Guides, The Java Tutorials, and API
documentation.
Download JDK 8 Early Access from JDK 8 Project.
Use the Project Feedback forum if you have suggestions for or encounter issues using JDK 8. If you find bugs in a release, submit them using the usual Java SE bug reporting channels.
The following describes where you can find documentation for specific JDK 8 enhancements:
The following enhancements affect the Java language or the JDK library:
Lambda expressions enable you to treat functionality as a method argument, or code as data. They also let you express instances of single-method classes more compactly. For example, you could use a lambda expression to perform a certain action on each element of a collection, when a process is completed, or when a process encounters an error. See the section Lambda Expressions in The Java Tutorials.
Method references enable you to refer to an existing method by name; they are compact, easy-to-read lambda expressions for methods that already have a name. See the section Method References in The Java Tutorials.
Bulk data expressions iterate over collections on your behalf, which enable you to write more concise and efficient code that process elements stored in collections. You specify lambda expressions as parameters for bulk data operations. This enables you to customize the behavior of a particular bulk data operation. The Collections trail will feature a new lesson about bulk data operations.
JDK 7 introduced the Fork/Join framework for lightweight data parallelism, but users have to implement their own algorithms for simple/common tasks. In JDK 8, the Fork/Join framework is used to provide a standard implementation of parallel sorting for arrays.
For more information, see the Fork/Join and Arrays lessons in The Java Tutorials.
Java SE 8 includes significant updates to the Annotations API:
For more information, see the Annotations lesson in The Java Tutorials.
The classes Base64
, Base64.Encoder
, and Base64.Decoder
have been added. Applications that use base64 encoding schemes include those that use Multipurpose Internet Mail Extensions (MIME) and encode passwords for HTTP headers.
For more information, see Enhancements in Packages java.lang.* and java.util.*.
The following enhancements affect the security features in Java SE:
The Server Name Indication (SNI) extension is a feature that extends the SSL/TLS protocols to indicate what server name the client is attempting to connect to during handshaking. In the Java Secure Socket Extension (JSSE) API for JDK 7, the SunJSSE provider has enabled SNI extension for client applications. JDK 8 supports the SNI extension for server applications as well. Servers can use the SNI to decide if specific SSLSocket
or SSLEngine
instances should accept a connection.
For information and examples, see the Server Name Indication (SNI) Extension section in the JSSE Reference Guide.
The PKIXRevocationChecker
class checks the revocation status of certificates with the X.509-based public-key infrastructure (PKIX) algorithm. It supports best-effort checking, single-certificate checking, and mechanism-specific options and parameters.
For more information, see the Java PKI API Programmer's Guide.
The cryptographic algorithms in JDK 8 have been enhanced with the SHA-224 variant of the SHA-2 family of message-digest implementations. For more information, see the following updated documentation:
Several AES password-based encryption (PBE) algorithms, such as PBEWithSHA256AndAES_128
and PBEWithSHA512AndAES_256
, have been added to the SunJCE provider. For more information, see the Oracle Providers Documentation.
This enhancement includes the addition of SHA-224, SHA-256, SHA-384, and SHA-512 message digests, as well as SHA224withDSA and SHA256withDSA signatures. Also, the keysize limit for the Diffie-Hellman algorithm has been increased from 1024 to 2048.
For more information, see the Oracle Providers Documentation and the Standard Algorithm Name Documentation.
The following enhancements affect the internationalization features in Java SE:
The java.util.spi.ResourceBundleControlProvider
interface enables you to change how the ResourceBundle.getBundle()
method loads resource bundles. ResourceBundleControlProvider
is a service provider interface (SPI). SPIs enable you to create extensible applications, which are those that you can extend easily without modifying their original code base.
For more information, see the Installing a Custom Resource Bundle as an Extension lesson in The Java Tutorials.
New and updated Locale and Calendar APIs in JDK 8 support enhancements in the Unicode Common Locale Data Repository (CLDR) project. For a list of the APIs, see the Internationalization Enhancements page.
The following enhancements affect the tools and utilities supplied with the JDK:
In Java SE 8, the Java class file format has been updated to reflect changes introduced by JSR 292: Supporting Dynamically Typed Languages on the Java Platform. Consequently, the Pack200 engine has been updated accordingly to ensure that class files are compressed effectively. In particular, the Pack200 engine now recognizes constant pool entries and new bytecodes introduced by JSR 292. As a result, compressed files created with this version of the pack200
tool will not be compatible with older versions of the unpack200
tool.
For more information, see the Compression Formats for Network Deployment section of the Java Rich Internet Applications Guide.
The following enhancements affect support for platforms and systems:
JDK 8 provides support for Linux ARMv7-based systems. It is known to run but has not been fully tested on select ARMv6-based systems such as Raspberry Pi. Hard-float application binary interface (ABI) support has been added in JDK 8 for ARM; soft-float ABI support has been removed. Serviceability Agent (SA) has been added in JDK 8 for ARM. See Serviceability in HotSpot and jsadebugd - Serviceability Agent Debug Daemon for more information.
The following features, and their documentation, have been removed from JDK 8:
apt
Tool: This tool and its associated API contained in the package com.sun.mirror
have been removed.Stay tuned for early access documentation related to the following areas:
Java Development Kit Release 8 (JDK 8) Early Access Documentation, which helps developers explore features in the upcoming JDK 8 release, has been enhanced and updated. It comprises the Developer Guides, The Java Tutorials, and API
documentation.
Download JDK 8 Early Access from JDK 8 Project.
Use the Project Feedback forum if you have suggestions for or encounter issues using JDK 8. If you find bugs in a release, submit them using the usual Java SE bug reporting channels.
The following describes where you can find documentation for specific JDK 8 enhancements:
The following enhancements affect the Java language or the JDK library:
Lambda expressions enable you to treat functionality as a method argument, or code as data. They also let you express instances of single-method classes more compactly. For example, you could use a lambda expression to perform a certain action on each element of a collection, when a process is completed, or when a process encounters an error. See the section Lambda Expressions in The Java Tutorials.
Method references enable you to refer to an existing method by name; they are compact, easy-to-read lambda expressions for methods that already have a name. See the section Method References in The Java Tutorials.
Bulk data expressions iterate over collections on your behalf, which enable you to write more concise and efficient code that process elements stored in collections. You specify lambda expressions as parameters for bulk data operations. This enables you to customize the behavior of a particular bulk data operation. The Collections trail will feature a new lesson about bulk data operations.
JDK 7 introduced the Fork/Join framework for lightweight data parallelism, but users have to implement their own algorithms for simple/common tasks. In JDK 8, the Fork/Join framework is used to provide a standard implementation of parallel sorting for arrays.
For more information, see the Fork/Join and Arrays lessons in The Java Tutorials.
Java SE 8 includes significant updates to the Annotations API:
For more information, see the Annotations lesson in The Java Tutorials.
The classes Base64
, Base64.Encoder
, and Base64.Decoder
have been added. Applications that use base64 encoding schemes include those that use Multipurpose Internet Mail Extensions (MIME) and encode passwords for HTTP headers.
For more information, see Enhancements in Packages java.lang.* and java.util.*.
The following enhancements affect the security features in Java SE:
The Server Name Indication (SNI) extension is a feature that extends the SSL/TLS protocols to indicate what server name the client is attempting to connect to during handshaking. In the Java Secure Socket Extension (JSSE) API for JDK 7, the SunJSSE provider has enabled SNI extension for client applications. JDK 8 supports the SNI extension for server applications as well. Servers can use the SNI to decide if specific SSLSocket
or SSLEngine
instances should accept a connection.
For information and examples, see the Server Name Indication (SNI) Extension section in the JSSE Reference Guide.
The PKIXRevocationChecker
class checks the revocation status of certificates with the X.509-based public-key infrastructure (PKIX) algorithm. It supports best-effort checking, single-certificate checking, and mechanism-specific options and parameters.
For more information, see the Java PKI API Programmer's Guide.
The cryptographic algorithms in JDK 8 have been enhanced with the SHA-224 variant of the SHA-2 family of message-digest implementations. For more information, see the following updated documentation:
Several AES password-based encryption (PBE) algorithms, such as PBEWithSHA256AndAES_128
and PBEWithSHA512AndAES_256
, have been added to the SunJCE provider. For more information, see the Oracle Providers Documentation.
This enhancement includes the addition of SHA-224, SHA-256, SHA-384, and SHA-512 message digests, as well as SHA224withDSA and SHA256withDSA signatures. Also, the keysize limit for the Diffie-Hellman algorithm has been increased from 1024 to 2048.
For more information, see the Oracle Providers Documentation and the Standard Algorithm Name Documentation.
The following enhancements affect the internationalization features in Java SE:
The java.util.spi.ResourceBundleControlProvider
interface enables you to change how the ResourceBundle.getBundle()
method loads resource bundles. ResourceBundleControlProvider
is a service provider interface (SPI). SPIs enable you to create extensible applications, which are those that you can extend easily without modifying their original code base.
For more information, see the Installing a Custom Resource Bundle as an Extension lesson in The Java Tutorials.
New and updated Locale and Calendar APIs in JDK 8 support enhancements in the Unicode Common Locale Data Repository (CLDR) project. For a list of the APIs, see the Internationalization Enhancements page.
The following enhancements affect the tools and utilities supplied with the JDK:
In Java SE 8, the Java class file format has been updated to reflect changes introduced by JSR 292: Supporting Dynamically Typed Languages on the Java Platform. Consequently, the Pack200 engine has been updated accordingly to ensure that class files are compressed effectively. In particular, the Pack200 engine now recognizes constant pool entries and new bytecodes introduced by JSR 292. As a result, compressed files created with this version of the pack200
tool will not be compatible with older versions of the unpack200
tool.
For more information, see the Compression Formats for Network Deployment section of the Java Rich Internet Applications Guide.
The following enhancements affect support for platforms and systems:
JDK 8 provides support for Linux ARMv7-based systems. It is known to run but has not been fully tested on select ARMv6-based systems such as Raspberry Pi. Hard-float application binary interface (ABI) support has been added in JDK 8 for ARM; soft-float ABI support has been removed. Serviceability Agent (SA) has been added in JDK 8 for ARM. See Serviceability in HotSpot and jsadebugd - Serviceability Agent Debug Daemon for more information.
The following features, and their documentation, have been removed from JDK 8:
apt
Tool: This tool and its associated API contained in the package com.sun.mirror
have been removed.Stay tuned for early access documentation related to the following areas: