Java不同版本区别:

JSE: java标准版,包含Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网络编程。

JEE: java企业版,包含JSE中的类,并且还包含用于开发企业级应用的类。 比如:EJB、servlet、JSP、XML、事务控制。

JME: java移动版,包含嵌入式开发或者移动应用开发所需要的类,包括一些JSE的核心代码和一些无线设备的API。

 

JDK不同版本的区别:

1.5版本:

   1、出现泛型

    原来:ArrayList list=new ArrayList(),新特性:ArrayList<Integer>list=new ArrayList<Integer>();

   2、自动装箱/拆箱

    原来:int i=list.get(0).parseInt(),新特性:int i=list.get(0);原始类型与对应的包装类不用显式转换

    3、出现for-each

        原来:while/for/do while ,新特性:for(int i:array)

    4、import static

        原来:import,Math.sqrt(),新特性:import static,sqrt()

    5、可变长参数

        原来:int sum(int int1,int int2,int int3),新特性:方法定义int sum(int ...intlist) ,使用循环遍历intlist,相当于数组

    6、增加注解支持

 

1.6版本:

    1、对脚本语言的支持:比如javasrcipt,ruby

    2、StAX,一种利用拉模式解析(pull-parsing)XML文档的API。类似于SAX,也基于事件驱动模型。之所以将StAX加入到JAXP家族,是因为JDK6中的JAXB2和JAX-WS 2.0中都会用StAX。

    3、使用Compiler API,动态编译Java源文件,如JSP编译引擎就是动态的,所以修改后无需重启服务器。(刚知道是从这里开始可以动态编译的)

    4、轻量级Http Server API,据此可以构建自己的嵌入式HttpServer,它支持Http和Https协议。

    5、对Java集合(Collections)的增强支持,可直接采用[]、{}的形式存入对象,采用[]的形式按照索引、键值来获取集合中的对象

    6、嵌入式数据库 Derby(这个也是刚知道,基本没用过)

 

1.7版本:

    1、switch中支持使用string

    2、支持二进制数字,如:int binary= 0b1001_1001;

    3、数值可加下划线用作分隔符(编译时自动被忽略)

    4、Map集合支持并发请求

    5、对于字符串常量池中存储的内容改变

 

1.8版本:

    1、接口的默认方法:即接口中可以声明一个非抽象的方法做为默认的实现,但只能声明一个,且在方法的返回类型前要加上“default”关键字。

    2、Lambda 表达式

    3、函数式接口:是指仅仅只包含一个抽象方法的接口,要加@FunctionalInterface注解

    4、还增加了很多与函数式接口类似的接口

 

1.9版本:

    1、WebSocket 和 HTTP/2 的支持