Finally, Java 8 arrives on March 18, 2014. This release has been announced at EclipseCon 2014. It is the first major release in Java after two years of time. Java 8 comes with lot of new features which are new to the Java programming itself. From today you can download Java 8 and use it in your project. Some of the notable improvements and features in Java 8 are listed below. We have already covering many of the features here at Java 8 Tutorials.
Lambdas Expressions
provide a means to pass functions as data. With implicit casting to Single Abstract Method types (such as Runnable
) it will dramatically simplify code that needs to pass filters and other predicates as data. (Note that the reason they are called lambdas is that Java has had closures in the form of inner classes since Java 1.1; what some incorrectly refer to as closures are really talking lambdas.) An example of a lambda is x -> x +1
.
- Enhanced Collections API in Java 8- Supports Lambda expressions
- A sneak peak at the Lambda Expressions in Java 8
Stream API
- 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.
Extension Methods or Defender Methods
We all are aware of the fact that the interfaces don’t contain any implementation for the methods. To provide support for new APIs which support the use of closures and also which can run on Multi core platforms there has to be some way to add these APIs to existing classes. For example, methods like forEach, map, reduce, filter which act on a collection can be added to the Collection class directly or create a new interface and let all the collection API implement them or leave it to the user of the API to implement the new interface. The first 2 approaches would lead to breaking lots of existing code because of the lack of implementation of these new methods in the interface. The last approach is possible, but it doesn’t enhance the collection API out of the box.
The team which handles JSR-335 thought of a way to add default implementation to the interfaces, which gives an option for the implementor to override the method or to leave it as is. This way new APIs can be added to the Collection class without breaking the existing code and yet provide the full support of the closures to the existing code. One can read in depth about Virtual Extension Methods here.
- Virtual Extension Methods(or Defender Methods) in Java 8
- Resolution of the invocation of Virtual Extension Methods in Java 8
JSR 310
This section adds new Date and Time API to Java for avoiding any problems arise out of the existing java.util.Data classes.
Method References
Method references provide easy-to-read lambda expressions for methods that already have a name.
Other Changes
- Removal of PermGen
- JDK 8 includes Java Mission Control 5.3
- Default Methods in the Java Programming Language are supported by the byte code instructions for method invocation.
- Classes and interfaces have been added to the
java.util.concurrent
package. - JDBC 4.2 introduces new features.
- Nashorn Javascript Engine
- Repeating Annotations provide the ability to apply the same annotation type more than once to the same declaration or type use.
Apart from the above changes, there is ton of new features and changes introduced as part of the Java 8 release. You can read all the features list here.