各版本JDK的新特性

1.5
1. 自动装箱与拆箱:
2. 枚举(常用来设计单例模式)
3. 静态导入
4. 可变参数
5. 内省(Introspector)
是 Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新 的值。通过getName/setName来访问name属性,这就是默认的规则。Java中提供了一套API用来访问某个属性的getter /setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中。
一 般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器 (PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来 调用这些方法。
6. for-each
1.6
1. Web服务元数据
2. 脚本语言支持(如支持 ruby, groovy, javascript)
3. JTable的排序和过滤
4. 更简单,更强大的JAX-WS
5. 轻量级Http Server
6. 嵌入式数据库 Derby
7. 插入式注解处理
8. Desktop类和SystemTray类
9. StAX是另一种处理XML文档的API
10. 使用JAXB2来实现对象与XML之间的映射 
11. 用Console开发控制台程序


1.7
1. switch中可以使用字串(String)了
2. 对Java集合(Collections)的增强支持,而不再限于数组
在JDK1.7之前的版本中,Java集合容器中存取元素的形式如下:
以List、Set、Map集合容器为例:
在JDK1.7中,摒弃了Java集合接口的实现类,如:ArrayList、HashSet和HashMap。而是直接采用[]、{}的形式存入对象,采用[]的形式按照索引、键值来获取集合中的对象。
3. 数值可加下划线
  例如:int one_million = 1_000_000;
4. 新增一些取环境信息的工具方法
5. Boolean类型反转,空指针安全,参与位运算
6. 两个char间的equals 
7. 安全的加减乘除 
8. map集合支持并发请求,且可以写成 Map map = {name:"xxx",age:18};
9. 支持二进制文字
   例如:int binary = 0b1001_1001;
10. 简化了可变参数方法的调用




1.8
1. 允许在接口中有默认方法实现
2.  Lambda表达式
3. 函数式接口
4. 方法和构造函数引用
5.  Lambda的范围
6. 内置函数式接口
7.  Streams
8.  Parallel Streams
9.  Map
10.  时间日期API
11.  Annotations
12. 访问局部变量
我们可以直接在lambda表达式中访问外层的局部变量:
复制代码 代码如下:
final int num = 1;
Converter<Integer, String> stringConverter =
        (from) -> String.valueOf(from + num);
stringConverter.convert(2);     // 3
但是和匿名对象不同的是,这里的变量num可以不用声明为final,该代码同样正确:
复制代码 代码如下:
int num = 1;
Converter<Integer, String> stringConverter =
        (from) -> String.valueOf(from + num);
stringConverter.convert(2);     // 3
不过这里的num必须不可被后面的代码修改(即隐性的具有final的语义),例如下面的就无法编译:
复制代码 代码如下:
int num = 1;
Converter<Integer, String> stringConverter =
        (from) -> String.valueOf(from + num);
num = 3;
在lambda表达式中试图修改num同样是不允许的。
七、访问对象字段与静态变量
和本地变量不同的是,lambda内部对于实例的字段以及静态变量是即可读又可写。该行为和匿名对象是一致的:
复制代码 代码如下:
class Lambda4 {
    static int outerStaticNum;
    int outerNum;
    void testScopes() {
        Converter<Integer, String> stringConverter1 = (from) -> {
            outerNum = 23;
            return String.valueOf(from);
        };
        Converter<Integer, String> stringConverter2 = (from) -> {
            outerStaticNum = 72;
            return String.valueOf(from);
        };    
}
}


1.9
1. Jigsaw 项目;模块化源码
2. 简化进程API 
3. 轻量级 JSON API 
4. 钱和货币的API 
5. 改善锁争用机制
6. 代码分段缓存
7. 智能Java编译, 第二阶段
8.  HTTP 2.0客户端
9. Kulla计划: Java的REPL实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值