jdk1.0至2.0主要特性介绍

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)

泛型格式:<T e> 

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

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

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

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

2:For-Each循环 

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

List<String> list = new ArrayList<String>();

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) 

JavaJavaBean类属性事件的一种缺省处理方法。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发行.

 版本JDK72011年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发行.

版本JDK82014年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:基于时间的版本控制

关于Java 10的新特性就写到这了,肯定还有更多的特性等待发掘。JDK 2.0里还有很多很有用的东西等将来开发设计成熟技术再详细补充。

转载于:https://my.oschina.net/u/4083965/blog/3013974

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值