来源:https://blog.youkuaiyun.com/papima/article/details/78219001
jdk1.5的新特性:
1. 泛型
ArrayList list=new ArrayList()------>ArrayList<Integer>list=new ArrayList<Integer>();
2 自动装箱/拆箱
nt i=list.get(0).parseInt();-------->int i=list.get(0);原始类型与对应的包装类不用显式转换
3 for-each
i=0;i<a.length;i++------------>for(int i:a){......}
4 static import
Math.sqrt();--------------->sqrt();
5 变长参数
int sum(int ...intlist)有任意个参数,把他看作数组
jdk1.6的新特性
1.增强的for循环语句
Integer[] numbers = computeNumbers();
for (int i=0; i < numbers.length ; i++)
sum += numbers[i];
||
int sum = 0;
for ( int number: computeNumbers() )
sum += number;
2.监视和管理
Java SE 6中对内存泄漏增强了分析以及诊断能力。当遇到java.lang.OutOfMemory异常的时候,可以得到一个完整的堆栈信息,
并且当堆已经满了的时候,会产生一个Log文件来记录这个致命错误。另外,JVM还添加了一个选项,允许你在堆满的时候运行脚本。
3.插入式注解处理
插入式注解处理API(JSR 269)提供一套标准API来处理Annotations
4.安全性
jdk1.7的新特性
1.模块化特性
Java7也是采用了模块的划分方式来提速,一些不是必须的模块并没有下载和安装,当虚拟机需要的时候,再下载相应的模块,
同时对启动速度也有了很大的改善。
2.多语言支持
Java7的虚拟机对多种动态程序语言增加了支持,比如:Rubby、 Python等等。
3.开发者的开发效率得到了改善
switch中可以使用字符串
在多线程并发与控制方面:轻量级的分离与合并框架,一个支持并发访问的HashMap等等。
通过注解增强程序的静态检查。
提供了一些新的API用于文件系统的访问、异步的输入输出操作、Socket通道的配置与绑定、多点数据包的传送等等。
4.执行效率的提高
对对象指针由64位压缩到与32位指针相匹配的技术使得内存和内存带块的消耗得到了很大的降低因而提高了执行效率。
提供了新的垃圾回收机制(G1)来降低垃圾回收的负载和增强垃圾回收的效果。
JDK1.8的新特性 一、接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。
二、Lambda 表达式 在Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式: Collections.sort(names, (String a, String b) -> { return b.compareTo(a); });
三、函数式接口 Lambda表达式是如何在java的类型系统中表示的呢?每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为 默认方法 不算抽象方法,所以你也可以给你的函数式接口添加默认方法。
四、方法与构造函数引用 Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用,上面的代码展示了如何引用一个静态方法,我们也可以引用一个对象的方法: converter = something::startsWith; String converted = converter.convert("Java"); System.out.println(converted); 五、Lambda 作用域 在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
六、访问局部变量 可以直接在lambda表达式中访问外层的局部变量:
七、访问对象字段与静态变量 和本地变量不同的是,lambda内部对于实例的字段以及静态变量是即可读又可写。该行为和匿名对象是一致的: 八、访问接口的默认方法 JDK 1.8 API包含了很多内建的函数式接口,在老Java中常用到的比如Comparator或者Runnable接口,这些接口都增加了@FunctionalInterface注解以便能用在lambda上。 Java 8 API同样还提供了很多全新的函数式接口来让工作更加方便,有一些接口是来自Google Guava库里的,即便你对这些很熟悉了,还是有必要看看这些是如何扩展到lambda上使用的。
JDK1.9 新特性
1)Java 平台级模块系统
2)Linking
3)JShell : 交互式 Java REPL
4)改进的 Javadoc
5)集合工厂方法
6) 改进的 Stream API
7)私有接口方法
8)HTTP/2
9)多版本兼容 JAR
来源:http://www.leftso.com/blog/518.html
JDK10新特性
1)局部变量类型自动识别推断
Java语言现在支持var方式声明变量。var允许声明局部变量的时候不指定类型。变量的类型将从创建的实际对象的类型推断出来。这个改变声称JDK10唯一对开发人员的改变。
例如:
var str = "Hello world";
//或者
String str = "Hello world";
2)垃圾收集器接口
在早期的JDK结构中,构成垃圾收集器(GC)实现的组件分散在代码库的各个部分中。它在Java 10中发生了变化。现在,它是JVM源代码中的一个干净的接口,可以快速,轻松地集成替代收集器。它将改善不同垃圾收集器的源代码隔离。
这纯粹是重构。以前工作的所有东西都需要在之后工作,而且表现不应该倒退。
3)root 证书
cacerts密钥库是JDK的一部分,旨在包含一组根证书,这些证书可用于在各种安全协议中使用的证书链中建立信任。但是,JDK源代码中的cacerts密钥库目前是空的。
4)基于实验Java的JIT编译器
此功能使基于Java的JIT编译器Graal可用作Linux / x64平台上的实验性JIT编译器。Graal将使用JDK 9中引入的JVM编译器接口(JVMCI).Graal已经在JDK中,因此将其作为实验性JIT启用将主要是测试和调试工作。
5)新增的API和选项
在Java 10中添加了73个新的API。
---------------------
作者:papima
来源:优快云
原文:https://blog.youkuaiyun.com/papima/article/details/78219001
版权声明:本文为博主原创文章,转载请附上博文链接!