JDK1.0
核心API,集成API,用户界面API,发布技术,Java虚拟机(JVM)
AWT
JDK1.1
JITb编译器,会把常执行的部分字节码指令先解释好放在内存,以后再次执行该指令时,不用再解释.
Reader /Writer,16位读写。
新的事件模型,使用Listener
JDK1.2(里程碑) ,改名为JAVA 2 、J2SE
ThreadLocal:线程本地变量,new ThreadLocal(),然后set()一个变量,这样就把这个变量跟当前线程绑定,此后,在本地线程生命周期内,任何位置都可以都可以通过ge()取得这个变量。而且不会跟别的线程冲突(也就是线程安全的)。
ThreadLocal自己维护了一个Map,key是线程,value是用户的变量,任何一个线程去里面取的都是自己的变量。
有句话总结的比较好,ThreadLocal是用空间换时间,使得线程不用竞争变量,而是各自使用自己的版本。
而线程同步机制是用时间换空间,各个线程只能排队取得资源的使用权。
新版集合包,ArrayList, HashMap 等等 ,以前是Vector Hashtable等等。
Thread类中对suspend(),resume()和stop()等方法的废弃
JFC
Swing
Security
JDK1.3
java.lang.StrictMath、Timer API、Collections包改进
虚拟机停止钩子
DNS服务:在JNDI接口方面,加入了一个DNS服务的实现。
Jini实现:J2SE1.3包含了一个Jini实现,这使得我们可以方便地把诸如打印机、摄像机和磁盘驱动设备插入现有网络中,并且能自动搜索已在网上的设备可以提供的服务并享用这些服务。
Optional API中引入了Java API for XML包
HotSpot虚拟机
JDK1.4
assertion功能: 如 assert null != str;
NIO非阻塞IO
LinkedHashMap
JDK1.5 ,(里程碑)改名J2SE5.0
泛型,注解,基础变量box,彻底改变了JAVA代码的样子。
线程池包
JDK1.6 改名为Java SE 6.0
StAX
JAXB2
Compiler API
JDK1.7
对Java集合(Collections)的增强支持
Map map = {name:"xxx",age:18};
List<Integer> piDigits = [ 1,2,3,4,5,8 ];
在Switch中可用String
java 8
Lambda 表达式
参考