美文网首页互联网科技Java学习笔记Java 杂谈
何时Java 11将Java 8替换为默认Java?

何时Java 11将Java 8替换为默认Java?

作者: 老男孩_Misaya | 来源:发表于2018-12-03 15:45 被阅读11次

    Java Development Kit的最新版本Java 11 已经发布。自从JDK Beta于1995年首次亮相以来,这种高级通用编程语言的平台不断发展。

    Java 11的发布只遵循Java 10 6个月。这符合Java平台首席架构师Mark Reinhold在2017年提出的建议。他建议以每年两次的发布周期取代两年的时间表。

    目前,Java 8和Java 11是LTS(长期支持)版本。Java 8的公共更新结束计划于2019年1月进行商业用途。对于非商业用途,计划在2020年12月的未指定日期进行。

    除了所有添加,删除和弃用的功能之外,Java 11的有趣之处在于Oracle不支持它。取而代之的是,OpenJDK社区将提供长期支持,最有可能的形式是AdoptOpenJDK。

    其他Java版本怎么样?

    随着Java 11的发布,对Java 10的支持已经结束。这是因为它是一个快速发布版本,如Java 9,其中包含的支持也已被删除。

    尽管组织在商业基础上仍然支持Java 8之前的JDK版本,但强烈建议卸载pre-Java 8,尤其是从Windows计算机上卸载。在回答这个问题之前:“Java 11何时将Java 8替换为Java的默认版本?”,让我们首先更好地了解Java 11。

    Java 11中的新功能

    每个Java版本都引入了许多新功能。然而,这一次,它更大更好。Java 11为现有功能列表添加了许多新功能。以下是一些最重要的内容:

    附加

    10个新剧本,包括Adlam,Newa,Tangut和Zanabazar Squar

    可扩展的低延迟垃圾收集器ZGC或Z垃圾收集器与Epsilon GC一起添加,Epsilon GC是一个实验性的无操作垃圾收集器

    通过JVMTI可访问,现在可以使用低开销的堆分析

    toArray (IntFunction) 在java.util.Collection接口中添加新的默认方法 

    可提供ChaCha20和ChaCha20-Poly1305密码。ChaCha20是一种新的流密码,旨在取代旧的,不安全的RC4流密码

    结合Unicode 9.0.0和10.0.0

    增强的SunEC提供商,支持4个额外的Brainpool曲线

    使用Curve25519和Curve448实施新的密钥协商方案

    改进的Java启动程序,用于运行作为Java源代码的单个文件提供的程序

    包括TLS 1.3的实现

    介绍  jceks.key.serialFilter,安全财产

    JVM现在支持将类和接口安排到一个嵌套中,这是一个全新的访问控制上下文

    新命令行标志,-XX:+ UseDynamicNumberOfCompilerThreads。它被添加到动态控制编译器线程

    RSASSA-PSS签名算法支持添加到SunMSCAPI提供程序

    标准化HTTP客户端

    支持aes128-cts-hmac-sha256-128和aes256-cts-hmac-sha384-192的Kerberos 5加密类型

    基于Unicode Consortium的CLDR(公共区域设置数据注册表)更新的区域设置数据

    var,保留类型名称,在声明lambda表达式的形式参数时可用

    清除

    Java Development Kit的最新版本不仅引入了大量功能,而且还削弱了它的一些旧功能。其中大多数已在以前的Java版本中弃用。JDK 11中不再提供的功能和选项包括:

    该  appletviewer 工具。它在JDK 9中被折旧

    捆绑的字体。因此,JDK 11仅依赖于操作系统上安装的字体

    com.sun.awt.AWTUtilities class,在JDK 10中获得折旧

    CORBA和Java EE模块

    JavaFX模块,现在可作为一组单独的模块使用

    Java插件和Java WebStart技术。用于配置部署技术的Java控制面板与共享系统JRE和JRE自动更新机制一起被删除

    jdk.snmp模块

    JMC(Java Mission Control)。但是,它可作为单独的可下载模块使用

    通过SNMP,JVM-MANAGEMENT-MIB.mib进行JVM监视和管理的规范

    sun.misc.Unsafe.defineClass 类。它的替代品是 java.lang.invoke.MethodHandles.Lookup.defineClass

     sun.nio.ch.disableSystemWideOverlappingFileLockCheck 和  sun.locale.formatasdefault 属性

    javax.imageio JPEG插件不再支持使用alpha的图像

     Thread.destroy() 和  Thread.stop(Throwable) 方法

    贬值

    随着Java平台的每个主要版本的发布,包含和排除都会有一些贬值。JDK 11弃用:

    命令行参数  -XX:+UnlockCommericalFeatures 和 -XX:+LogCommercialFeatures

    jcmd命令:  VM.check_commercial_features 和 VM.unlock_commercial_features

    Nashorn JavaScript引擎,相应的API和jjs工具

    java.util.jar和pack200以及unpack200工具中的Pack200 API

    基于流的GSSContext方法,其中包括  acceptSecContext,  getMIC,  initSecContext,  unwrap,  verifyMIC,和 wrap

    ThreadPoolExecutor,关闭线程池的finalize方法什么都不做

    VM选项-XX:+ AggressiveOpts

    请查看此内容,以获取有关JDK 11中添加,删除和弃用的详细信息。

    那么什么时候Java 11将Java 8替换为默认Java?

    最简单的答案是:不是很快!我们已经讨论过,一些组织和个人仍然依赖于Java 8之前的版本来继续运营。对于Java 8也是如此。此外,它是一个LTS版本,这意味着它将超过快速发布版本。

    支持这一想法的另一个论点是Java 11相对较新。因此,需要一些时间来获得牵引力。大多数已经开始使用Java 8部署的企业将继续从中获益。

    无法决定使用哪一个来使用Java 11?OpenJDK或Oracle JDK。嗯,这是两者之间的对比,以帮助您做出选择。

    OpenJDK比。Oracle JDK

    尝试使OpenJDK和Oracle JDK二进制文件尽可能相似的尝试正在进行中。尽管如此,在Java的第11个主要版本中,两者之间仍有几个不同之处。一些最重要的是:

    API,如javafx和资源管理,不包含在OpenJDK二进制文件中,而是包含在Oracle JDK二进制文件中

    OpenJDK允许使用未签名的第三方加密提供程序,而Oracle JDK要求使用Oracle提供的证书对这些提供程序进行签名

    OpenJDK仅提供Java Development Kit,而Oracle JDK另外提供Java Runtime Environment

    OpenJDK可用作压缩存档(tar.gz或.zip)。相反,Oracle JDK可用作安装程序(deb,msi,deb等)

    OpenJDK在GPLv2wCP许可下可用,而Oracle JDK在OTN许可下发布

    java -version的输出在OpenJDK中与在Oracle JDK中不同

    \ legal \ java.desktop \ freetype.md的内容对于OpenJDK和Oracle JDK都是不同的

    使用日志记录是Oracle JDK独有的

    使用-XX:+ UnlockCommercialFeatures标志将导致OpenJDK抛出错误并暂停。相反,在Oracle JDK中使用相同的内容将打印警告,但执行将继续

    虽然OpenJDK提供Alpine Linux,但Oracle JDK提供Solaris

    希望这有助于您进行JDK选择!

    推荐一个Java进阶架构学习交流:952124565,群内有分布式架构、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Netty、Jvm等视频资料提供学习参考

    相关文章

      网友评论

        本文标题:何时Java 11将Java 8替换为默认Java?

        本文链接:https://www.haomeiwen.com/subject/iyrecqtx.html