请描述一下java5有那些新特性?
- 泛型
- for-each循环
- 自动装包/拆包
- 枚举
- 静态导入
- Annotation(框架配置,代码生成)
- 可变参数
- 字符串格式化器(java.util.formatter)
- 新的线程模型和并发库 Thread Frameword
java6新特性有那些?
- 引入了一个支持脚本引擎的新框架
- UI的增强
- 对webservice 支持的增强(JAX-WS2.0和JAXB2.0)
- 一系列新的安全增强
- jdbc4.0
- CompilerAPI
- 通用的Annotations支持
java7新特性有那些?
- switch中可以使用字符串了
- 运用List list = new ArrayList<>(); 即泛型实例化类型自动推断
- 语法上支持集合,而不一定是数组
- 新增一些读取环境信息的工具方法
- Boolean类型反转,空指针安全,参与位运算
- 两个char间的equals
- 安全的加减乘除
- map集合支持并发请求,且可以写成 Map map = {name:“xxx”,age:18};
java8新特性有那些?
- Lambda 表达式-Lambda 允许把函数作为一个方法的参数,用更简洁的语法实现以前复杂的功能代码
- 方法引用提供了非常有用的语法,可以直接引用已有java类或对象的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
- 接口中可以使用default关键字声明一个默认实现方法。
- 新的编译工具,如Nashorn 引擎jjs、类依赖分析器jdeps。
- 新添加的streamAPI 把真正的函数式编程风格引入到java中
- 加强对日期与时间的处理
- Optional类用来解决空指针异常。
- java8提供一个新的Nashorn javascript引擎,它允许我们在jvm上允许特定的javascript应用
描述java动态代理
- 代理模式是常用的java设计模式之一,java中的代理实现主要有基于接口的jdk动态代理和基于类的cglib动态代理,代理的特点就是会为目标对象产生代理对象,从而在调用实际目标对象方法时实现无侵入式的代码扩展,比如一些框架中的拦截器机制、springAOP 面向切面机制都是基于动态代理模式实现的,其次也可以更加安全的保护目标对象。动态代理的目的主要就是为了解决一些安全性问题,其次就是可以在调用目标功能方法之前、之后额外添加一些功能,比如日志,事务等,并且还能阻止调用目标功能,从而实现权限控制。