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 的支持