JDK7和JDK8的区别 浅谈JDK7和JDK8的区别在哪

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

JDK7和JDK8的区别 浅谈JDK7和JDK8的区别在哪

我是方小磊   2021-06-03 我要评论
想了解浅谈JDK7和JDK8的区别在哪的相关内容吗,我是方小磊在本文为您仔细讲解JDK7和JDK8的区别的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:JDK7和JDK8的区别,java新特性,下面大家一起来学习吧。

一、接口中的default方法

一般来说接口中的方法都是不实现的,基本通过实现类来实现方法。但是jdk8中提供了一种被default修饰的方法,可以直接在接口中进行实现。

二、lambda表达式

jdk8引入了lambda表达式,也可称为closure(闭包),通常是在需要一个函数,但又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

由于其几乎被所有主流开发语言支持。是java8新引入的一种语法,是一种紧凑的传递代码的方式。使用lambda表达式可以使代码变的更加简洁紧凑。

三、函数式接口

函数式接口的引入是为了函数式编程的,函数式编程往往依赖于lambda表达式。

定义函数式接口有两个步骤:

1)确保接口中有且仅有一个抽象方法:
2)使用注解@FunctionalInterface修饰接口

四、StreamAPI

JDK8中引入了StreamAPI,对于学过Flink或Spark的学者应该对此比较熟悉,其实就是类似于一种流式的数据处理,从dataSource到中间的operator操作,再到最后的dataSink。

Stream的中间操作有map,filter等操作。而流式的数据处理往往就是通过函数式编程实现的。

在这里插入图片描述

五、移出永久代,元空间替换

JDK7使用永久代存储类的元数据,JDK8使用元空间存储类的元数据。元空间和永久代都是用来存储class相关信息,包括class对象的Method,Field等,元空间和永久代其实都是方法区的实现,只是实现有所不同,所以说方法区其实只是一种JVM的规范。

区别:

两者最大的区别是元空间使用本地内存,而永久代使用的是JVM的内存。

元空间优势:

优势就是元数据分配只受本地内存大小的限制。本地内存剩余多少理论上metaspace就可以有多大,这解决了空间不足的问题,不过也不可能任其无限壮大,JVM默认在运行时会根据需要动态的设置其大小

六、HashMap中的优化

1)增加红黑树

2)解决jdk1.7多线程下的死循环:

扩容使用尾插法,抛弃头插法

3)rehash的优化:

jdk7扩容的rehash是重新计算桶的位置,而jdk8则进行了优化,不需要进行重新计算。

七、currentHashMap的优化

jdk7是使用分段锁实现线程安全,jdk则使用sy关键字和大量的CAS操作实现。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们