java9学习笔记1-模块系统

  • exports
    导出包,使得被导出的包可以被new,以及反射访问public类以及public属性
  • open
    开放包,或者开放模块,使得 可以被深度反射访问(但不能被new等操作)
    使用open模块时,如果不require该模块,则需要在javac 命令中加入参数 --add-modules 模块名称,模块名称
  • require
    加入依赖
    requires [transitive] [static] ;
    transitive :隐式依赖 static:运行时可选依赖

模块创建规则

  • 在同一个项目中.如果存在多个模块,那么这些模块中不能包含相同的 包名
  • 模块系统没有子模块的概念。 也就是说,com.jdojo.person和com.jdojo.person.client是两个单独的模块; 第二个不是第一个的子模块

模块类型

  • 普通模块(Normal modules)
  • 开发模块(Open modules)
  • 自动模块(Automatic modules)
    1 模块名称生成规则
    2 默认导出所有,开放模块
    3 因为没有办法指定require,因此运行时,需要增加 --add-modules
  • 未命名模块(Unnamed modules)
    1 未命名模块访问 普通模块,同样需要在编译和运行时 --add-modules
    2 普通模块访问 未命名模块,需要将编译和运行时 -classpath 未命名模块路径,且仅能使用反射访问,或者用自动模块作为桥梁

你可能感兴趣的:(java9学习笔记1-模块系统)