Lambda Expressions: A lambda expression is a short block of code that can be passed around as a function to be executed later. It provides functional programming capabilities in Java.
Stream API: The Stream API is a functional programming interface in Java 8 that provides operations to process data elements in a collection. It supports operations such as filtering, mapping, and reducing.
Default methods: Default methods allow developers to add new methods to existing interfaces without breaking existing code that implements these interfaces.
Date and Time API: Java 8 introduced a new date and time API that provides classes for dates, times, instants, and durations. It replaces the old java.util.Date and java.util.Calendar classes.
Optional Class: The Optional class is a container class used to represent an optional value. It helps to avoid null checks and improves readability of code.
Nashorn JavaScript Engine: Nashorn is a JavaScript engine included in Java 8 that provides the ability to execute JavaScript code from within Java.
Base64 Encoding and Decoding: Java 8 added support for Base64 encoding and decoding of data. It provides a simple way to encode binary data as text and decode encoded data back to its original form.
Parallel Array Sorting: Java 8 added support for sorting arrays in parallel, making use of multiple cores to sort an array more efficiently.
Concurrent Accumulators and Collectors: Java 8 added new concurrent accumulators and collectors that allow developers to perform complex aggregate operations on parallel streams efficiently.
Functional Interfaces: Java 8 added a new functional interface annotation, @FunctionalInterface, to identify interfaces that are meant to be used as lambdas.