java
标准化、规范化
java代码风格
【目录】java
编程-java8
编程-java9
编程-java-见过的异常
gradle
编程-java21
编程-java23
编程-java17
编程-java11
【目录】java-web-其它框架
java-vertx
quarkus
javalin
solon
Helidon
【目录】spring家族
spring
springcloud + nacos
consul
springboot启动流程
springboot使用及原理
springcloud
优化springboot
【java高级】
java-多线程-问题记录
java高级-ArrayList
java高级-HashMap
jdk源码解析-TreeMap红黑树
java对象占用多少字节
juc(并发)
ThreadPoolExecutor中ctl变量的理解
ThreadPoolExecutor分析
JVM(java虚拟机)
jvm学习路线
jvm
Java启动参数
debug
java-debug-arthas
java-debug-jdb
高并发/高性能/高可用
设计代码或编写代码时应该考虑的
如何发现系统中的瓶颈?
场景分析
mysql
mysql explain
mysql主从
mysql常见异常
方法论
工作中遇到的问题记录
代码优化
学习的思路
产品
本文档使用 MrDoc 发布
-
+
首页
编程-java9
# Java 9 新特性 ## Java 9 概述 ### jdk 9 在 2017 年 9 月 21 日发布。 国内下载地址 - windows <https://mirrors.huaweicloud.com/openjdk/9.0.4/openjdk-9.0.4_windows-x64_bin.tar.gz> - linux <https://mirrors.huaweicloud.com/openjdk/9.0.4/openjdk-9.0.4_linux-x64_bin.tar.gz> ### java 9 提供了超过 150 项新功能特性,包括备受期待的模块化系统、 可交互的 REPL 工具:jshell,JDK 编译工具,Java 公共 API 和私有 代码,以及安全增强、扩展提升、性能管理改善等。可以说 Java 9 是 一个庞大的系统工程,完全做了一个整体改变。 具体来讲: - 模块化系统 - jShell 命令 - 多版本兼容 jar 包 - 接口的私有方法 - 钻石操作符的使用升级 - 语法改进:try 语句 - 下划线使用限制 - String 存储结构变更 - 便利的集合特性:of() - 增强的 Stream API - 多分辨率图像 API - 全新的 HTTP 客户端 API - Deprecated 的相关 API - 智能 Java 编译工具 - 统一的 JVM 日志系统 - javadoc 的 HTML 5 支持 - Javascript 引擎升级:Nashorn - java 的动态编译器 在线 Oracle JDK 9 Documentation <https://docs.oracle.com/javase/9/> 官方提供的新特性列表: <https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23 AFD78-C777-460B-8ACE-58BE5EA681F6> 或参考 Open JDK <http://openjdk.java.net/projects/jdk9/> JEP(JDK Enhancement Proposals):jdk 改进提案,每当需要有新的 设想时候,JEP 可以在 JCP(java community Process)之前或者同时提 出非正式的规范(specification),被正式认可的 JEP 正式写进 JDK 的 发展路线图并分配版本号。 JSR(Java Specification Requests):java 规范提案,新特性的规范出 现在这一阶段,是指向 JCP(Java Community Process)提出新增一个 标准化技术规范的正式请求。请求可以来自于小组/项目、JEP、JCP 成员或者 java 社区(community)成员的提案,每个 java 版本都由相 应的 JSR 支持。 ## JDK 9 的目录结构 没有名为 jre 的子目录 - bin目录: 包含所有命令。 在 Windows 平台上,它继续包含系统的运行时动态链接库。 - conf目录: 包含用户可编辑的配置文件,例如以前位于 jre\lib 目录中的.properties 和.policy 文件 - include 目录: 包含要在以前编译本地代码时使用的 C/C++头文件。它只存在于 JDK 中 - jmods 目录: 包含 JMOD 格式的平台模块。 创建自定义运行时映像时需要它。 它只存在于 JDK 中 - legal 目录: 包含法律声明 - lib 目录: 包含非 Windows 平台上的动态链接本地库。 其子目录和文件不应由开发人员直接编辑或使用 模块化系统: Jigsaw Modularity - 设计理念: 模块独立、化繁为简 模块化(以 Java 平台模块系统的形式)将 JDK 分成一组模块,可 以在编译时,运行时或者构建时进行组合。 - 实现目标 - 主要目的在于减少内存的开销 - 只须必要模块,而非全部jdk模块,可简化各种类库和大型应用的 开发和维护 - 改进 Java SE 平台,使其可以适应不同大小的计算设备 - 改进其安全性,可维护性,提高性能 - 示例 ```java ``` ## Java 的 REPL 工具: jShell 命令 <http://openjdk.java.net/jeps/222> #### 产生背景 像 Python 和 Scala 之类的语言早就有交互式编程环境 REPL (read - evaluate - print - loop)了,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。而之前的 Java 版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。 #### 设计理念 即写即得、快速运行 #### 实现目标 - Java 9 中终于拥有了 REPL 工具:jShell。利用 jShell 在没有创建类的情况下直接声明变量,计算表达式,执行语句。即开发时可以在命令行里直接运行java 的代码,而无需创建 Java 文件,无需跟人解释”public static void main(String[] args)”这句废话。 - jShell 也可以从文件中加载语句或者将语句保存到文件中。 - jShell 也可以是 tab 键进行自动补全和自动添加分号。 #### 使用示例 ### jar包中兼容多版本的类 <http://openjdk.java.net/jeps/238> ### 语法改进:接口的私有方法 <http://openjdk.java.net/jeps/213> ### 语法改进:钻石操作符(Diamond Operator)使用升级 ### 语法改进:try 语句 ### 语法改进:UnderScore(下划线)使用的限制 ### String 存储结构变更 JEP 254: Compact Strings <http://openjdk.java.net/jeps/254> ### 10. 集合工厂方法:快速创建只读集合 269: Convenience Factory Methods for Collections <http://openjdk.java.net/jeps/269> ### 增强的 Stream API 在 Java 9 中,Stream API 变得更好,Stream 接口中添加了 4 个 新的方法:dropWhile, takeWhile, ofNullable,还有个 iterate 方法的 新重载方法,可以让你提供一个 Predicate (判断条件)来指定什么时 候结束迭代。(见下例) ### 多分辨率图像 API ### 全新的 HTTP 客户端 API <http://openjdk.java.net/jeps/110> http版本发展及历史 直到 2015 年,HTTP2 才成为标准。 HTTP/1.1 和 HTTP/2 的主要区别是如何在客户端和服务器之间构建 和传输数据。HTTP/1.1 依赖于请求/响应周期。 HTTP/2 允许服务器 “push”数据:它可以发送比客户端请求更多的数据。 这使得它可 以优先处理并发送对于首先加载网页至关重要的数据。 14. Deprecated 的相关 API 15. 智能 Java 编译工具 16. 统一的 JVM 日志系统 17. javadoc 的 HTML 5 支持 18. Javascript 引擎升级:Nashorn 19. java 的动态编译器
我是张三
2022年6月29日 15:20
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
eblog
Markdown文件
分享
链接
类型
密码
更新密码