一、为什么要关心Java8

1.Java8让编程起来更容易

  • 提供了更多的编程工具和概念,能以更快,更简洁,更易于维护的方式解决问题,比如:
Collections.sort(inventory, new Comparator(){
  public int compare(Apple a1, Apple a2){
      return a1.getWeight().compareTo(a2.getWeight());
  }
})
  • Java8可以写更简洁
inventory.sort(comparing(Apple::getWeight));

2.适应多核计算机结构

  • 越来越多需要处理大数据,需要利用多核计算机或计算集群来有效处理,而通过多线程代码来利用并行(Thread API)并非易事。
  • Java8提供了新的API(称为 “流” ,Stream),支持许多处理数据的并行操作。
  • 流思想,例如:
    Linux中的管道:cat file1 file2 | tr "[A-Z]" "[a-z]" | sort | tail -3


    一、为什么要关心Java8_第1张图片
    操作流的Linux命令.png

3.编程语言不断在更新换代

  • 编程语言数以千计,像生态系统一样,新的语言会出现,旧语言则被取代,除非能不断演变改进,跟上节奏。COBOL,DELPHI等一些语言被淘汰。
  • java8提供了强大的新语汇和新设计模式,引入函数式编程,让我们可以向函数式编程领域转变,在大面上考虑做什么,而不是如何实现。

4.其他好思想

  • 使用描述性数据类型来避免null
    Optional:可以包含,也可以不包含一个值,有方法明确处理值不存在的情况。
  • 模式匹配
    可以看作switch的扩展形式

5.JVM优化

  • JDK8中把存放元数据中的永久区删除,新增元数据区,直接从内存从本地内存分配空间,这样永久内存就不再占用堆内存,它可以通过自动增长来避免JDK7以及前期版本中常见的永久内存错误(java.lang.OutOfMemoryError: PermGen)。
    JDK8也提供了一个新的设置Matespace内存大小的参数
-XX:MaxMetaspaceSize=128m

如果不设置JVM将会根据一定的策略自动增加本地元内存空间。如果你设置的元内存空间过小,你的应用程序可能得到以下错误:

java.lang.OutOfMemoryError: Metadata space
  • 新的垃圾收集器:G1
    1.将垃圾回收化整为零,减少对用户服务的影响
    2.垃圾回收时间可配置
    3.避免内存碎片

  • 移除一些很少使用的垃圾回收器组合

  • 提供更多的验证错误信息

  • 减少指定字段上的缓存争用

你可能感兴趣的:(一、为什么要关心Java8)