Java8是Oracle收购Sun之后发布的第一个重大更新版本,必然是有很多重大的更新。
Oracle想收购Sun公司绸缪已久,可以说是处心积虑,从Eclipse(翻译为:日食,吃掉太阳Sun)编辑器就可以看的出来。
多说一点,从Java8到现在(2019年)的Java13,可以看出Oracle想要Java占据未来物联网时代,种种更新和变化早已布局物联网生态,Java虽年长(20多岁了),但仍身强力壮。
Java8最大的变化是引入了函数式编程思想,Java不再是单一的面向对象编程,开始兼容面向函数编程,具体的实现是使用interface,也可以叫做面向接口编程。
Java8的优点
- 速度更快
- 优化了内存结构,优化了集合框架
- 代码更少
- 引入Lambda,函数式编程思想
- 便于并行
- 提供强大的Stream API,优化多线程并行执行效率
- 最大化减少空指针异常
- 提供了Optional
Java8的不足
Java要保证向下兼容,20多年的生态积累导致有些雍容,略显尾大不掉的感觉,函数式编程没有发挥其最大的灵活性和优势,Oracle肯定会再后续版本Java9,Java10等等慢慢更新修复的。
Java8以后开始收费,免费版请使用OpenJDK,不用担心,Oracle JDK和Open JDK几乎无差别,一个开源使用,一个商业收费提供企业支持服务。另外Java8之后改为每6个月颁布一个小版本,每3年更新一个长支持的大版本。Java开始稳定更新,迭代。
Oracle公司的核心思想: 小步快跑,快速迭代。
该思想是Oracle整个公司的指导思想,当年Oracle数据库就是靠这个打败商业巨头IBM的Db2数据库的,故Java开始快速迭代是意料之中,不足为奇,快速迭代也更适应当代互联网的发展趋势,是好事!
Java8新特性
完整的新特性请参考官方文档,本教程只讲解最重要的新特性。
- Lambda表达式,函数式3编程思想的体现,主要用来简化匿名内部类的写法。
- 方法引用,一种lambda表达式的简化写法
- Stream API,流式api,提供一种方便的对数据集合的操作方式
- 重复注解,同一注解可以多次注解到一个类上
- interface支持默认方法,用来给已有的lib添加新功能,为了实现jdk的向下兼容
- 改进了类型推断,泛型推断更智能
- 改进了方法参数反射
- 集合框架优化,主要是优化了HasMap存储结构,增加了Stream API支持,方便操作集合数据。
- 安全方面进行了很多优化,具体参考这里
- 优化了Javafx,一种桌面编程的工具,如果你使用请专门查看
- 提供了一些列工具,比如jjs,java,jdeps,javac等等
- io和nio优化
- jdbc优化,去掉了jdbc-odbc
- 并发编程优化