Java 8 发布已经超过 3 年,下一版本指日可待,初步定于 2017 年 9 月 21 日发布。
你可能听说过 Java 9 的模块系统,但是已经产生了更多新版本。在这篇博客中,我们提及一些。
在 这里 可以下载 JDK 9 EA (预览版)。
好了,不浪费大家的时间,马上开始!
Java 9 REPL(JShell)
Oracle 介绍过一个名为“JShell”的新工具。它表示 Java Shell,是大家熟知的 REPL (读取-执行-打印-循环) 形式。它用于执行和测试 Java 的语言结构,比如类、接口、枚举、对象、语句等,非常简单。很多语言都实现了读取-执行-打开-循环的交互形式,现在 Java 也是其中一员了。REPL/JShell 看起来像这样:
anmol:\>jshell
不需要 `public static void main(String[] args)`。 酷吧?
HTTP 2.0 客户端
Java 9 会完全支持 HTTP 2.0 并带来 新的 HTTP 客户端 ,它会代替 HttpURLConnection —— 同时还会实现 HTTP 2.0 和 Web Socket。
新的 API 在 java.net.http 包中。
这个 API 使用创建者(Builder)模式,这使得它真正易用:
URI newURI = new URI("http://localhost:8080");
Java 9 模块 (Jigsaw 项目)
Java 9 特性的大变动之一是模块系统。Oracle 把它作为 J igsaw 项目 的一部分。
模块化 JDK
模块化 Java 源代码
模块化运行时映像
Java API 的内部封装
Java 平台模块化系统
它们的主要目标之一是提供模块化的 JVM,使之可以在内存有限的设备上运行。JVM 可以只运行那些应用程序需要的模块和 API。
模块系统看起来有点像:
module java9 { exports; requires;
模块化的 JAR 文件包含一个额外的模块描述符。在这个模块描述符中,通过 `requires` 语句表示对其它模块的依赖。
此外, `exports` 语句控制哪些包可以被其它模块访问。
你可以在 这里 了解更多关于 Jigsaw 的信息。
改进的进程 API
Java SE 9 带来一些 进程 API 的改进 。它们添加了一些新的类和方法,来简化控制和管理 OS 进程。
进程 API 中的两个新接口:
java.lang.ProcessHandle
java.lang.ProcessHandle.Info
这一更新可以扩展 Java 与操作系统交互的能力:新的定位方法用于处理 PID,进程名称和状态,并可以枚举 JVM、进程等。比如,在 Linux 中检索 PID 的代码会像这样:
System.out.println(" Required PID is " + Process.getCurrentPid());
轻量级的 JSON API
Java 9 带来一个轻量级的 API ,用于通过 JSON(JavaScriopt 对象符号) 数据交换格式处理和生成文件以及数据流,JSON 是基于 JavaScript 的子集,用来代替 XML。
这个 API 的主要 目标 如下:
解析和生成 JSON。
满足 Java 开发者使用 JSON 的功能性需求。
解析 API 可以选择标记流,事件(包括文件层次结构)流,或不可变树的方式来呈现文档或数据流视图。
用于紧凑配置和 Java ME 的 API 子集。
使用创建者模式 API 构造不可变的树型结构。
生成器风格 API,用于输出 JSON 数组流和 JSON “文本”。
一个转换 API,将已有的树形值输入转换成另一个树形值输出。
预计 JEP 会把它作为 java.util 的子包交付,至少包含 4 个模块:事件、流、树和生成器。预期不会修改现有的模块、包或类。预计 JSON API 不会依赖 Java 基础模块之外的模块。
智能 Java 编译 (第 2 阶段)
智能 Java 编译项目 指在改进 sjavac (Java 编程语言编辑器) 工具,使它能默认用于 JDK 构建,并普遍用于其它 JDK 之外的大项目构建。
由于稳定性和便捷性相关的各种问题,sjavac 并未默认用于 JDK 构建脚本。这一 JEP 的首要目标是解决这些问题。这需要确保这一工具在所有软件/硬件配置上产生可靠的结果。
总体目录是提升 sjavac 的质量,使它可以像常规的 javac 封装那样能够编译任何大型 Java 项目。
私有接口方法
从 Java 8 开始可以在接口中实现默认方法和静态方法。然后我们不能在接口中创建私有方法。
为了避免冗余代码并提高可重用性,Oracle 计划在 Java SE 9 的接口中引入私有方法。从 Java SE 9 开始可以在接口中使用 ‘private’ 关键字写私有方法和私有静态方法了。
私有方法可以是静态的,这样它属于接口。非静态的私有方法可以由实现接口的实例调用,但只能是在接口中。
public interface Employee{ private Long createEmployeeID(){ // Method implementation goes here.
如果你使用默认方法开发 API,那么私有方法在代码结构方面对其实现会很有帮助。
共同学习,写下你的评论
评论加载中...
作者其他优质文章