001一、Java9特性介绍和环境配置
引言
Java 9
推出好长时间了,但是它有什么新的东西和废弃了什么东西,我一直没认真去了解过。Java 9
( 又称为 jdk 1.9
) 是 Java
编程语言开发的主要版本。它的初始版本于 2017
年 9
月21
日发布
按照今天的日期,也就是差不多一年前吧,但是,要知道,Java 10
都已经出来了…. 残废的 Java 9
,大家还没用上,就开始过时了。
本专栏,我一边收集各种资料,一边写一些基础的介绍文章。
Java 9
Java 9
应该是当初最为期待的版本吧。当时因为 Java 8
带来了很多新特性,大家都以为 Java 9
会持续带来更多的新特性。结果呢 ? 虽然说不上多惊艳,但还是马马虎虎过得去了。
Java 9
是非常理论上应该是名利双收的,但实际上,夹在 Java 7 Java 8
和 Java 10
之间,其实大部分人都还停留在 Java 8
,如果要升级,早就到了 Java 10
了…
所以,其实,我这个专栏,应该算是介绍性的文章,以简单直观的方式解释了Java 9
的基本到高级功能及其用法。如果可以,就深入一点。
我是 Java 9 专栏的读者么 ?
只要你会 Java,你就可以阅读这个专栏。
本专栏对大多数 Java
开发人员非常有用,从初学者到专家
完成阅读本专栏后,你将发现自己在 Java 9
中具有中等水平的专业知识,当然了,继续的提高还要你的继续努力实践
Java 9 的目标
Java 9
版本的主要目标是
1、模块化 JDK
和 Java
标准版 ( Java Standard Edition
) ,使得 Java
可以用在小型计算设备中
今天,我才牢牢记住了 Java SE
的全称,竟然是 Java
Standard
Edition
2、提高 JDK
和 Java
实现的整体安全性
3、简化 JAVA
SE
和 Java
EE
平台上的 Java
代码库和大型应用程序的构建和维护过程
4、设计和实现能够应用于 Java
Platform
和 Java
JDK
上的标准模块系统
其实看这几个主要目标,Java
9
的最大的变更应该就是开始模块化…,
这也导致了 Java
9
不突出的原因吧。毕竟 Java
开发人员日常使用 Java
9
的过程中,对模块化并没有明显的感知
Java 9 新特性
Java
9
在以上 4
个目标的基础上做了大量的工作,可以对外称道的应该有 90+
个,但是,大部分都是小修小改,不足道也。
我们就介绍几个比较大一点的特性吧
1、模块化 ( Module )
这是首当其中的特性。毕竟这么大的版本,目标只是它。
Java
中的模块 ( Module
) 是一种新的 Java
编程组件 ( Component
) ,是一个命名的 ( named
),自描述的代码和数据集合
2、REPL ( JShell )
REPL
,全称 Read
Eval
Print
Loop
,中文 「 交互式解释器 」
这对于我们 Java
开发者来说,应该是 Java
9
带来的最大的个性吧。我们终于可以像 Python
、 Ruby
和 Node.js
那样在 Shell
可见即可得的运行一些范例代码了
3、HTTP/2 客户端
HTTP/2
大行其道的今天,Java
开发者终于可以用上原生的HTTP/2 Java
客户端了。
新的HTTPClient API
支持 WebSockets
和 HTTP/2 Stream
以及服务器推送功能
4、增强 JavaDocs
生成输出支持 HTML5
,同时为生成的 API
文档提供搜索功能
5、增强 JAR – 多 Java 版本的 JAR 支持
增强 JAR
格式,使得可以在单个 JAR
存档中同时存在多个特定于 Java
发行版的类文件
6、集合工厂方法
为 List
、 Set
和 Map
等结构添加了新的静态工厂方法,用于创建这些集合的不可变实例。
7、接口允许私有方法 ( private methods )
增强了接口 ( interface
) 功能,可以在接口中包含私有的成员方法和私有的静态方法
8、改进 Process API
改进 API
来控制和管理操作系统进程
9、改进流 ( Stream ) API
为了增强了安全性和健壮性 , 对象数据序列化时允许对输入的流进行过滤
10、 try-with-resources 语句改进
允许在 try-with-resources
语句中为资源定义一个最终变量 ( finall
)
11、 增强 @Deprecated 注解
修改 @Deprecated
注释,可以提供有关 API
状态和预期处置的更多信息
12、 内部类允许使用 「 钻石操作符 」 ( <> )
在匿名类中,如果参数的类型是可推断的,那么就允许使用 「 钻石操作符 」 <>
13、 改进 Optional 类
为 java.util.Optional
类添加了新的有用方法
14、 多分辨率 ( Multiresolution ) 图像 API
支持将具有不同分辨率的一组图像封装成单个多分辨率图像
15、 CompletableFuture API 改进
使用 ProcessHandle.onExit
方法退出进程时,CompletableFuture
类的异步机制可以执行一些操作 ( Action
)
16、 轻量级的 JSON
Java 9
中引入了一个轻量级的 JSON API
用于编码和解码文档和数据流 ( data
stream
) 为 JSON
格式
17、 响应式流 ( Reactive Streams ) API 支持
为了支持 Java 9
的响应式编程,Java SE 9
版本中引入了一个新的响应式流 ( Reactive
Streams
) API
环境配置
Java 9
的环境安装和配置其实很简单,因为跟 Java 7 / Java 8
的安装差不多,我们就不做过多的介绍了。
相关的安装教程,可以参考我们的 Java
基础教程:Java
开发环境配置
因为 Java
当前的最新大版本为 Java 10
,所以,我们建议你安装 Java 10
,它同时也包含了 Java 9
的新特性
编辑器
顺便说一下,我们接下来的教程不会使用大型的 IDE ,比如 Idea
和 Netbeans
和 Eclipse
等,而只会使用一些较小的文本编辑器,比如 Sublime Text 3
和 Visual Studio Code
关于这些文本编辑器,网上的使用教程很多,其实,下载安装就好,没啥大的配置。
项目
既然不使用大型的、功能齐全的 IDE
,那么我们也不会建立大型的项目工程,一般情况下,我们直接单个文件解决所有问题,这样方便大家理解,也不会造成部分文件或代码缺失的问题。
写完了如果写得有什么问题,希望读者能够给小编留言,也可以点击[此处扫下面二维码关注微信公众号](https://www.ycbbs.vip/?p=28 "此处扫下面二维码关注微信公众号")
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com