JDK各版本的新特性(java1.1~java12)

摘要

    java到现在已经走过24个年头了,现在来看看它的成长历史吧,这里说明一下,java在6之前都会以java1.x为版本,后来都改了直接版本,我这里直接以直接版本为序列,另外这下面列出来的都是以重要的java版本更新的内容为列子,还有从java8以后的内容会单独拆分来讲解,因为现在学习java基础都是以java7为例,所以这些java8以前的版本都会在学习的时候会接触到的。

目录

摘要

 

java版本详情

    背景

         java 1.0               新特性及更新修改:

         java 1(JDK1.1 1997-2-19)               新特性及更新修改:

         java 2(JDK1.2 1998-12-4)                新特性及更新修改:

         java 3(JDK1.3 2000-5-8)                新特性及更新修改:

         java 4(JDK 1.4 2002-2-13)                新特性及更新修改:

         java 5(JDK 1.5 2004-9-30)                新特性及更新修改:

         java 6(JDK6 2006-12-11)                新特性及更新修改:  

         java 7(JDK7 2011-7-28)                 新特性及更新修改:  

         java 8(JDK8 2014-3-18)

        java 9(JDK9 2017-9-22) 详情请点击这里

        java 10      新特性及更新修改:  

       java 11          新特性及更新修改:  

       java12         新特性及更新修改:  

1. JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)---Shenandoah:低暂停时间的 GC(实验性功能)

2. JEP 230: Microbenchmark Suite---微基准测试套件

3. JEP 325: Switch Expressions (Preview)---Switch 表达式(预览功能)

4. JEP 334: JVM Constants API---JVM 常量 API

5. JEP 340: One AArch64 Port, Not Two---只保留一个 AArch64 实现

6. JEP 341: Default CDS Archives---默认类数据共享归档文件

7. JEP 344: Abortable Mixed Collections for G1---可中止的 G1 混合 GC

8. JEP 346: Promptly Return Unused Committed Memory from G1---G1 及时返回未使用的已分配内存


java版本详情

    背景

                        1991年1991年4月,由James Gosling博士领导的绿色计划(Green Project)开始启动  

     
    1995-5-23 Oak语言改名为Java,提出 “Write Once,Run Anywhere”的口号。

     
    java 1.0
               新特性及更新修改:

                        Sun Classic VM(虚拟机)

                        Applet(java小应用程序)

                        AWT(java图形设计)

     
    java 1(JDK1.1 1997-2-19)
               新特性及更新修改:

                        JAR(jar包)

                        JDBC(Java DataBase Connectivity)(连接数据库)

                        JavaBeans(java规范)

                        RMI(远程调用)

                        Inner Class(内部类)

                        Reflection(反射)

     
    java 2(JDK1.2 1998-12-4)
                新特性及更新修改:

                        J2SE(改名为J2SE)
                        J2EE(改名为J2EE)
                        J2ME(改名为J2ME)
                        JIT(即时编译技术)
                        Java Plug-In(运行插件)
                        EJB(J2EE的规范)
                        Java IDL(平台对象请求代理体系结构)
                        Collections(集合)
                        字符串常量做内存映射
                        对打包的Java文件进行数字签名
                        控制授权访问系统资源的策略工具
                        JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型
                        在Applet中添加声音支持

     
    java 3(JDK1.3 2000-5-8)
                新特性及更新修改:

                        数学运算
                        Timer API(时间)
                        Java Sound API(声音)
                        CORBA IIOP实现RMI的通信协议
                        Java 2D新特性
                        jar文件索引

     
    java 4(JDK 1.4 2002-2-13)
                新特性及更新修改:

                        正则表达式
                        异常链
                        NIO(高级流)
                        Logging (日志功能)
                        XML解析器
                        XSLT转换器
                        XML处理
                        Java打印服务
                        Java Web Start
                        JDBC 3.0(jdbc高级)
                        断言
                        Preferences(可以操作系统的高级功能)
                        IPV6
                        Imgae I/O(图片流)

     
    java 5(JDK 1.5 2004-9-30)
                新特性及更新修改:

                        自动装箱拆箱
                        泛型
                        元数据
                        Introspector(内省)
                        enum(枚举)
                        静态引入
                        可变长参数(Varargs)
                        foreach(高级虚幻)
                        JMM(内存模型)
                        concurrent(并发包)

     
    java 6(JDK6 2006-12-11)
                新特性及更新修改:  

                         命名方式变更
                         脚本语言
                         编译API和微型HTTP服务器API
                         锁与同步
                         垃圾收集
                         类加载
                         JDBC 4.0(jdbc高级)
                         Java Compiler (Java™ 编程语言编译器的接口)
                         可插拔注解
                         Native PKI(公钥基础设)
                         Java GSS (通用安全服务)
                         Kerberos ( 一种安全认证的系统)
                         LDAP (LDAP )
                         Web Services  (web服务)

     
    java 7(JDK7 2011-7-28)
                 新特性及更新修改:  

                         switch语句块中允许以字符串作为分支条件
                         创建泛型对象时应用类型推断
                         try-with-resources(一个语句块中捕获多种异常)
                         null值得自动处理
                         数值类型可以用二进制字符串表示
                         引入Java NIO.2开发包
                         动态语言支持
                         安全的加减乘除
                         Map集合支持并发请求

     
    java 8(JDK8 2014-3-18)

     1、Lambda表达式
     2、改进的类型推断
     3、Java类型的注释
     4、重复注释
     5、方法参数反射
     6、TLS 1.1和TLS 1.2默认启用
     7、有限的doPrivileged
     8、基于密码加密的更强算法
     9、JSSE服务器中的SSL / TLS服务器名称指示(SNI)扩展支持
    10、支持AEAD算法
    11、KeyStore增强功能
    12、SHA-224消息摘要
    13、对NSA Suite B加密的增强支持
    14、对于高熵随机数生成更好的支持
    15、新PKIXRevocationChecker类
    16、适用于Windows的64位PKCS11
    17、Kerberos中的新rcache类型5重放缓存
    18、协议转换和约束委派的Kerberos 5
    19、默认情况下禁用弱加密
    20、GSS-API / Kerberos 5机制的未绑定SASL
    21、用于多个主机名的SASL服务
    22、JNI桥接到Mac OS X上的本机JGSS
    23、在SunJSSE提供程序中支持更强大的临时DH密钥
    24、支持JSSE中的密码套件首选项自定义
    25、全新的JavaFX(详情请点击这里)
   26、java工具的操作增强
   27、Unicode增强功能,包括对Unicode 6.2.0的支持
   28、采用Unicode CLDR数据和java.locale.providers系统属性
   29、新日历和区域设置API
   30、引入新的Date Time API
   31、Nashorn JavaScript引擎
   32、并行阵列排序
   33、标准编码和解码Base64
   34、无符号算术支持
   35、新的并发
   36、Java XML技术增强功能
   37、虚拟机操作增强

    java 9(JDK9 2017-9-22) 详情请点击这里

新特性

        Java平台模块化
工具的改变
        jShell
        添加更多诊断命令
        多版本JAR文件
        删除JVM TI hprof代理
        删除jhat工具
        验证JVM命令行标志参数
        编译旧版本平台版本
        jlink
安全性的改变
        数据传输层安全性(DTLS)
        TLS应用层协议协商扩展
        用于TLS的OCSP装订
        利用GHASH和RSA的CPU指令
        基于DRBG的SecureRandom实现
        禁用SHA-1证书
        默认创建PKCS12密匙库
        SHA-3哈希算法
部署的改变
        弃用java插件
        增强的java控制面板
        模块化java应用程序打包
        弃用Applet API
java语言的改变
       铣削Coin项目
javadoc的改变
        简化doclet API
        HTML5 javadoc
        javadoc 搜索
        模块系统
JVM的改变
        编译器控制
        分段代码缓存
        语言定义对象模型的动态链接
JVM调优的改变
        提高G1可用性,确定性和性能
        统一JVM日志记录
        删除在jdk8中不推荐的GC组合
        使G1成为默认的收集器
        统一GC记录
        弃用并发标记扫描(CMS)垃圾收集器
        删除在jdk8中不推荐的GC组合
核心库的改变
        process API更新
        可变手柄
        缩小字符串
        平台日志记录API和服务
        更多并发更新
        XML目录
        更便利的集合工厂方法
        增强的方法句柄
        Deprecation的弃用
        旋转等待提示
        过滤传入的序列化数据
        堆栈 API
        将选定的Xerces2.11.0更新合并到JAXP中
Nashorn的改变
        Nashorn的Parser API
        在Nashorn中实现选定的ECMAScript 6功能
客户端技术的改变
        多分辨率图像
        为模块化准备的javaFX UI控件和CSS API
        BeanInfo注释
        TIFF图像I / O
        WIndows和Linux上的HiDPI Graphics
        特定于平台的桌面功能
        在Linux上启用GTK3
国际化的改变
        UUnicode 8.0
        默认启用CLDR区域设置数据
        UFT-8属性文件

   

Java 10      新特性及更新修改:  

1.局部变量类型判断

2.GC的优化以及内存管理

详细网址:Java10 新特性(详细) , Java10新特性

Java 11          新特性及更新修改:  

详细网址: Java11新特性

java12         新特性及更新修改:  

1. JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)---Shenandoah:低暂停时间的 GC(实验性功能)

新增了一个名为 Shenandoah 的 GC 算法,通过与正在运行的 Java 线程同时进行 evacuation 工作来减少 GC 暂停时间。使用 Shenandoah 的暂停时间与堆大小无关,这意味着无论堆是 200MB 还是 200GB,都将具有相同的暂停时间。

2. JEP 230: Microbenchmark Suite---微基准测试套件

JDK 源码中新增了一套微基准测试套件,开发人员可通过它轻松运行已有的微基准测试并创建新的基准测试。

3. JEP 325: Switch Expressions (Preview)---Switch 表达式(预览功能)

对 switch 语句进行了扩展,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的 "case L ->" 模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。

4. JEP 334: JVM Constants API---JVM 常量 API

引入 API 来对关键类文件(key class-file)和运行时工件(run-time artifacts)的名义描述(nominal descriptions)进行建模,特别是可从常量池加载的常量。

在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用(JVMS 5.1)类型,它们能够描述每种可加载常量。

符号引用以纯 nominal 形式描述可加载常量,与类加载或可访问性上下文区分开。有些类可以作为自己的符号引用(例如 String),而对于可链接常量,定义了一系列符号引用类型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它们包含描述这些常量的 nominal 信息。

5. JEP 340: One AArch64 Port, Not Two---只保留一个 AArch64 实现

在保留 32 位 ARM 实现和 64 位 aarch64 实现的同时,删除与 arm64 实现相关的所有源码。

JDK 中存在两套 64 位 ARM 实现,主要存在于 src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录。两者都实现了 aarch64,现在将只保留后者,删除由 Oracle 提供的 arm64。这将使贡献者将他们的精力集中在单个 64 位 ARM 实现上,并消除维护两套实现所需的重复工作。

6. JEP 341: Default CDS Archives---默认类数据共享归档文件

针对 64 位平台,使用默认类列表增强 JDK 构建过程,以生成类数据共享(class data-sharing,CDS)归档。

7. JEP 344: Abortable Mixed Collections for G1---可中止的 G1 混合 GC

如果混合 GC 的 G1 存在超出暂停目标的可能性,则使其可中止。

8. JEP 346: Promptly Return Unused Committed Memory from G1---G1 及时返回未使用的已分配内存

增强 G1 GC,以便在空闲时自动将 Java 堆内存返回给操作系统。

为了实现向操作系统返回最大内存量的目标,G1 将在应用程序不活动期间定期执行或触发并发周期以确定整体 Java 堆使用情况。这将导致它自动将 Java 堆的未使用部分返回给操作系统。而在用户控制下,可以可选地执行完整的 GC,以使返回的内存量最大化。

发布了58 篇原创文章 · 获赞 115 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/FurtherSkyQ/article/details/90514730