Java技术体系
广义上,Clojure、JRuby、Groovy等运行在Java虚拟机上的语言及相关程序都属于Java技术体系的一员。
狭义上,Sun官方定义的Java技术体系包括:
JDK
JDK(Java Development Kit,Java开发工具包):用于支持Java程序开发的最小环境,包括Java程序设计语言、Java虚拟机和Java API类库。
JRE
JRE(Java Runtime Environment,Java运行环境):用于支持Java程序运行的标准环境,包括Java虚拟机和Java API类库中的Java SE API子集。
JDK每次升级主要体现在:
说明:以下内容是笔者根据自己掌握的资料整理得到的,可能有遗漏或出错的地方,欢迎在评论区留言批评指正。
时间、版本及工程代号:1991.04 Oak
修正版本:
新增语法特性:
新增技术特性:
JVM改进:
其他说明:1991年04月,James Gosling博士领导的Green Project启动,目标开发一种在消费性电子产品(如机顶盒、冰箱等)上运行的程序架构,但在消费品市场上并不算成功。该计划的产品Oak就是Java语言的前身。
时间、版本及工程代号:1995.05.23 Java1.0
修正版本:
新增语法特性:
新增技术特性:
JVM改进:
其他说明:Oak在互联网市场中找到自己的定位,改名为Java,并第一次提出“Write Once, Run Anywhere”的口号。
时间、版本及工程代号:1996.01.23 JDK1.0
修正版本:
新增语法特性:
新增技术特性:Applet、AWT
JVM改进:提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)
其他说明:1996年5月底,Sun于美国旧金山举行了首届JavaOne大会,从此JavaOne大会成为全世界数百万Java语言开发者每年一度的技术盛会
时间、版本及工程代号:1997.02.19 JDK1.1
修正版本:共1.1.0-1.1.8九个版本,其中JDK1.1.4-Sparkler(宝石)、JDK1.1.5-Pumpkin(南瓜)、JDK1.1.6-Abigail(阿比盖尔,女子名)、JDK1.1.7-Brutus(布鲁图,古罗马政治家个将军)、JDK1.1.8-Chelsea(切尔西,城市名)。
新增语法特性:内部类(Inner Class)、反射(Reflect)
新增技术特性:JAR文件格式、JDBC、JavaBeans、RMI(Remote Method Invocation,远程方法调用,开发纯Java的网络分布式应用系统的核心解决方案之一)
JVM改进:
其他说明:
时间、版本及工程代号:1998.12.04 JDK1.2 Playground(竞技场)
修正版本:
新增语法特性:添加了strictfp(strict float point,精确浮点)关键字
新增技术特性:Collections集合类、EJB、Java Plug-in、Java IDL、Swing等
JVM改进:第一次内置JIT(Just In Time)编译器(JDK1.2中曾并存过Classic VM、HotSpot VM和Exact VM这3个虚拟机,后两个都是内置JIT编译器,而之前版本所带的Classic VM只能以外挂形式使用JIT编译器;另外,Exact VM仅在Solaris平台出现过)
其他说明:
时间、版本及工程代号:2000.05.08 JDK1.3 Kestrel(美洲红隼)
修正版本:JDK1.3.1 Ladybird(瓢虫)
新增语法特性:
新增技术特性:JNDI(Java 命名与目录接口)、提供了大量新的Java 2D API、JavaSound类库
JVM改进:自JDK1.3开始,HotSpot虚拟机成为默认虚拟机
其他说明:自JDK1.3开始,Sun维持了一个习惯:大约每隔两年发布一个JDK主版本,以动物命名,期间发布的各个修正版本则以昆虫名称作为工程名称。
时间、版本及工程代号:2002.02.13 JDK1.4 Merlin(灰背隼)
修正版本:
新增语法特性:
新增技术特性:正则表达式、异常链、NIO、日志类、XML解析器、XSLT转换器等
JVM改进:
其他说明:
时间、版本及工程代号:2004.09.30 JDK1.5 Tiger(老虎)
修正版本:
新增语法特性:自动装箱与拆箱、静态导入、泛型、动态注解、枚举、可变长参数、遍历(foreach)循环等
新增技术特性:java.util.concurrent并发包
JVM改进:改进了Java的内存模型(Java Memory Model, JMM)
其他说明:从JDK1.5版本开始,只有程序员内部的开发版本号(Develper Version,如java -version的输出)中才继续沿用1.5、1.6、1.7的版本号,而公开版本号(Product Version)则改为JDK5、JDK6、JDK7的命名方式。
时间、版本及工程代号:2006.12.11 JDK6 Mustang(野马)
修正版本:
新增语法特性:
新增技术特性:动态语言支持(通过内置Mozilla JavaScript Rhino引擎实现)、编译API、微型HTTP服务器等
JVM改进:锁与同步、垃圾收集、类加载等方面的算法都有很多改动
其他说明:
时间、版本及工程代号:2011.07.28 JDK7
修正版本:
新增语法特性:二进制字面量、在数字字面量下使用下划线、swatch可以使用String类型、创建实例的类型推断、在try之后自动关闭资源(try-with-resources)等(详见参考2)
新增技术特性:ClassLoader新增API、URLClassLoader新增API、Concurrent包的改进、更多新NIO2的API等(详见参考3)
JVM改进:G1垃圾收集器
其他说明:
时间、版本及工程代号:2014.03 JDK8
修正版本:
新增语法特性:Lambda表达式、多重注解、接口默认方法
新增技术特性:扩展了集合类
JVM改进:
其他说明:
[1] 《深入理解Java虚拟机》
[2] jdk1.7新特性详解
[3] JDK 7 新特性 - 总览
[4] JDK各个版本的新特性jdk1.5-jdk8