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. We already predicted the Java 8 release in our previous blog: JAVA: STORIES 2013
Some of the notable improvements and features in Java 8 are listed below:
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.
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 for Each, 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.
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 provide easy-to-read lambda expressions for methods that already have a name.
- 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.
- 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 are ton of new features and changes introduced as part of the Java 8 release.