zoukankan      html  css  js  c++  java
  • 如约而至,Java 10 正式发布!

    3 月 20 日,Oracle 宣布 Java 10 正式发布。

    官方已提供下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html

    在 Java 9 之后,Java 采用了基于时间发布的策略,每 6 个月一个版本。这是采用新的发布策略之后的第一个版本。

    Java 10 主要有 12 个新特性。

    具体来看看。

    JEP 286: Local-Variable Type Inference

    局部变量的类型推导。

    很多人都会吐槽 Java 代码写起来太过繁琐,特别是涉及泛型的时候。就像 C++,也基于 auto 关键字引入了类型推导功能。
    Java 也计划引入类似特性,语法是这样的:

    
    var list = new ArrayList<String>();  // infers ArrayList<String>
    
    var stream = list.stream();          // infers Stream<String>
    
    

    该特性只能用于三种场景:

    带有初始化信息的局部变量

    增强 for 循环中的索引

    传统 for 循环中的局部变量

    看个复杂点的例子:

    对该特性感兴趣的读者可以参考:https://developer.oracle.com/java/jdk-10-local-variable-type-inference

    JEP 296: Consolidate the JDK Forest into a Single Repository

    将 JDK 的多个代码仓库合并到一个代码仓库中。
    看过 JDK 代码的应该知道,JDK 的不同功能分布在不同代码仓库中。以 JDK 9 为例,代码仓库有 8 个: root, corba, hotspot,jaxp, jaxws, jdk, langtools 和 nashorn。其中 hotspot 是虚拟机实现代码,jdk 是 Java 类库和相关工具,langtools 是 javac 等工具,nashorn 是 JavaScript 引擎。

    JEP 304: Garbage Collector Interface

    垃圾收集器接口。

    在 hotspot/gc 代码实现方面,引入一个干净的垃圾收集器接口,改进不同垃圾收集器源代码的隔离性。这样添加新的或者删除旧的 GC,都会更容易。

    JEP 307: Parallel Full GC for G1

    为 G1 垃圾收集器引入并行 Full GC。

    JEP 310: Application Class-Data Sharing

    Java 之前就引入了类数据共享机制,Class data sharing (CDS) ,以减少 Java 程序的启动时间,降低内存占用。简单来说,Java 安装程序会把 rt.jar 中的核心类提前转化成内部表示,转储到一个共享的文件中(shared archive)。多个 Java 进程(或者说 JVM 实例)可以共享这部分数据。
    现在,希望更近一步,支持应用类的数据共享。

    JEP 312: Thread-Local Handshakes

    修改安全点机制,使得部分回调操作只需要停掉单个线程,而不像以前那样,只能选择或者停掉所有线程,或者都不停止。

    JEP 313: Remove the Native-Header Generation Tool (javah)

    去掉 javah 工具。

    从 JDK 8 开始,javah 的功能已经集成到了 javac 中。所以,javah 可以删掉了。

    JEP 314: Additional Unicode Language-Tag Extensions

    额外的 Unicode 语言标签扩展。

    增强 java.util.Locale 和相关 API,实现 BCP 47 语言标签中额外的 Unicode 扩展。

    JEP 316: Heap Allocation on Alternative Memory Devices

    在可选内存设备上分配堆内存。
    支持将 Java 对象堆分配到 NV-DIMM 等内存设备上。随着 NV-DIMM 越来越便宜,未来的系统可能会搭载异构内存架构。

    JEP 317: Experimental Java-Based JIT Compiler

    实验性的基于 Java 的 JIT 编译器。
    支持基于 Java 的 JIT 编译器。相关工作主要基于 Graal。Graal 也是 Java 9 中引入的 AOT 编译器的基础。

    JEP 319: Root Certificates

    根证书。
    在 JDK 中提供一组默认的根证书。

    JEP 322: Time-Based Release Versioning

    基于时间的版本字符串。修改 Java SE 平台和 JDK 版本字符串机制。考虑和之前版本号的兼容等问题,新的版本命名机制是: $FEATURE.$INTERIM.$UPDATE.$PATCH

    $FEATURE,每次版本发布加 1,不考虑具体的版本内容。(之前的主版本号部分)2018 年 3 月的版本是 JDK 10,9 月的版本是 JDK 11,依此类推。

    $INTERIM,中间版本号,在大版本中间发布的,包含问题修复和增强的版本,不会引入非兼容性修改。

  • 相关阅读:
    PDF创建及动态转换控件程序包ActivePDF Portfolio
    银行支票和汇票中使用的专用字体MICR E13B条形码控件字体
    可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK
    在网页中编辑报表的报表设计器Stimulsoft Reports Designer.Web报表控件
    dhtmlxScheduler日历日程控件包括天视图,周视图,月视图,年视图和日程表视图
    交互式的Flash图表和仪表控件AnyChart
    Xceed WPF 主题皮肤控件Xceed Professional Themes for WPF详细介绍
    Hibernate的使用
    日志的级别
    动态Web应用工程 前端和后端,如何区分
  • 原文地址:https://www.cnblogs.com/han-1034683568/p/8615091.html
Copyright © 2011-2022 走看看