Java 8与Java 9 新特性

由于要实习和找工作了,所以开始好好准备,一步一步的走,先从第一步,可能会问的问题:Java 8和Java 9
这里主要列出一部分,具体可以参考文章末尾的连接。
Java 8 新特性:
1、引入Lambda表达式
它允许把函数作为参数传进方法中,以前使用匿名内部类来实现该功能。
在最简单的形式中,一个lambda可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。
如果函数体比较多 可以放在花括号中。
Arrays.asList( “a”, “b”, “d” ).forEach( e -> { System.out.print( e );System.out.print( e );} );
2、接口引入默认方法与静态方法
Java8以前接口中是不能有方法体的,只能是声明方法,但在Java8版本中,可以使用默认方法和静态方法,默认方法且并一定要实现。
3、JVM的新特性
Metaspace(元空间) 取代PermGen空间(永久保存区),这样JVM可使用的内存空间默认就是没有限制,可以使用本地内存,当然也可以限制通过设置-XX:MaxMetaspaceSize。
4、Nashorn JavaScript引擎
新的Nashorn JavaScript引擎引擎可以在JVM上开发和运行js应用。
5、并行数组
Java8中增加了很多新的方法来支持数组的并行处理,最重要的方法之一parallelsort(),用于支持多核机器的并行数组排序。
与串行排序相比,开始在数据量少的时候,可能不如串行排序耗时少,但当数据量达到某一个界限后,并行排序时间明显比串行排序耗时少。
6、stream
java.util.stream将生成环境的函数式编程引入Java中,对集合带来极大地增强,而且支持并行操作。
分为两种:
Intermediate:一个流可以后面跟随零个或多个 intermediate 操作。其目的主要是打开流,做出某种程度的数据映射/过滤,然后返回一个新的流,交给下一个操作使用。这类操作都是惰性化的(lazy),就是说,仅仅调用到这类方法,并没有真正开始流的遍历。
Terminal:一个流只能有一个 terminal 操作,当这个操作执行后,流就被使用“光”了,无法再被操作。所以这必定是流的最后一个操作。Terminal 操作的执行,才会真正开始流的遍历,并且会生成一个结果,或者一个 side effect。
可以通过集合和数组等获得stream
Collection.stream()
Collection.parallelStream()
Arrays.stream(T array) or Stream.of()
引用和参考文章(本文只用于自己学习笔记,所以想看最全新特性可以看这些链接):
http://www.importnew.com/19345.html
http://blog.csdn.net/u014470581/article/details/54944384
http://blog.csdn.net/u014115273/article/details/53318733
https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/


Java 9新特性:
1、Java平台级模块系统
从整体到模块
Java 一直坚持向后兼容,每更新一个版本,都变得更大更复杂。在过去的 JDK 版本中,没有强制要求模块化,使得 Java 平台和 JDK 越来越让人纠结。即便只是一个小小的 hello world,也需要加载几乎所有的 API。Jigsaw 项目致力于把 Java 平台和 JDK 分解成更小更有组织的模块。用户可以使用模块来构建软件,并且不需要包含所有的 API。
模块化的 JAR 文件都包含一个额外的模块描述器。在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。
(Linking)
你的应用程序模块现在将声明其对其他应用程序模块的依赖以及对其所使用的 JDK 模块的依赖。为什么不使用这些信息创建一个最小的运行时环境,其中只包含运行应用程序所需的那些模块呢? 这可以通过 Java 9 中的新的 jlink 工具实现。你可以创建针对应用程序进行优化的最小运行时映像而不需要使用完全加载 JDK 安装版本。
2、交互式编程语言: JShell(Java REPL)
Java现在加入交互式编程语言俱乐部,程序员可以从控制台启动jshell,并直接启动输入和执行java代码。
3、接口私有方法
在Java8中,接口引入默认的方法,但如果在接口上有几个默认方法,代码几乎相同,会发生什么情况? 通常,您将重构这些方法,调用一个可复用的私有方法。 但默认方法不能是私有的。但现在在Java9中你可以使用私有的辅助方法。
4、多版本兼容 JAR
新版本库的出现要兼容以前的版本,所以在Java9中多版本兼容的jar能让你创建仅在特定版本的Java运行环境中运行库程序时选择所使用的class版本。
文章只是为了学习,如果查看全的新特性请看查看下面的连接:
http://www.importnew.com/24528.html
https://baijiahao.baidu.com/s?id=1577884434195971672&wfr=spider&for=pc

猜你喜欢

转载自blog.csdn.net/qq_26564827/article/details/79608074