深入理解Java 9:构建模块化应用

需积分: 2 2 下载量 106 浏览量 更新于2024-07-19 收藏 2.98MB PDF 举报
"Exploring Java 9 - 2018年" 本书深入探讨了Java 9中的新特性和变化,特别关注了模块系统——即Java平台模块系统(JPMS)或Project Jigsaw。该书涵盖了整个Java应用程序开发生命周期的重要概念,旨在帮助读者构建模块化的应用程序。书中详细介绍了以下关键知识点: 1. **模块系统(JPMS)**:Java 9引入了模块化,以解决大型应用的依赖管理和代码隔离问题。JPMS通过定义清晰的模块边界,提高了程序的可维护性和安全性。 2. **模块描述符(Module Descriptor)**:每个模块都有一个模块描述符,通常在`module-info.java`文件中定义。它声明了模块的名称、依赖和其他模块化信息,如导出和打开的包。 3. **未命名模块(Unnamed Module)**:未命名模块是指那些没有明确模块描述符的模块,通常包括传统Java类路径下的JAR和类文件。 4. **自动模块(Automatic Modules)**:对于那些不能明确声明模块描述符的库,Java 9会尝试将其识别为自动模块。自动模块的命名基于JAR文件的名称,并且可能需要手动调整来确保正确引用。 5. **命令行工具**:Java 9引入了一些新的命令行工具,如`jlink`用于创建定制的运行时映像,`jmod`用于创建和管理模块文件,以及`jdeps`用于分析依赖关系。 6. **接口私有方法(Private Interface Methods)**:Java 9允许在接口中定义私有方法,增强了接口的功能,使得它们可以作为默认方法实现的内部逻辑。 7. **反应式流API(Reactive Streams)**:Java 9通过`java.util.concurrent.Flow`包提供了对反应式流规范的支持,这是为异步编程和高并发场景设计的一组接口。 8. **JShell(也称为REPL,Read-Eval-Print Loop)**:这是一个新的命令行工具,允许开发者即时测试和调试Java代码片段,极大地提高了开发效率。 9. **HTTP客户端API(HTTP Client API)**:Java 9引入了一个新的内置HTTP客户端API(`java.net.http.HttpClient`),提供了一种简单且高效的HTTP/2和HTTP/1.1支持。 10. **多版本兼容JAR(Multi-Release JARs)**:这种新特性允许JAR文件包含针对不同Java版本的代码,使得库开发者可以利用新版本的特性,同时保持向后兼容。 11. **进程API增强**:Java 9改进了进程API,提供了更强大的子进程控制能力,如进程输入输出重定向和管道。 通过学习这些核心概念,开发者能够充分利用Java 9的新功能,提高代码的组织性和效率,同时更好地适应现代软件开发的需求。无论是新手还是经验丰富的Java开发者,这本书都提供了一个全面了解和掌握Java 9新特性的宝贵资源。