1995年发布alpha和beta Java公开版本,据说非常不稳定。
Sun公司发布Java1.0,发布初期叫Oak,后改名为Java(JDK1.0基本上只支持Java语言基础特性)。
引入内部类。
引入反射。
JAR 文件格式。
引入JDBC。
引入RMI。
Java技术体系拆分为: J2SE、J2EE、J2ME。
引入集合框架。
引入 JIT 即时编译器。
引入 EJB 技术。
引入 Swing。
引入 Timer API。
默认虚拟机改为 HotSpot VM,之前为 Classic VM。
提升 JNDI 为平台级服务,之前仅仅是一项扩展。
引入 NIO。
正则表达式。
异常链。
新增 java.util.logging 日志 API。
泛型。
枚举。
注解。
自动装拆箱。
静态导入(import static)。
可变长参数。
JUC。
For-Each 循环。
改进了 Java 内存模型(这点对并发编程非常重要)。
引入垃圾回收器 G1。
优化锁与同步、垃圾收集、类加载等。
提供动态语言支持。
钻石语法(泛型实例化类型自动推断)。
try-with-resources 语法糖。
多个 catch 块用 | 连接。
switch 中可以使用字符串。
64 位 JDK 的指针压缩。
数值可加下划线。
添加对 ARM 架构的支持(是不是为 Android 的出现提供了基础? )。
JUC 中引入 fork join 编程框架。
Lambuda 表达式(闭包,允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理)。
接口中的默认方法和静态方法。
方法引用。 无参构造器方法引用: 类名::new 或者 Class
重复注解(同一个地方可以重复使用多次同一个注解,注解本身需要被 @Repeatable 修饰)。
升级工具库实现。 HashMap 实现修改、ConCurrentHashMap 实现修改, 新增Stream API(java.util.stream), 新增 Optional 类以解决空指针问题。
工具包: 类依赖分析工具 jdeps。
JVM方面: 使用 Metaspace(JEP 122)代替方法区持久代(PermGen space)。
JVM 类加载机制跟之前的双亲委派模型有了很大差别,趋向模块化设计,即 Jigsaw 项目(参考OSGi? )。
AOT 编译,通过 Graal VM 实现。
改善锁竞争机制。
http2.0 客户端。
String 类底层不再采用 char 数组存储。
默认垃圾回收器改为 G1。
局部变量类型推断,var 关键字。
动态类文件常量。
Epsilon 无操作垃圾收集器,常用来做测试。
引入 ZGC。
实验性的低延迟垃圾收集器: Shenandoah。
JDK13新特性详解
你们项目正在用哪个JDK版本? 留言告诉我。
自荐!