- Lambda Expressions, a new language feature, has been introduced in this release. They enable you to treat functionality as a method argument, or code as data. Lambda expressions let you express instances of single-method interfaces (referred to as functional interfaces) more compactly.
- Improved Type Inference - The Java compiler takes advantage of target typing to infer the type parameters of a generic method invocation. The target type of an expression is the data type that the Java compiler expects depending on where the expression appears. For example, you can use an assignment statement's target type for type inference in Java SE 7. However, in Java SE 8, you can use the target type for type inference in more contexts.
- Repeating Annotations provide the ability to apply the same annotation type more than once to the same declaration or type use.
- Type Annotations provide the ability to apply an annotation anywhere a type is used, not just on a declaration. Used with a
pluggable type system, this feature enables improved type checking of
- Method parameter reflection - You can obtain the names of the formal parameters of any method or constructor with the method
java.lang.reflect.Executable.getParameters. (The classes Method and Constructor extend the class Executable and therefore inherit the method
.class files do not store formal parameter names by default. To store formal parameter names in a particular
.class file, and thus enable the Reflection API to retrieve formal parameter names, compile the source file with the
-parameters option of the javac compiler.
- Date-time-api - Added new time api in
java.time. If used this, you don't need to designate timezone.