资讯专栏INFORMATION COLUMN

JDK 9 变更一览

sherlock221 / 2208人阅读

摘要:概述是一个主要版本的发布这里介绍的是对的特性和增强的实现是的增强提案,包括增强建议和路线图流程规范请求,描述了针对平台的建议和最终规范主要变更统一模块化标准这是全新的编程组件模块,是可命名的可自描述的代码和数据集合。

概述

java9是一个主要版本的发布

这里介绍的是Oracle对JDK9的特性和增强的实现

JEP是JDK的增强提案,包括增强建议和路线图流程

JSR(Java规范请求),描述了针对Java平台的建议和最终规范

JDK9主要变更 Java统一模块化标准

这是全新的Java编程组件模块,是可命名的、可自描述的代码和数据集合。

提供了可选择的、链接时间,在编译期和运行时之间,可以将一组模块组装成自定义运行时映象,类似与java工具jlink

引入模块化JAR文件,是一个带有模块信息的JAR文件,信息存放文件module-info.class在根路径下

引入JMOD的打包方式,类似与JAR的打包方式,文件包含本地代码和配置信息,可以通过jmod tool查看

JDK本身也被分成模块化

允许把JDK模块组件自由组合成你需要的

定义一个新的URI方案,资源包含命名模块、类和存储运行环境

java运行环境移除了rt.jar和tool.jar

默认情况下JDK大部分内部API无法访问,执行命令jdeps -jdkinternals查看代码中是否使用内部JDK API

更多信息见:

Java Platform Module System (JSR 376)

JEP 261: Module System

JEP 200: The Modular JDK

JEP 220: Modular Run-Time Images

JEP 260: Encapsulate Most Internal APIs

JEP 223:新的版本方案

$MAJOR.$MINOR.$SECURITY.$PATCH

$MAJOR主要版本,如JDK9,包含平台规范的新特性和对已有特性的更改

$MINOR次要版本,包含bug修复、标准api的修订和平台规范之外的特性实现

$SECURITY安全更新版本,包含关键修复和提高安全性的必要措施

JDK9新工具增强

JEP 222: jshell: The Java Shell (Read-Eval-Print Loop):提供了交互式命令行窗口

JEP 228: Add More Diagnostic Commands:提高对Hotspot和JDK问题的诊断能力

JEP 231: Remove Launch-Time JRE Version Selection:移除了启动时检查JRE版本

JEP 238: Multi-Release JAR Files:提供多版本JAR

JEP 240: Remove the JVM TI hprof Agent:从JDK中删除了hprof代理

JEP 241: Remove the jhat Tool:从JDK中移除了jhat tool

JEP 245: Validate JVM Command-Line Flag Arguments:校验JVM命令行标志参数

JEP 247: Compile for Older Platform Versions:增强javac,可以编译代码为早期版本

JEP 282: jlink: The Java Linker:提供Java版的链接时间

JDK9安全增强

JEP 219: Datagram Transport Layer Security (DTLS):支持安全套接字和SunJSSE支持DTLS(数据包传输层安全)

JEP 244: TLS Application-Layer Protocol Negotiation Extension:支持TLS(传输层安全)协议

JEP 249: OCSP Stapling for TLS

JEP 246: Leverage CPU Instructions for GHASH and RSA

JEP 246: Leverage CPU Instructions for GHASH and RSA

JEP 273: DRBG-Based SecureRandom Implementations

JEP 288: Disable SHA-1 Certificates

JEP 229: Create PKCS12 Keystores by Default

JEP 287: SHA-3 Hash Algorithms

JDK9部署增强

Deprecate the Java Plug-in:Java插件被标记为过时的

Enhanced Java Control Panel:增强Java控制面板

JEP 275: Modular Java Application Packaging

JEP 289: Deprecate the Applet API:Applet API被标记为过时的

JDK9对java语言的增强

JEP 213: Milling Project Coin:具体见Java SE 9的语言变更

JDK9对Javadoc的增强

Javadoc增强包含简化的Doclet API、Javadoc搜索、支持生成HTML5、支持模块系统中的注释

JEP 221: Simplified Doclet API

JEP 224: HTML5 Javadoc

JEP 225: Javadoc Search

JEP 261: Module System

JDK 9对JVM的增强

JEP 165: Compiler Control

JEP 197: Segmented Code Cache

JEP 276: Dynamic Linking of Language-Defined Object Models

JDK 9对JVM调优的增强

Improve G1 Usability, Determinism, and Performance:增强垃圾回收器(G1)

JEP 158: Unified JVM Logging:统一JVM日志

JEP 214: Remove GC Combinations Deprecated in JDK 8

删除了JDK 8中标记过时的GC组合

DefNew + CMS

ParNew + SerialOld

Incremental CMS

删除相应参数:

-Xincgc

-XX:+CMSIncrementalMode

-XX:+UseCMSCompactAtFullCollection

-XX:+CMSFullGCsBeforeCompaction

-XX:+UseCMSCollectionPassing

JEP 248: Make G1 the Default Garbage Collector:标记G1为默认GC

JEP 271: Unified GC Logging:统一GC日志

JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector:CMS标记为过时

JDK 9核心库

JEP 102: Process API Updates:进程API,java.lang.ProcessHandle可以获取进程ID、参数、命令等

JEP 193: Variable Handles:变量处理,见java.util.concurrent.atomic包下和sun.misc.Unsafe的源码

JEP 254: Compact Strings:压缩字符串

JEP 264: Platform Logging API and Service:统一日志API

JEP 266: More Concurrency Updates

JEP 268: XML Catalogs

JEP 269: Convenience Factory Methods for Collections:集合工厂方法

类似guava,Set alphabet = Set.of("a", "b", "c");

JEP 274: Enhanced Method Handles:方法处理

JEP 277: Enhanced Deprecation:增强注解

JEP 285: Spin-Wait Hints:自旋等待提示,见Thread#onSpinWait()

JEP 290: Filter Incoming Serialization Data

JEP 259: Stack-Walking API:堆栈API,见java.lang.StackWalker,可以获取代码执行的每一帧信息

JEP 255: Merge Selected Xerces 2.11.0 Updates into JAXP

JDK 9 对Nashorn增强

JEP 236: Parser API for Nashorn

JEP 292: Implement Selected ECMAScript 6 Features in Nashorn

JDK 9对Client Technologies增强

JEP 251: Multi-Resolution Images

JEP 253: Prepare JavaFX UI Controls and CSS APIs for Modularization

JEP 256: BeanInfo Annotations

JEP 262: TIFF Image I/O

JEP 263: HiDPI Graphics on Windows and Linux

JEP 272: Platform-Specific Desktop Features

JEP 283: Enable GTK 3 on Linux

JDK 9对国际化的增强

JEP 267: Unicode 8.0

JEP 252: CLDR Locale Data Enabled by Default

JEP 226: UTF-8 Properties Files

参考:https://docs.oracle.com/javas...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67871.html

相关文章

  • 抽象类和接口的区别已经变了

    摘要:抽象方法没有方法体抽象方法权限修饰符不能为抽象方法的目的就是为了让子类继承重写的,所以抽象方法不能私有,不能修饰。另外,添加默认方法不会影响函数式接口的使用。 原文:抽象类和接口的区别已经变了 随着JDK的不断迭代,抽象类和接口的区别已经有了些许改变,你是否还停留在JDK 7 的答案呢? 定义 抽象类定义通过 abstract class public abstract class A...

    wow_worktile 评论0 收藏0
  • 一个开发眼中的运维

    摘要:资源包括什么内存磁盘网络文件描述符外部缓存数据库等,编程语言是如何管理资源的合理的算法架构保证了资源的合理使用,分配内存使用网络等等。 在云计算时代,开发和运维的结合变得越来越重要。在DIFF论坛第一期,前新浪SAE运维主管,郑志勇,分享了《一个开发眼中的运维》根据自己从开发人员转型运维之后的心得,谈如何把在开发上的运用抽象思维方式运用到运维领域。 showImg(http://se...

    Hanks10100 评论0 收藏0
  • Oracle正式发布Java 9,引入新的Java编程组件

    摘要:的核心变化就是引入了一种新的编程组件,也就是模块,按照的说法,它是一个可命名的自描述的代码和数据集合。宣布会按照每六个月一次的节奏进行发布,意味着是最后一次特性驱动的版本发布,这反映出了目前管理的特点。 Java SE 9.0于2017年9月21日发布。JDK 9的核心变化就是引入了一种新的Java编程组件,也就是模块,按照Oracle的说法,它是一个可命名的、自描述的代码和数据集合。...

    shenhualong 评论0 收藏0
  • 资产管理系统 CMDB 详解

    摘要:服务器信息是否正确,如果发现不对会提醒确认服务器与交换机连接的端口是否准确资产管理系统经过一段时间的探讨和研究我们做了一套资产管理系统,接下来就为大家详细解读一下我们的资产管理系统。 showImg(https://segmentfault.com/img/bVbgufe?w=640&h=450); 两年前笔者在一个中小型互联网公司做运维,当时我们经理在机房,花了半天找一台服务器,但是...

    YancyYe 评论0 收藏0
  • Java 多线程并发编程面试笔录一览

    摘要:创建线程的方式方式一将类声明为的子类。将该线程标记为守护线程或用户线程。其中方法隐含的线程为父线程。恢复线程,已过时。等待该线程销毁终止。更多的使当前线程在锁存器倒计数至零之前一直等待,除非线 知识体系图: showImg(https://segmentfault.com/img/bVbef6v?w=1280&h=960); 1、线程是什么? 线程是进程中独立运行的子任务。 2、创建线...

    bitkylin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<