Java8特性知识体系详解

Java 8 新特性详解汇总。@javaxue

  • Java 新特性的增加都是来源于 JSR或者JEP
  • JSR论坛: https://jcp.org/en/jsr/detail?id=335

知识体系

相关文章

函数编程

面向对象编程是对数据进行抽象;函数式编程是对行为进行抽象。

  • Lambda 表达式的特点
  • Lambda 表达式使用和Stream下的接口
  • 函数接口定义和使用,四大内置函数接口Consumer,Function,Supplier, Predicate.
  • Comparator排序为例贯穿所有知识点。

详细分析请参看: Java 8 - 函数编程

Optional类

这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。

  • Optional类的意义
  • Optional类有哪些常用的方法
  • Optional举例贯穿所有知识点
  • 多重类嵌套Null值判断

详细分析请参看: Java 8 - Optional类

default方法

默认方法给予我们修改接口而不破坏原来的实现类的结构提供了便利,目前java 8的集合框架已经大量使用了默认方法来改进了,当我们最终开始使用Java 8的lambdas表达式时,提供给我们一个平滑的过渡体验。

  • 为什么会出现默认方法?
  • 接口中出现默认方法,且类可以实现多接口的,那和抽象类有啥区别?
  • 多重实现的默认方法冲突怎么办?

详细分析请参看: Java 8 - default方法

类型注解

那充满争议的类型注解究竟是什么? 复杂还是便捷?

  • 注解在JDK哪个版本中出现的,可以在哪些地方用注解?
  • 什么是类型注解?
  • 类型注解的作用是什么?
  • 为什么会出现类型注解(JSR308)?

详细分析请参看: Java 8 - 类型注解

重复注解

  • Java8之前对重复注解是怎么做的?
  • Java8对重复注解添加了什么支持?

详细分析请参看: Java 8 - 重复注解

类型推断

导致类型间互相转换的问题困扰着每个java程序员,通过编译器自动推断类型的东西可以稍微缓解一下类型转换太复杂的问题。

  • 什么是泛型?
  • Java7对泛型推断做了哪些优化?
  • Java8对此有做了哪些优化?

详细分析请参看: Java 8 - 类型推断优化

JRE 精简

模块化特性是javaer所期待的特性, 一个占用资源少的JRE运行环境,紧凑的JRE特性的出现,能带来以后的物联网的发展,甚至还是会有大量的java应用程序出现在物联网上面。

  • 为什么精简Java8 JRE,及好处是啥?
  • 紧凑的JRE分3种,分别是compact1、compact2、compact3,他们的关系是?
  • 在不同平台上如何编译等?

详细分析请参看: Java 8 - JRE精简

LocalDate/LocalDateTime

Date/Calendar槽点, java8对其进行了重写。

  • Java8之前的Date有哪些槽点? (Calendar的所有属性都是可变的,SimpleDateFormat的线程不安全性等)
  • Java8之前使用哪些常用的第三方时间库?
  • Java8关于时间和日期有哪些类和方法,变比Java8之前它的特点是什么?
  • 其它语言时间库?

详细分析请参看: Java 8 - LocalDate/LocalDateTime

JavaFX

JavaFX主要致力于富客户端开发,以弥补swing的缺陷,主要提供图形库与media库,支持audio,video,graphics,animation,3D等,同时采用现代化的css方式支持界面设计。同时又采用XUI方式以XML方式设计UI界面,达到显示与逻辑的分离。

  • javaFX发展历程?
  • Java8对其增加了哪些特性?

详细分析请参看: Java 8 - JavaFX

PermGen移除

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。PermGen space是Oracle-Sun Hotspot才有,JRockit以及J9是没有这个区域。

  • Java8之前 “java.lang.OutOfMemoryError: PermGen space”是怎么引起的,怎么解决的?
  • 新增加的元空间(Metaspace)包含哪些东西,画出图
  • 元空间(Metaspace)和PermGen对比

详细分析请参看: Java 8 - 移除Permgen

StampedLock

  • 为什么会引入StampedLock
  • 用Lock写悲观锁和乐观锁举例
  • 用StampedLock写悲观锁和乐观锁举例
  • 性能对比

详细分析请参看: Java 8 - StampedLock

其它更新

  • Java8 还有哪些其它更新
    • 字符串
    • Base64
    • Random
    • Nashorn
    • ...

详细分析请参看: Java 8 - 其它更新

参考文档

主要参考自以下文档:

  • Java 8 教程汇总 https://wizardforcel.gitbooks.io/java8-tutorials/content/index.html

  • Java8简明教程gitbook https://wizardforcel.gitbooks.io/modern-java

  • Java8简明教程 https://github.com/wizardforcel/modern-java-zh

  • Java8新特性探究 https://wizardforcel.gitbooks.io/java8-new-features/content/