共计 3762 个字符,预计需要花费 10 分钟才能阅读完成。
JDK 倒退历史
JAVA 1.0, 代号 Oak 橡树 )
于 1996-01-23 发行
JAVA 1.1
1997-02-19 发行, 次要更新内容:
- 引入 JDBC
- 增加外部类反对
- 引入 JAVA BEAN
- 引入 RMI
- 引入反射
JAVA 1.2, 代号 Playground(操场)
1998-12-8 发行,次要更新内容:
- 引入汇合框架
- 对字符串常量做内存映射
- 引入 JIT(Just In Time)编译器
- 引入打包文件数字签名
- 引入管制受权拜访系统资源策略工具
- 引入 JFC(Java Foundation Classes),包含 Swing1.0,拖放和 Java2D 类库
- 引入 Java 插件
- JDBC 中引入可滚动后果集,BLOB,CLOB, 批量更新和用户自定义类型
- Applet 中增加声音反对
JAVA1.3,代号 Kestrel(红隼)
2000-5-8 公布,次要更新内容:
- 引入 Java Sound API
- 引入 jar 文件索引
- 对 Java 各方面多了大量优化和加强
- Java Platform Debugger Architecture 用于 Java 调式的平台。
JAVA 1.4,代号 Merlin(隼)
2004-2-6 公布(首次在 JCP 下发行),次要更新内容:
- 增加 XML 解决
- 增加 Java 打印服务(Java Print Service API)
- 引入 Logging API
- 引入 Java Web Start
- 引入 JDBC 3.0 API
- 引入断言
- 引入 Preferences API
- 引入链式异样解决
- 反对 IPV6
- 反对正则表达式
- 引入 Image I/O API
- NIO,非阻塞的 IO,优化 Java 的 IO 读取。
JAVA 5.0,代号 Tiger(老虎),有重大改变
2004-9-30 公布,次要更新内容:
- 引入泛型
- For-Each 循环 加强循环,可应用迭代形式
- 主动装箱与主动拆箱
- 引入类型平安的枚举
- 引入可变参数
- 增加动态引入
- 引入注解
- 引入 Instrumentation
- 提供了 java.util.concurrent 并发包。
JAVA6,代号 Mustang(野马)
2006-12-11 公布,次要更新内容:
- 引入了一个反对脚本引擎的新框架(基于 Mozilla Rhino 的 JavaScript 脚本引擎)
- UI 的加强
- 对 WebService 反对的加强(JAX-WS2.0 和 JAXB2.0)
- 引入 JDBC4.0API
- 引入 Java Compiler API
- 通用的 Annotations 反对
JAVA7,代号 Dolphin(海豚)
2011-07-28 公布,这是 sun 被 oracle 收买(2009 年 4 月)后的第一个版本,次要更新内容:
- switch 语句块中容许以字符串作为分支条件
- 在创立泛型对象时利用类型推断 , 比方你之前版本应用泛型类型时这样写
ArrayList<User> userList= new ArrayList<User>();
,这个版本只须要这样写ArrayList<User> userList= new ArrayList<>();
,也即是前面一个尖括号内的类型,JVM 帮咱们主动类型判断补全了。 - 在一个语句块中捕捉多种异样
- 增加 try-with-resources 语法反对,应用文件操作后不必再显示执行 close 了。
- 反对动静语言
- JSR203, NIO.2,AIO, 新 I/O 文件系统,减少多重文件的反对、文件原始数据和符号链接, 反对 ZIP 文件操作
- JDBC 标准版本升级为 JDBC4.1
- 引入 Fork/Join 框架,用于并行执行工作
- 反对带下划线的数值,如 int a = 100000000;,0 太多不便于人浏览,这个版本反对这样写 int a = 100_000_000,这样就对数值高深莫测了。
- Swing 组件加强(JLayer,Nimbus Look Feel…)参考
JAVA8
2014-3-19 公布,oracle 原打算 2013 年公布,因为安全性问题两次跳票,是自 JAVA5 以来最具革命性的版本,次要更新内容:
- 接口改良,接口竟然能够定义默认办法实现和静态方法了。
- 引入函数式接口
- 引入 Lambda 表达式
- 引入全新的 Stream API,提供了对值流进行函数式操作。
- 引入新的 Date-Time API
- 引入新的 JavaScrpit 引擎 Nashorn
- 引入 Base64 类库
- 引入并发数组(parallel)
- 增加新的 Java 工具:jjs、jdeps
- JavaFX,一种用在桌面开发畛域的技术
- 动态链接 JNI 程序库
JAVA9
2017-9-21 公布
- 模块化(jiqsaw)
- 交互式命令行(JShell)
- 默认垃圾回收期切换为 G1
- 过程操作改良
- 竞争锁性能优化
- 分段代码缓存
- 优化字符串占用空间
JAVA10
2018-3-21 公布
1.JEP286,var 局部变量类型推断。
2.JEP296,将原来用 Mercurial 治理的泛滥 JDK 仓库代码,合并到一个仓库中,简化开发和治理过程。
3.JEP304,对立的垃圾回收接口。
4.JEP307,G1 垃圾回收器的并行残缺垃圾回收,实现并行性来改善最坏状况下的提早。
5.JEP310,应用程序类数据 (AppCDS) 共享,通过跨过程共享通用类元数据来缩小内存占用空间,和缩小启动工夫。
6.JEP312,ThreadLocal 握手交互。在不进入到全局 JVM 平安点 (Safepoint) 的状况下,对线程执行回调。优化能够只进行单个线程,而不是停全副线程或一个都不停。
7.JEP313,移除 JDK 中附带的 javah 工具。能够应用 javac -h 代替。
8.JEP314,应用附加的 Unicode 语言标记扩大。
9.JEP317,能将堆内存占用调配给用户指定的备用内存设施。
10.JEP317,应用 Graal 基于 Java 的编译器,能够事后把 Java 代码编译成本地代码来晋升效力。
11.JEP318,在 OpenJDK 中提供一组默认的根证书颁发机构证书。开源目前 Oracle 提供的的 Java SE 的根证书,这样 OpenJDK 对开发人员应用起来更不便。
12.JEP322,基于工夫定义的公布版本,即上述提到的公布周期。版本号为 $FEATURE.$INTERIM.$UPDATE.$PATCH,别离是大版本,两头版本,升级包和补丁版本。
Java 11
2018-9-25 公布
官网公开的 17 个 JEP(JDK Enhancement Proposal 个性加强提议):
- JEP181: Nest-Based Access Control(基于嵌套的访问控制)
- JEP309: Dynamic Class-File Constants(动静的类文件常量)
- JEP315: Improve Aarch64 Intrinsics(改良 Aarch64 Intrinsics)
- JEP318: Epsilon: A No-Op Garbage Collector(Epsilon 垃圾回收器,又被称为”No-Op(无操作)”回收器)
- JEP320: Remove the Java EE and CORBA Modules(移除 Java EE 和 CORBA 模块,JavaFX 也已被移除)
- JEP321: HTTP Client (Standard)
7.JEP323: Local-Variable Syntax for Lambda Parameters(用于 Lambda 参数的局部变量语法) - JEP324: Key Agreement with Curve25519 and Curve448(采纳 Curve25519 和 Curve448 算法实现的密钥协定)
- JEP327: Unicode 10
- JEP328: Flight Recorder(航行记录仪)
- JEP329: ChaCha20 and Poly1305 Cryptographic Algorithms(实现 ChaCha20 和 Poly1305 加密算法)
- JEP330: Launch Single-File Source-Code Programs(启动单个 Java 源代码文件的程序)
- JEP331: Low-Overhead Heap Profiling(低开销的堆调配采样办法)
- JEP332: Transport Layer Security (TLS) 1.3(对 TLS 1.3 的反对)
- JEP333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)(ZGC:可伸缩的低提早垃圾回收器,处于实验性阶段)
- JEP335: Deprecate the Nashorn JavaScript Engine(弃用 Nashorn JavaScript 引擎)
- JEP336: Deprecate the Pack200 Tools and API(弃用 Pack200 工具及其 API)
垃圾器收集器总结
Serial
- 串行
- 新生代
- 复制算法
- 响应速度优先
- 单 CPU 环境下的 Client 模式
Serial Old
- 串行
- 老年代
- 标记 - 整顿
- 响应速度优先
- 单 CPU 环境下的 Client 模式、CMS 的后备预案
ParNew
- 并行
- 新生代
- 复制算法
- 响应速度优先
- 多 CPU 环境时在 Server 模式下与 CMS 配合
Parallel Scavenge
- 并行
- 新生代
- 复制算法
- 吞吐量优先
- 在后盾运算而不须要太多交互的工作
Parallel Old
- 并行
- 老年代
- 标记 - 整顿
- 吞吐量优先
- 在后盾运算而不须要太多交互的工作
CMS
- 并发
- 老年代
- 标记 - 革除
- 响应速度优先
- 集中在互联网站或 B / S 零碎服务端上的 Java 利用
G1
- 并发
- both
- 标记 - 整顿 + 复制算法
- 响应速度优先
- 面向服务端利用,未来替换 CMS