JDK各个版本新特性介绍及使用

本文将介绍JDK1.0版本到JDK1.9版本的特性及JDK2.0主要部分特性。本文学术仅供参考
JDK1.0新特性 开发代号为Oak(橡树), 于1996-01-23发行.

1995年初发布了Java语言,1996年初发布JDK1.0版本。

此版本包括两个部分:运行环境(即Java Runtime Environment,JRE)和开发环境(Java Development Kit,IDK)。运行环境包括核心API,集成API、用户界面API、发布技术、Java虚拟机(Java Virtual Machine,JVM)五个部分;其中开发环境包括编译Java程序的编译器(javac 命令)。
JDK1.1新特性 开发代号为Coffce(咖啡),于1997-02-19发行.

1997年2月18发布了jdk1.1版本;增加了JIT(Just In Time,即时编译)编译器。相对于传统编译器,它会将经常用到的指令保存到内存中。当下次调用的时候不需要重新编译了,此方式让JDK在效率上有了较大优势。

此外还引入新特性

1: JDBC (Java Database Connectivity)

2: 内部类(inner Class)

3: Java Bean

4: RMI (Remote Method Invocation)

5: 内省反射 (introspect reflex)
JDK1.2新特性 开发代号为Playground(操场),于1998-12-08发行.

1998年12月发布,此版本是Java历史上最重要的JDK版本,伴随JDK1.2一同发布的还有JSP/SERVLET、EJB等规范,并将Java分成了J2EE、J2SE和J2ME三个版本。

J2ME:主要用于控制移动设备和信息家电等有限存储的设备。

J2SE:整个Java技术的核心和基础,它是J2ME和J2EE编程的基础。
J2EE:Java技术中最广泛的部分,它提供了企业应用开发相关的完整解决方案。

这标志着Java已经向企业、桌面、移动进军, 标志Java已经进入Java2时代。

此外还引入新特性

1:集合框架

2:字符串常量做内存映射;

3:JIT编译器 (Just In Time)

4:对打包Java文件数字签名

5:控制授权访问系统资源的策略工具

6:JFC(Java Foundation Classes) Swing 1.0, 拖放和Java2D类库

7:Java插件

8:JDBC可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型

9:Applet中添加声音支持
JDK1.3新特性 开发代号为Kestrel(红隼),于2000-05-08发行.

引入的新特性包括:

1:Java Sound API;

2:jar文件索引;

3:对Java的各个方面都做了大量优化和增强
JDK1.4新特性 开发代号Merlin(隼),于2004-02-06(首次在JCP下发行).

2002年2月发布此版本,是JDK历史上最为成熟的版本。此时Compaq,Fujitsu、SAS、Symbian、IBM等公司的参与,使JDK1.4成为发展最快的一个JDK版本。JDK1.4已经可以使用Java实现       大多数的应用。

在此期间Java语言在企业应用领域大放异彩。涌现大量基于Java语言的开源框架:Struts、WebWork、Hibernate、Spring等;大量企业应用服务器也开始涌现:WebLogic、WebSphere、         JBoss等。

引入的新特性包括:

1:XML处理

2:Java打印服务

3:日志API(Logging)

4:Java Web Start

5:JDBC 3.0 API

6:断言机制

7:参数API (Preferences)

8:链式异常处理

9:支持IPV6

10:正则表达(Regular)

11:image I/O API
JDK1.5新特性 开发代号为Tiger(猛虎),于2004-09-30发行.

2004年10月发布了万众期待的JDK1.5,同时,Sun将JDK1.5改为Java5.0,J2EE、J2SE和J2ME也相应的改为Java SE、Java ME、Java EE。增加了泛型、增强for循环、可变数量的形参、注释         (Annotations)、自动拆箱和装箱等功能;发布新的企业级平台规范,如通过注释等新特性来简化EJB的复杂性,并推出EJB3.0规范,还推出了自己的MVC框架规范:JSF。

引入的新特性包括:
1:泛型(Generic)

泛型格式:

1.通配符问号(?)表示任意类型。如"List<?>"表示存放任意对象类型的List,与List等同。

2.通配符可以连接限制符:extends 和 super如:上边界List<? extends Parent> 申明的List只存放Parent及其子类,而下边界 List<? super Child> 申明的List只能存放Child及其父类。

3.通用类型,通常使用任意一个大写字母表示如:T(这里可以使用任意符合命名规则的字符都可以,它能代表任何类型。如果使用通用类型申明一个变量,那么必须在类申明后面加上,尖括号的符号必须是前面的通用类型变量,有多个可以使用逗号分割如:<T,D>;使用通用类型申明一个方法返回值或者方法参数,如上在类申明后加使用<>申明通用类型,方法前申明通用类型。

泛型功能强大使用广泛,多态进行数据传输时,JDK5之前使用Object传输进行向下转型,在此可能在运行期强转失败抛ClassCastException异常,导致程序异常终止。引入泛型可以将运行期异常转编译异常,在编写代码时就可以检测出问题,使得类型转换更安全。

2:For-Each循环

增强for循环,新增一种循环语法,格式:for(Class n: Class){}

List list = new ArrayList();

list.add(“11111”);list.add(“22222”);list.add(“33333”);

//普通for循环定义下标index并初始化,判断是否小于集合长度并自增、循环体还需要赋值

for (int index = 0; index < list.size(); index++ ) {

String s = list.get(index); System.out.println("s: " + s);

}

//ForEach 增强for循环只需要如下即可完成上面的操作。

for (String s : list){

System.out.println("s:" + s);

} 基本可以替换掉所有用普通for循环的代码

3:自动装箱与拆箱

在JKD5以前我们的处理方式:

//int 转换为 Integer int i = 10;

Integer integer = new Integer(i);

//Integer 转换为 int Integer integer1 = new Integer(100);

int i1 = integer1.intValue();

自动拆装箱处理方式:

Integer integer = 10;//int 转换为 Integer

int i = integer;//Integer 转换为 int

将class反编译可以看出自动拆装箱的代码如下:

Integer integer = Integer.valueOf(10);int i = integer.intValue();

4:类安全枚举 (Enum)

关键字enum表示枚举类型,作用相当类声明中的class关键字

1.构造器只能是private修饰、没有构造器编译器同样会自动生成一个private修饰无参默认构造器。

2.所有的枚举值默认都是public static final 修饰的。

3.枚举值与值之间用逗号分割,最后一个用分号,枚举值后面没有任何东西该分号可以省略。

4.每一个枚举值就是一个枚举类型的实例。

5.枚举类型中可以定义带任意修饰符的非枚举值变量。

6.枚举值必须位于枚举类型的第一位置,即非枚举值必须位于枚举值之后。

7.枚举类型自带两个方法,values() 和 value(String name) 两个方法。

//定义枚举类型

public enum SexEnum {

RED,GREEN,YELLOW,PINK

}

5:可变参数(Varargs)

当传入到方法的参数不固定时,可以使用可变参数 格式method(Class … prams){}

public class VarArgs {

// 与以往main方式不一样

public static void main(String… args) {

varArgs(1);varArgs(2,3);//…

varArgs(7,8,9,10,11);

        }//可变参数的格式: 数据类型... 参数名

public static void varArgs(int… ints) {

for (int i : ints){

         System.out.println(i);      }

} }

6:静态导入( import static)

可以将静态方法和静态变量通过 import static 和导包的方式直接导入,使用时无需类名直接访问。
import static java.lang.System.out;

import static java.lang.Math.*;

public class ImportStaticTest {

public static void main(String[] args) {

/* 使用静态导入 import static java.lang.System.out; out.println 可以直接使用调用 而不再需要类System对象去调用 同时也支持*通配符 */

out.println("max(3,5): " + max(3,5));

out.println("random(): " + random());

}}
7:元数据注解(Annotation)

元数据也叫注解,名字容易理解,格式:@注解名

JDK内置三种标准注解:

@Override:只能使用在方法上、表示当前的方法定义将覆盖超类中的方法。

@Deprecated: 注解可使用在构造器、字段、局部变量、方法、包、类接口以及枚举上、表示被弃用,不鼓励使用,编译器会发出警告信息。通常是因为它是危险的,或则因为有更好的选择。

@SuppressWarnings:注解可以使用在构造器、字段、局部变量、方法、类接口以及枚举上,必须指定value值,关闭不当的编译器警告信息。告诉编译器不提示某某警告信息。

java内置了4种元注解、可理解成java中用来注解Annotation的Annotation

@Retention:保留策略,表示注解有多长保留,先了解JAVA文件的三个时期:SOURCE 源文件期(.java文件) -> CLASS 编译器编译期(.class文件) -> RUNTIME jvm运行时期。

@Target: 表示注解使用的上下文,TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR、LOCAL_VARIABLE、ANNOTATION_TYPE和PACKAGE。详细说明返回看注解的作用范围。

@Documented:表示将被javadoc文档记录。

@Inherited:表明注释类型是自动继承的。如果一个继承的元注释出现在注释类型上声明,用户在一个类上查询注释类型声明,类声明没有这种类型的注释,然后该类的超类将自动被查询注释类型。这个过程将会重复直到这个注释类型被找到,或者类层次结构的顶部(对象)是达到了。如果没有超类有这种类型的注释,那么查询将表明的类没有这样的注释。

注意的几个问题:

  1. 当注解的元素没有默认值的时候,在使用的时候必须为其指定初始值

  2. 如果注解元素有了初始值,那么在使用的时候可以为其赋新的值,否则将使用默认值

  3. 一个较为特殊的情况:注解元素当且仅当其只有一个元素且名称为value时,在使用该注解的时候为其赋值时可以不用写属性(元素)名称

注解的作用范围可通过java.lang.annotation.ElementType查看

8:内省(Introspect)

Java中JavaBean类属性、事件的一种缺省处理方法。JavaBean是特殊的类、主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object),或“VO”,信息储存在类的私有变量中通过set()、get()获得

public class Person{

private int id;

private String name;

public int getId() {return age;}public void setId(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;

}

}

JDK1.6新特性 开发代号为Mustang(野马),于2006-12-11发行.

2006年12月发布。引入了一个支持脚本引擎的新框架、UI的增强、对WebService支持的增强(JAX-WS2.0和JAXB2.0)、一系列新的安全相关的增强、JDBC4.0、Compiler API、通用的            Annotations支持。

1:Web服务元数据
2:脚本语言支持
3:JTable的排序和过滤
4:更简单,更强大的JAX-WS
5:轻量级Http Server
6:嵌入式数据库 Derby

JDK1.7新特性 开发代号是Dolphin(海豚),于2011-07-28发行.

版本JDK7:2011年7月28日Oracle公司发布,引入了二进制整数、支持字符串的switch语句、菱形语法、多异常捕捉、自动关闭资源的try语句等新特性。

引入的新特性包括:

1:switch 语句支持 String

2:泛型对象类型推断

3:catch 多个类型异常

4:支持动态语言;

5:改进泛型类型可变参数
6:语法上支持集合而不一定是数组
7:新增取环境信息的工具方法
8:boolean类型反转:空指针安全,参与位运算
9:char间的equals
10:安全的加减乘除
11:map集合支持并发请求

12:引入Java NIO.2开发包;

13:字面值中使用下划线

14:null值得自动处理.

JDK1.8新特性开发代号是Dolphin(海豚),于2014-03-18发行.

版本JDK8:2014年3月18日,oracle公司发布了Java1.8,带来了全新的Lambda表达式,函数式接口、Lambda 表达式、集合的流式操作、注解的更新、安全性的增强、IO\NIO 的改进、完善的全球化功能等。

1:Lambda表达式

2:管道和流

3:新的日期和时间 API

4:默认的方法;

5:类型注解:

6:Nashorn javascript引擎;

7:并行累加器;

8:并行操作

9:内存错误移除

JDK1.9新特性开发代号是Elephant(巨象),于2014-09-8发行.

1:Jigsaw 项目;

2:模块化源码
3:简化进程API
4:轻量级 JSON API
5:时间和货币的API
6:改善锁争用机制
7:代码分段缓存
8:智能Java编译, 第二阶段
9:HTTP 2.0客户端
10:Java的REPL实现

JDK2.0新特性 开发代号是forest(森林),于2015-02-16发行.

1:局部变量类型推断

2:将JDK多存储库合并为单储存库

3:垃圾回收接口

4:并行Full GC 的G1

5:应用数据共享

6:线程局部管控

7:移除Native-Header Generation Tool (javah)

8:Unicode 标签扩展

9:备用内存设备上分配堆内存

10:基于实验JAVA 的JIT 编译器

11:Root 证书

12:基于时间的版本控制

收藏加关注,再来不迷路!!!

JDK各个版本新特性介绍及使用相关推荐

  1. JDK版本新特性介绍JDK1.6

    JDK1.6新特性介绍 1. Desktop类和SystemTray类 在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray. 前者可以用来打开系统默认浏览器浏览指定的URL,打 ...

  2. JDK各版本新特性(更新到Java20)

    Hello,I'm Shendi 每当Java出新版本我会第一时间更新 目录 各版本JDK下载 JDK 1.0 1996-01-23 Oak(橡树) JDK 1.1 1997-02-19 JDK 1. ...

  3. EOS1.1版本新特性介绍

    EOSIO/eos 目前在github的项目活跃度方面排名第一,release版本更新的速度让人应接不暇.今天EOS的大版本1.1发布,我也有幸参与了贡献,本篇文章重点介绍1.1版本的重大功能升级. ...

  4. 【刘文彬】 EOS1.1版本新特性介绍

    原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/9330057.html EOSIO/eos 目前在github的项目活跃度方面排名第一,release版 ...

  5. JDK各版本新特性总结

    序言 北风潜入悄无声,未品浓秋已立冬. JDK1.1--1996 JDK1.2--1998 JDK1.3--2000 JDK1.4--2002 JDK5.0--2004 JDK6.0--2006 JD ...

  6. JDK 9-17 新特性介绍

    Java新特性介绍 Java 8是Oracle 公司于 2014 年 3 月 18 日发布的,距离今天已经过了近十年的时间了,但是由于Java 8的稳定和生态完善(目前仍是LTS长期维护版本),依然有 ...

  7. Java SE 笔记(扩展篇)JDK 9-17 新特性介绍

    Java新特性介绍 **注意:**推荐完成此路线所有前置内容后,再来学习本篇. 经过前面的学习,我们基本已经了解了Java 8及之前的所有语法,不过,Java 8是Oracle 公司于 2014 年 ...

  8. Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结...

    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...

  9. Spark 3.2.0 版本新特性 push-based shuffle 论文详解(一)概要和介绍

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...

  10. hadoop3.0新特性介绍

    hadoop3.0新特性介绍 1. 基于jdk1.8(最低版本要求) 2. mr采用基于内存的计算,提升性能(快spark 10倍) 3. hdfs 通过最近black块计算,加快数据获取速度(块大小 ...

最新文章

  1. php项目打开快捷方式,克隆一个新项目的快捷方式_PHP教程
  2. springboot, thymeleaf 教你快速搭建网站
  3. xadsafe做暗刷_手把手教你如何去掉网吧广告之PUBWin2015_XADSAFE
  4. python双_集成python双版本详解
  5. [翻译]进化游戏的层次结构 - 用组件来重构你的游戏实体
  6. 华农c语言期末试卷答案,华南农业大学2013学年第1学期程序设计(C语言)期末考试试卷(A卷)...
  7. wince 音频学习
  8. python,pygame下载与安装详细步骤
  9. 团队管理14--盘点团队
  10. ctf之7z文件爆破
  11. WIN7各种系统大全
  12. 【技法操作】UI界面设计,用PS绘制闹钟页面教程
  13. 统计模型——贝叶斯统计模型,负二项分布
  14. 01 QEMU仿真器-模拟器介绍
  15. 用思科模拟器实现三层交换机下不同VLAN之间的通信
  16. python机器学习开源代码_2016 年十大 Python 机器学习开源项目
  17. C#使用wps转pdf
  18. 关于win10连不上特定wifi的一种情况
  19. Golang 基础之基础语法梳理 (一)
  20. Ada语言(gnat)hello world

热门文章

  1. Unity学习笔记–无限地图
  2. 基于朴素贝叶斯算法实现情感分类
  3. 沧州中考计算机考试时间,2019年沧州中考考试时间安排,沧州中考考试科目时间安排表...
  4. Chrome 网页长截图
  5. scrum敏捷开发流程介绍和心得
  6. python编写计算器(图形界面)
  7. python中水量_Python居然还能用于巨大的工程项目!比如三峡发电量估算系统!
  8. linux音频设备id,ubuntu下提取DSDT SSDT和声卡ID _ 黑苹果乐园
  9. 关于 Uncaught ReferenceError: mOxie is not defined情况下的问题
  10. Gradle基础教程