Java1.0至Java8,其内置的类有四千多余,对应的便是在 rt.jar包中,但实际上,并没有任何一个应用程序,会将这些 Class全部都使用到;so,我们需要做的便是将rt.jar分解成更加易于管理的部分,这也便是 Module模块化的含义
- 这四千多类实际上是需要一些内部封装的类配合才能后起作用的,这些内部封装的类通常是不建议我们直接去使用,即,对使用者透明,如:sun.misc.Unsafe
- 因为很多的框架和库的开发人员,会通过这些东西来提高框架和库的性能和使用底层功能
模块化的关键优势,些许列举:
1.能够为你的应用程序去构建最小化的 run-time (Java运行时环境),这个 run-time中只包含你所需要的 module,其比完整的 run-time要小得多 (一个完整的 Java run-time可能有几百 MB那么大)
2.细化了访问控制粒度:在模块化之前,所有被 Public定义的类,在任何地方都能够被使用,只要你引入该对应的 jar包,然,这与我们原本的初衷是不同的,有些情况下,我们只想在该 jar包范围内去使用该 Public所修饰的类,so,Java9开始引入了模块化!
有了模块化,我们可以在自定义的模块中由自己去选择需要去暴露的 Package,因此,当模块间相互调用时,只需要引入涉及到的模块,对应模块中所暴露的 Package,在当前模块中也就可以去使用了;即对应的便是,原意是在有限范围内提供公开访问,在引入模块化之后,变为了模块外有限范围的公开访问和模块内的公开访问