J2EE 8 新特性

本文介绍了Java EE 8的四个主要新特性:流处理、函数式编程、Stream API和默认方法。Java 8引入了Stream API,使得并行处理集合数据变得更加便捷。同时,接口开始支持默认方法,允许在不破坏现有实现的情况下扩展接口功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看一下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有哪些规范呢?

Specification

Java EE 6

Java EE 7

Java EE 8

Servlet

3.0

3.1

4.0

JavaServer Pages (JSP)

2.2

2.3

2.3

Unified Expression Language (EL)

2.2

3.0

3.0

Debugging Support for Other Languages (JSR-45)

1.0

1.0

1.0

JavaServer Pages Standard Tag Library (JSTL)

1.2

1.2

1.2

JavaServer Faces (JSF)

2.0

2.2

2.3

Java API for RESTful Web Services (JAX-RS)

1.1

2.0

2.1

Java API for WebSocket (WebSocket)

n/a

1.0

1.1

Java API for JSON Processing (JSON-P)

n/a

1.0

1.1

Common Annotations for the Java Platform (JSR-250)

1.1

1.2

1.3

Enterprise JavaBeans (EJB)

3.1 Lite

3.2 Lite

3.2

Java Transaction API (JTA)

1.1

1.2

1.2

Java Persistence API (JPA)

2.0

2.1

2.2

Bean Validation

1.0

1.1

2.0

Managed Beans

1.0

1.0

1.0

Interceptors

1.1

1.2

1.2

Contexts and Dependency Injection for the Java EE Platform

1.0

1.1

2.0

Dependency Injection for Java

1.0

1.0

1.0

 

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和多核计算。

 

默认方法

上面的例子List抽象类继承自Collection接口,ArrayList是List抽象类的具体实现子类,在Java 8之前,无论ArrayList、List还是Collection里都没有提供stream和parallelStream() 方法。

难道Java 8 为Collection接口增加了新的方法了吗?

其实是Java8在接口中增加了一个默认的方法并实现了它,不需要这个接口的实现类去实现。打开Collection.java源码,可以看到:

这就给接口设计者提供一种扩充接口的方式,而有不会破坏现有的代码。Java8在接口声明中使用新的default关键字来表示这一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值