Java 9 模块化系统(JPMS)简介
Java 9 模块系统,也被称为 Java 平台模块系统 (JPMS),它是 Java 9 的核心特性之一,用于改进 Java 的大型应用的封装性和可维护性。
JPMS 的主要功能如下:
- 模块化代码:JPMS 允许你将代码库划分为不同的模块,在没有显示声明的情况下,模块内部的类不会暴露给其他模块。
- 更好的封装:JPMS 提供更强大的封装机制。你可以将内部的 API 和类隐藏起来,只暴露需要公开的接口和服务。
- 显式依赖:在 JPMS 中,每一个模块都需要明确声明它所依赖的其他模块。这使得模块间的依赖关系更清晰、更易于管理。
- 改善性能:通过提前编译和优化模块加载,JPMS 可以提升Java应用的性能。
引入模块化系统的原因和目标
模块化系统引入的主要原因:
改善封装:在无模块化系统的情况下,Java的访问修饰符(public, private, protected, default)并不能完全满足代码隔离的需求。通过模块化,可以将内部类进行隐藏,只暴露需要公开的接口,提高了封装性。
解决JAR地狱:Java的类路径(classpath)导致了著名的"JAR hell"问题,也就是说,如果在类路径上有多个版本的同一jar文件,那么可能会导致应用程序故障。通过JPMS的显式依赖声明,可以很好避免此类问题。
模块化系统引入的主要目标:
- 可靠性配置:模块系统可以检查在编译时和运行时的依赖关系,这样可以确保每一个模块都是可靠的,避免了运行时才发现的错误。
- 更强大的封装能力:只有在模块声明中明确指定的包才可以被其他模块访问,这样提高了Java的封装性能力。
- 更优的性能:模块系统不仅可以减少Java应用运行时需要的内存占用,还可以提高应用的性能,因为JVM可以对模块进行更优化的处理