JDK 8 Documentation - Developer Preview Release
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
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.
Parallel Array Sorting
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.
Annotations API Updates
Java SE 8 includes significant updates to the Annotations API:
- It is now possible to apply the same annotation type more than once to the same declaration or type use. This feature is called repeating annotations.
- It is now possible to apply an annotation anywhere a type is used, not just on a declaration. Used in conjunction with a pluggable type system, this feature allows for improved type checking of your code.
For more information, see the Annotations lesson in The Java Tutorials.
Base64 Encoding Schemes
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:
Server Name Indication Extension for Server Applications
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
SSLEngine instances should accept a connection.
For information and examples, see the Server Name Indication (SNI) Extension section in the JSSE Reference Guide.
New PKIXRevocationChecker Class
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.
SHA-224 Message Digests
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:
Stronger Algorithms for Password-Based Encryption
Several AES password-based encryption (PBE) algorithms, such as
PBEWithSHA512AndAES_256, have been added to the SunJCE provider. For more information, see the Oracle Providers Documentation.
Enhanced Support for NSA Suite B Cryptography
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:
Installation of Custom Resources as Extensions
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 Calendar and Locale APIs
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:
Pack200 Engine Updates
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
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 for Linux ARM
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.
- JDBC-ODBC Bridge
- Old Java Plug-in: The Java Plug-in deprecated since Java SE 6 Update 10 has been removed. The Java Rich Internet Applications Guide has been rewritten to reflect this. The old Java Plug-in is not compatible with newer Java technologies as JavaFX. In addition, the current Java Plug-in addresses security weakness found in the old Java Plug-in. For more information about the differences between the old Java Plug-in and the current one, see Applet Developer's Guide in the Java SE 7 Developer Guides.
Stay tuned for early access documentation related to the following areas:
- Security Enhancements
- Overhaul JKS-JCEKS-PKCS12 Keystores, JEP 166
- MS-SFU Kerberos 5 Extensions, JEP 113
- Limited doPrivileged, JEP 140
- AEAD CipherSuites, JEP 115
- Configurable Secure Random-Number Generation, JEP 123
- Deployment Enhancements
- Launch JavaFX Applications, JEP 153
- Integrating JavaFX into the JRE and JDK
- Networking Enhancements
- Library Enhancements
- Handle Frequent HashMap Collisions with Balanced Trees, JEP 180
- JAXP 1.5: Restrict Fetching of External Resources, JEP 185
- Concurrency Updates, JEP 155
- Date & Time API, JEP 150
- Language Enhancements
- Access to Parameter Names at Runtime, JEP 118
- Features Related to Lambda Expressions, JEP 126
- Bulk Data Operations, JEP 107
- Virtual Extension Methods
- Enhance Core Libraries with Lambda, JEP 109
- Tools and Other Enhancements
javac option to provide HTML compliance for Javadoc, JEP 172
- Updating JVM Command Line Flags and Options
- Optional Grouping: Provides different method views for generated Javadoc documentation
- 64-bit Unsigned int Data Type
- Compact Profiles, JEP 161
- Removed Features: The documentation for these features will be removed in upcoming early access documentation updates:
- Removal of ActiveX Bridge