Java1.0-13各版本特性

2020-03-09  

不知道你有没有想过这些问题:
为什么 JDK1.4 与 JDK 5.0 的命名规则不一样?JDK 8 增加了哪些新特性?现在最新的 Java 版本是多少? 

 

一直都是写业务代码,都没研究过 Java 的曾经与现在。为了提高下自己的职业素养,查了资料:

JDK 1995 年 发布了 Beta 版,1996 年 1 月 发布了 1.0 版本,直到 2019 年 9 月发布了 JDK 13,JDK 13 是当前最新的版本。

 

Java 开发团队计划在 2020 年 3 月 17 日之前发布 JDK 14。透露更新内容可能包括:

  • 包装工具,用于包装独立的Java应用程序
  • 模式匹配
  • 文本块的两项附加
  • Z Garbage Collector

 

从 Java 1.4 开始,Java 语言的发展由 Java 社区流程(JCP)来控制,该流程使用 Java 规范请求(JSR)来建议和指定对 Java 功能的添加和更改。

 

JDK 5 开始引入了用于 Java 语言的新版本控制系统,旧版本控制系统继续用于开发人员库。版本号 "1.5.0" 和 "5.0" 都用于标识 Java 2 Platform Standard Edition 版本。产品版本为 "5.0",而开发人员版本为 "1.5.0",在以后的版本中(Java 6 = JDK 1.6,Java 7 = JDK 1.7...)。

 

Java 各版本特性

JDK 1.0(1996-01-23,codename Oak):

  • 第一版 JDK,纯解释运行,外挂JIT,运行速度较慢

 

JDK 1.1(1997-02-19):

  • AWT 事件模型
  • 内部类
  • JavaBeans
  • JDBC(Java DataBase Connectivity)
  • RMI(Remote Method Invocation)
  • 反射(暂不支持实时修改对象属性)
  • Windows 平台上的 JIT(Just In Time)编译器
  • Taligent 的国际化和 Unicode 支持

 

J2SE 1.2(1998-12-08, codename Playground):

  • 版本名称改为 "J2SE",区分 J2EE 和 J2ME
  • 新增类达到 1520 个
  • Java plug-in
  • Collections 框架
  • Swing 图形 API
  • Java IDL
  • Sun 的 JVM 首次搭载一台 JIT 编译器

 

J2SE 1.3(2000-05-08, codename Kestrel):

  • 新增 HotSpot JVM
  • 修改 RMI 支持与 CORBA 的可选兼容性
  • JNDI (Java Naming and Directory Interface),Java 命名和目录接口
  • 新增 JPDA(Java Platform Debugger Architecture),Java 平台调试器体系架构
  • Java 声音
  • 合成代理类

 

J2SE 1.4(2002-02-06, codename Merlin):

  • 新增 assert 关键字
  • 新增 Perl 正则表达式
  • 提供了异常链,允许封装原始的低级的异常
  • 支持 IPv6
  • Logging API
  • Image I/O API
  • 集成 XML 解析器和 XSLT 处理器(JAXP)
  • 集成安全性和加密扩展(JCE,JSSE,JAAS)
  • Java Web Start
  • Preferences API


J2SE 5.0(2004-09-30, codename Tiger):

  • 泛型
  • 注解(annotation)
  • 自动装箱/拆箱
  • 枚举
  • Varargs,用类型名称和三个点来声明方法的最后一个参数,如 void drawtext(String... lines)
  • 增强的 for each 循环
  • 改进了多线程 Java 程序的执行语义,新的 Java 内存模型解决了先前规范的复杂性、有效性和性能问题
  • 静态导入
  • RMI 对象自动存根生成
  • Swing 新的外观
  • 并发包 java.util.concurrent
  • 扫描程序类,用于解析输入流和缓冲区的数据
  • 在 Apple Mac OS X 10.4 开始支持


Java SE 6(2006-12-11, codename Mustang):

  • Sun 用 Java SE 替换了名称 J2SE,并从版本号中删除了".0",开发人员的内部编号仍然为1.6.0
  • 不再支持较旧的 Win9x 版本
  • 脚本语言支持
  • 核心平台和 Swing 性能显着提高
  • 通过 JAX-WS改进了 Web 服务支持
  • JDBC 4.0 支持
  • Java 编译器 API,允许 Java 程序以编程方式选择和调用 Java 编译器的 API
  • JAXB 升级到 2.0 版,包括 StAX 解析器的集成
  • 支持可插入注解
  • GUI 的许多改进
  • JVM 的改进:同步和编译器性能优化,新算法和对现有垃圾回收算法的升级以及应用程序启动性能

 

Java SE 7(2011-07-28, codename Dolphin):

  • JVM 对动态语言的支持
  • 压缩的 64 位指针(可在 Java 6 中使用 -XX:+UseCompressedOops )
  • Switch 支持 String 类型
  • try 语句中的自动资源管理
  • 改进在创建泛型对象时应用类型推断
  • 简化 varargs 方法声明
  • 二进制字符串表示整数,允许在字符串表示中添加下划线
  • 捕获多种异常类型并通过改进的类型检查重新抛出异常
  • Java NIO 新增了对多个文件系统,文件元数据和符号链接的支持,对应软件包:java.nio.file、java.nio.file.attribute、java.nio.file.spi
  • Timsort 用于对对象的集合和数组进行排序
  • 类库对椭圆曲线密码算法的支持
  • 适用于 Java 2D 的 XRender 管道,改善对 GPU 特定功能的处理
  • 新协议 SCTP 和 Sockets Direct Protocol 的支持
  • Upstream 对 XML 和 Unicode 的更新
  • Java 部署规则集

 

Java SE 8(2014-03-18, codename Spider):

  • 语言级支持 lambda 表达式、方法引用、默认方法、Stream API、Optional 类
  • Nashorn, JavaScript 引擎
  • Date and Time API
  • 静态链接的 JNI 库
  • 启动JavaFX应用程序
  • 删除永久代


Java SE 9(2017-09-21):

  • JDK 模块系统项目 Jigsaw
  • REPL (JShell):交互式编程环境
  • HTTP 2 客户端:新增 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服务器推送特性
  • 改进 Javadoc:Javadoc 支持在 API 文档中的进行搜索;Javadoc 的输出符合兼容 HTML5 标准
  • 多版本兼容 JAR 包:多版本兼容 JAR 功能能创建仅在特定版本的 Java 环境中运行库程序时选择使用的 class 版本
  • 集合工厂方法:List,Set、Map 接口中,新增可以创建这些集合的不可变实例的静态工厂方法
  • 支持接口中的私有方法
  • 进程 API: 改进的 API 来控制和管理操作系统进程
  • 改进 Stream API
  • 改进 try-with-resources,final 变量的使用
  • 改进注解 @Deprecated
  • 匿名类可以使用钻石操作符(Diamond Operator)
  • 改进 Optional 类:java.util.Optional 添加了很多新的有用方法,Optional 可以直接转为 stream
  • 多分辨率图像 API
  • 改进的 CompletableFuture API
  • 内置了一个轻量级的 JSON API
  • 引入了新的响应式流 API 来支持响应式编程
  • HiDPI 图形:自动缩放和调整大小
  • 提前编译
  • jlink:Java链接器

 

Java SE 10(2018-03-21):

  • var 局部变量类型推断
  • 将原来用 Mercurial 管理的众多 JDK 仓库代码,合并到一个仓库中,简化开发和管理过程
  • 基于时间的发行版本控制
  • 统一的垃圾回收接口
  • G1 垃圾回收器的并行完整垃圾回收,实现并行性来改善最坏情况下的延迟
  • 应用程序类数据 (AppCDS) 共享,通过跨进程共享通用类元数据来减少内存占用空间,和减少启动时间
  • ThreadLocal 握手交互,在不进入到全局 JVM 安全点 (Safepoint) 的情况下,对线程执行回调。优化可以只停止单个线程,而不是停全部线程或一个都不停
  • 移除 JDK 中附带的 javah 工具,使用 javac -h 代替
  • 使用附加的 Unicode 语言标记扩展
  • 能将堆内存占用分配给用户指定的备用内存设备
  • 使用 Graal 基于 Java 的编译器,可以预先把 Java 代码编译成本地代码来提升性能
  • 在 OpenJDK 中提供一组默认的根证书颁发机构证书

 

Java SE 11(2018-09-25):

  • Nest-Based 访问控制
  • 动态类文件常量
  • 改善 Aarch64 intrinsic
  • Epsilon:无操作垃圾收集器
  • 消除 Java EE 和 CORBA 模块
  • HTTP客户端(标准)
  • 局部变量的语法λ参数
  • Curve25519 和 Curve448 关键协议
  • 支持 Unicode 10.0.0
  • 飞行记录器
  • ChaCha20 和 Poly1305 加密算法
  • 发射一列纵队源代码程序
  • 低开销堆分析
  • 传输层安全性(Transport Layer Security,TLS)1.3
  • 一个可伸缩的低延迟垃圾收集器 (实验)
  • 不赞成使用 Nashorn JavaScript 引擎
  • 不赞成使用 Pack200 工具和 API

 

Java SE 12(2019-03-19):

  • Shenandoah: 低暂停时间的垃圾收集器
  • Microbenchmark 套件
  • 切换表达式
  • JVM常数API
  • One AArch64 Port, Not Two :删除与 arm64 端口相关的所有源码,保留 32 位 ARM 移植和 64 位 aarch64 移植
  • 默认 CDS 存档
  • 当 G1 垃圾回收器的回收超过暂停目标,则能中止垃圾回收过程
  • 改进 G1 垃圾回收器,以便在空闲时自动将 Java 堆内存返回给操作系统

 

Java SE 13(2019-09-17):

  • 动态 CDS 档案
  • ZGC:取消提交未使用的内存
  • 重新实现旧版套接字 API
  • switch 表达式
  • 文本块

 

参考:
https://blog.csdn.net/qq934235475/article/details/82220076
https://en.wikipedia.org/wiki/Java_version_history

 

ConstXiong 备案号:苏ICP备16009629号-3