一、为什么要关心Java8

1.Java8让编程起来更容易

  • 提供了更多的编程工具和概念,能以更快,更简洁,更易于维护的方式解决问题,比如:
Collections.sort(inventory, new Comparator<Apple>(){
  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<T>),支持许多处理数据的并行操作。
  • 流思想,例如:
    Linux中的管道:cat file1 file2 | tr "[A-Z]" "[a-z]" | sort | tail -3


    操作流的Linux命令.png

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

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

4.其他好思想

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

5.JVM优化

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

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

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容