有关接口私有方法新特性的更多信息,可访问我的初体验之: Java 9 Private methods in Interface 。
4. Java 9 Module SystemJava 9 新特性中最大的一个变化就是 Module System。Oracle 公司将引入如下特性作为 Jigsaw Project 的一部分:
Modular JDK
Modular Java Source Code
Modular Run-time Images
Encapsulate Java Internal APIs
Java Platform Module System
Java SE 9 版本之前,我们使用 Monolithic Jars 来开发基于 Java 语言的应用程序。这种体系架构有许多局限性和缺点。为了避免这些缺陷,Java SE 9 迎来了 Module System。
JDK 9 包含有 92 个 modules(当然也可能在最终发布版中有所变化)。我们可以使用 JDK Modules,也能创建我们自己的 modules,如:
简单 Module 示例
module com.foo.bar { }
这里我们使用 module 关键字创建了一个简单的 module。每个 module 都有一个名字,对应代码和其它一些资源。
想了解更多有关这个新体系架构和亲自动手体验的话,可以参考这里我的体验之:
Java 9 Module System Basics
Java 9 Module System Examples
5. Process API ImprovementsJava SE 9 迎来一些 Process API 的改进,通过添加一些新的类和方法来优化系统级进程的管控。
Process API 中的两个新接口:
java.lang.ProcessHandle
java.lang.ProcessHandle.Info
Process API 示例
ProcessHandle currentProcess = ProcessHandle.current(); System.out.println("Current Process Id: = " + currentProcess.getPid());
想了解更多新 API 的信息,可以通过参考我的初体验之:Java SE 9: Process API Improvements。
6. Try With Resources Improvement我们知道,Java SE 7 引入了一个新的异常处理结构: Try-With-Resources ,来自动管理资源。这个新的声明结构主要目的是实现“Automatic Better Resource Management”(“自动资源管理”)。
Java SE 9 将对这个声明作出一些改进来避免一些冗长写法,同时提高可读性。
Java SE 7 示例
void testARM_Before_Java9() throws IOException{ BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt")); try (BufferedReader reader2 = reader1) { System.out.println(reader2.readLine()); } }
Java SE 9 示例
void testARM_Java9() throws IOException{ BufferedReader reader1 = new BufferedReader(new FileReader("journaldev.txt")); try (reader1) { System.out.println(reader1.readLine()); } }
有关这个特性的更多信息,可以参考我的初体验之: Java 9 Try-With-Resources Improvements
7. CompletableFuture API Improvements在 Java SE 9 中,Oracle 公司将改进 CompletableFuture API 来解决一些 Java SE 8 中出现的问题。这些被添加的 API 将用来支持一些延时和超时操作,实用方法和更好的子类化。
Executor exe = CompletableFuture.delayedExecutor(50L, TimeUnit.SECONDS);
这里的 delayedExecutor() 是静态实用方法,用来返回一个在指定延时时间提交任务到默认执行器的新 Executor 对象。
有关这个特性的更多信息,请访问我的初体验之:Java SE 9: CompletableFuture API Improvements。
8. Reactive Streams