没有合适的资源?快使用搜索试试~ 我知道了~
JDK8新特性(pdf版)
资源详情
资源评论
资源推荐
JDK8新特性
讲师:波波
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应
用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选
开发平台
课程内容的介绍
1. 了解Java发展史
2. Lambda表达式
3. 接口的增强
4. 函数式接口
5. 方法引用
6. Stream API
7. Optional
8. 新时间日期API
9. 其他新特性
一、Java发展历史
1. Java的发展历史
Sun公司在1991年成立了一个称为绿色计划( Green Project )的项目,由James Gosling(高斯林)博
土领导,绿色计划
的目的是开发一种能够在各种消费性电子产品(机顶盒、冰箱、收音机等)上运行的程序架构。这个项目的
产品就是
Java语言的前身: Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,
Oak迅速找到
了最适合自己发展的市场定位。
JDK Beta - 1995
JDK 1.0 - 1996年1月 (真正第一个稳定的版本JDK 1.0.2,被称作 Java 1 )
JDK 1.1 - 1997年2月
J2SE 1.2 - 1998年12月
J2ME(Java 2 Micro Edition,Java 2平台的微型版),应用于移动、无线及有限资源的环境。
J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境。
J2EE(Java 2 Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。
J2SE 1.3 - 2000年5月
J2SE 1.4 - 2002年2月
J2SE 5.0 - 2004年9月
Java SE 6 - 2006年12月
Java SE 7 - 2011年7月
Java SE 8(LTS) - 2014年3月
Java SE 9 - 2017年9月
Java SE 10(18.3) - 2018年3月
Java SE 11(18.9 LTS) - 2018年9月
Java SE 12(19.3) - 2019年3月
Java SE 13(19.9) - 2019年9月
Java SE 14(20.3) - 2020年3月
Java SE 15(20.9) - 2020年9月
我们可以看到Java SE的主要版本大约每两年发布一次,直到Java SE 6到Java SE 7开始花了五年时间,
之后又花了三
年时间到达Java SE 8。
2.OpenJDK和OracleJDK
2.1 Open JDK来源
Java 由 Sun 公司发明,Open JDK是Sun在2006年末把Java开源而形成的项目。也就是说Open JDK
是Java SE平台版
的开源和免费实现,它由 SUN 和 Java 社区提供支持,2009年 Oracle 收购了 Sun 公司,自此 Java 的维
护方之一的
SUN 也变成了 Oracle。
2.2 Open JDK 和 Oracle JDK的关系
大多数 JDK 都是在 Open JDK 的基础上进一步编写实现的,比如 IBM J9, Oracle JDK 和 Azul Zulu,
Azul Zing。
Oracle JDK完全由 Oracle 公司开发,Oracle JDK是基于Open JDK源代码的商业版本。此外,它包含闭
源组件。
Oracle JDK根据二进制代码许可协议获得许可,在没有商业许可的情况下,在2019年1月之后发布的
Oracle Java SE 8
的公开更新将无法用于商业或生产用途。但是 Open JDK是完全开源的,可以自由使用。
2.3 Open JDK 官网介绍
Open JDK 官网: http://openjdk.java.net/ 。
JDK Enhancement Proposals(JDK增强建议)。通俗的讲JEP就是JDK的新特性
小结
Oracle JDK是基于Open JDK源代码的商业版本。我们要学习Java新技术可以去Open JDK 官网学习。
二、Lambda表达式
1. 需求分析
创建一个新的线程,指定线程要执行的任务
代码分析:
1. Thread类需要一个Runnable接口作为参数,其中的抽象方法run方法是用来指定线程任务内容的
核心
2. 为了指定run方法体,不得不需要Runnable的实现类
3. 为了省去定义一个Runnable 的实现类,不得不使用匿名内部类
public static void main(String[] args) {
// 开启一个新的线程
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("新线程中执行的代码 :
"+Thread.currentThread().getName());
}
}).start();
System.out.println("主线程中的代码:" + Thread.currentThread().getName());
}
4. 必须覆盖重写抽象的run方法,所有的方法名称,方法参数,方法返回值不得不都重写一遍,而且
不能出错,
5. 而实际上,我们只在乎方法体中的代码
2.Lambda表达式初体验
Lambda表达式是一个匿名函数,可以理解为一段可以传递的代码
Lambda表达式的优点:简化了匿名内部类的使用,语法更加简单。
匿名内部类语法冗余,体验了Lambda表达式后,发现Lambda表达式是简化匿名内部类的一种方式。
3. Lambda的语法规则
Lambda省去了面向对象的条条框框,Lambda的标准格式由3个部分组成:
格式说明:
(参数类型 参数名称):参数列表
{代码体;} :方法体
-> : 箭头,分割参数列表和方法体
3.1 Lambda练习1
练习无参无返回值的Lambda
定义一个接口
然后创建主方法使用
new Thread(() -> { System.out.println("新线程Lambda表达式..."
+Thread.currentThread().getName()); })
.start();
(参数类型 参数名称) -> {
代码体;
}
public interface UserService {
void show();
}
public class Demo03Lambda {
public static void main(String[] args) {
goShow(new UserService() {
@Override
public void show() {
System.out.println("show 方法执行了...");
}
输出:
3.2 Lambda练习2
完成一个有参且有返回值得Lambda表达式案例
创建一个Person对象
然后我们在List集合中保存多个Person对象,然后对这些对象做根据age排序操作
});
System.out.println("----------");
goShow(() -> { System.out.println("Lambda show 方法执行了..."); });
}
public static void goShow(UserService userService){
userService.show();
}
}
show 方法执行了...
----------
Lambda show 方法执行了...
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private Integer age;
private Integer height;
}
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
list.add(new Person("周杰伦",33,175));
list.add(new Person("刘德华",43,185));
list.add(new Person("周星驰",38,177));
list.add(new Person("郭富城",23,170));
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge()-o2.getAge();
}
});
for (Person person : list) {
System.out.println(person);
剩余63页未读,继续阅读
喝酸奶只舔盖~
- 粉丝: 0
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0