Will it be worth the wait? Java 8 is great, the benefits are solid! We are hoping Java 9 will build upon the “code changing effects” of Java 8.
Gokul Gopi from Telliant Systems expounded upon the benefits of Java 8 in a yammer post:
5 Features in Java-8 that will change the way you code:
Map<Person.Gender, List<Person>> byGender =
The actual iteration over a collection on which a Lambda function is applied now carried out by the core library itself (i.e. internal iteration).
New date / time APIs
Java 8 implemented its own new date / time API from scratch.
Concurrent accumulator classes that enable you to very efficiently increase / decrease the value of a counter in a thread safe manner.
Now 6 Best Java 9 Feature updates:
New module system
Large applications maintaining a library come with a myriad of challenges: Increasing the code base leads to the complicated code and use of snarled dependencies.
Trying to find clear dependencies between different parts of the system is difficult when you are trying to compress code with every public class.
The Jigsaw project that is included in the new Java version is meant to solve all these issues.
How the data is framed and transported between client and server is the primary difference between HTTP1.1 and HTTP/2. HTTP/1.1 is reliant upon a request and response cycle. HTTP/2 can allow a push data type of process, this process can send back more data then requested by the client. With this method of prioritizing and sendng data web pages will load first. HTTP 2.0 will have the full support of Java 9 with new HTTP client features.
There are some very helpful enhancements to the javadoc in Java 9, one of them is the addition of a search box. I know, it sounds simple, but sometimes the simple improvements are the best.
Being able to create Stream from Optimal continues to be a game changing feature in Java. The Stream API was very important in Java 8 and with Java 9 it has gotten even better. There are also four new methods added to the Stream interface: iterate, dropWhile, takeWhile, ofNullable.
DropWhile discards the first items of the stream until a condition is met.
TakeWhile processes items until a condition is met.
Iterate allows you to write proper replacements for the for loops using streams. It takes the initial value of the stream, the condition that defines when to stop iterating and the step function to produce the next element.
OfNullable as the name suggest let you create streams from objects without the need to check for nulls. It returns a sequential Stream containing a single element, if non-null, otherwise returns an empty Stream.
Initialization of collections is updated with new factory methods
If you want to create a List of predefined values you have to do a lot of typing.
Newly added factory methods will be dramatically easier with the initialization of common collections. Enhancements in the static methods in the interfaces to allow for the List, Set, and Map interfaces to be made with up to 10 elements. Performance is optimized.
Enhanced process API
Control and the ability to manage the operating system was severely limited. In addition, the code that you wrote to do such interactions was dependent on the OS.
With this new release you will have the ability to interact with the operating system. Handling the PID management , process names, states and child process have been added.
Why should I already look to Java 10?
Unfortunately, some features were not integrated into the new Java 9:
- A standardized and light-weighted JSON API is hyped by many java developers.
- The money and currency API
All in Good time, says the developers at Oracle!