JDK 1.8 新增了许多重要特性,主要包括:
1. Lambda 表达式和函数式接口Lambda 表达式使得开发者可以简洁地表达匿名函数。函数式接口提供如 Function、Predicate 和 Consumer 等,使用 Lambda 表达式无需定义显式的匿名类。
2. Stream APIStream API使我们可以高效且声明性地对集合进行过滤、聚合等操作。使用Stream,开发者可以利用Lambda表达式来清楚地表达数据处理逻辑。
3. 默认方法 接口可以有默认方法实现,对象可以直接调用默认方法而不用实现。这是接口的一个重大改进。
4. 方法引用 方法引用可以直接引用已有方法来代表Lambda表达式。更加简洁。
5. OptionalOptional类增强了Null检查,可以避免部分NullPointerException。代表一个值存在或不存在。
6. Nashorn JavaScript 引擎JDK 8提供了一个全新的Nashorn JavaScript引擎,使我们可以在JVM上运行JS应用。
7. 新的日期和时间 API在java.time包下提供了较之前更强的日期和时间API。包含LocalDate、LocalTime、LocalDateTime、Clock、Duration、Period等。
8. 并行数组(Parallel array)通过并行流和Spliterator,可以并行执行数组的计算和聚合操作。
9. 并发增强了锁支持和原子性操作。新增 ConcurrentHashMap、StampedLock、LongAdder 等。
10. IO 与NIO增强了IO与NIO,比如ReadableByteChannel的readNBytes方法和Files工具类等。
除此之外,JDK 1.8 还有模块化系统、编译器优化、Garbage-First Collector 等改进与优化。