先看一下Java发展史。
Java诞生在1995年,对应的JDK工具是jdk1.0,jdk1.1。到了1999年推出了Java 2 EE (Java 2 Platform, Enterprise Edition),是一整套JAVA企业应用开发规范,对应的jdk是1.2,也叫J2EE 1.2, 此后陆续推出J2EE 1.3,J2EE 1.4, 到了J2EE 1.5 改名为Java EE 5, 2017年推出Java EE 8,也是最新的Java EE版本。与Java EE对应的有Java SE(Java Standard Edition),
目最新的是Java SE 10。
Java EE有哪些规范呢?
Java是运行在Java虚拟机(JVM)上的, 除了JAVA 还有哪些语言运行在JVM上呢?
主要的有:kotlin、Scala、Clojure、Groovy、Jython、JRuby、Ceylon、Eta、Haxe。
Java EE 8 有哪些新特性?
1. 流处理(Stream Processing)
流操作就是一个操作序列,前一项的输出是后一项的输入,看上去像一条操作流水线。这些操作本质上并行操作的。举个例子,Unix的cat、tr、sort、tail命令:
cat file1 file2 | tr "[A-Z]" "[a-z]" | sort | tail -3
Java 8在java.util.Stream包中增加了Stream API,使用这种流处理模式,Java 8 可以透明地把不相关的操作放到多个CPU的多个内核上并行执行。
2、把一段代码作为参数传递给另外一个方法
也就是把一个方法作为参数传递给另外一个方法,这就是函数式编程范式,相对应的有命令式编程(面向对象编程属于命令式编程)。
函数式编程范式需要注意两点:一是不能访问共享的可变数据、二是能够把安函数或方法也就代码作为参数传给另外一个方法。
函数式编程与面向对象编程各有优缺点,我们的理念式吸收两者优秀的部分,Java不断在演变,为了保护我们作为Java程序员的职业生涯,需要我们去学习Java 8。
在Java中有基本类型的值,比如整数值123、双精度数123.66、字符串值’123’,也有引用类型的值,比如象的引用值、数组的引用值。在Java8中引入了函数式编程,可以把函数也当作值,函数和方法式同一个概念,也就是把方法当作一个值。
举例,筛选一个目录中所有隐藏的文件:
这里把File类中的isHidden方法作为参数传给了File类的另外一个方法listFiles。注意java 8提供了方法引用语法 :: 两个冒号。
Java 8除了允许把函数(方法)作为值,还支持匿名函数作为值,包括Lambda (匿名函数),举例如下:(Integer x)-> x +1 ,把x作为输入参数,x+1作为输出结果。
3、 Stream API(流)
流允许以声明性方式处理数据集合,集合类式Java中重要的数据对象,Java 8 可以用流的方式操作集合数据。举例:
注意parallelStream()式并行流计算,可以充分利用多CPU和多核计算。
4 默认方法
上面的例子List抽象类继承自Collection接口,ArrayList是List抽象类的具体实现子类,在Java 8之前,无论ArrayList、List还是Collection里都没有提供stream和parallelStream() 方法。
难道Java 8 为Collection接口增加了新的方法了吗?
其实是Java8在接口中增加了一个默认的方法并实现了它,不需要这个接口的实现类去实现。打开Collection.java源码,可以看到:
这就给接口设计者提供一种扩充接口的方式,而有不会破坏现有的代码。Java8在接口声明中使用新的default关键字来表示这一点。
————————————————
版权声明:本文为CSDN博主「liuhaiguang2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuhaiguang2012/article/details/82688959