概述
2019独角兽企业重金招聘Python工程师标准>>>
jdk9 模块定义
JDK9定义了以下几个模块
普通模块(有module-info.java文件)
开放模块(与普通模块类似,只是前面多了一个open关键字,所有类可反射,包含私有方法)
匿名模块(无module-info.java文件,一般是JDK9以前的JAR包),匿名模块在JDK9里面会成为自动模块
自动模块与普通模块的区别,自动模块也就是匿名模块,它实际相当于一个open模块,里面的所有类可以被反射,自动模块调用普通模块需要遵循模块规则。
jdk9 模块关键字
一般在源代码根目录下写一个固定的module-info.java文件
module XXXX{} 定义一个普通模块
open module XXX{} 定义一个开放模块 可以反射所有
require module name 写在模块里面,需要依赖某个模块
require static module name 编译必须,运行不需要
export package 导出该包下的所有的public修饰的类,可以反射
export package to module name 导出该包下的所有的public修饰的类给某个模块使用,可以反射
opens package to module name 开放该包下所有的类
uses 在当前模块下加载服务
provides interface name with implemnet name 在当前模块下定义服务名,多个实现类用逗号隔开
ServiceLoader 加载服务,需要在META-INFO/services/目录下,创建以接口全名为名称的配置文件,内容为实现类的全名称,多个实现类换行分隔
jdk9 模块打包
编译 -d 设置编译后文件存放路径
javac -d mods -encoding utf-8 src/main/java/com/city/City.java src/main/java/module-info.java
javac -d mods -encoding utf-8 -p ../city/mods src/main/java/com/school/School.java src/main/java/module-info.java
运行模块内的主文件
java -p mods;../city/mods -m school/com.school.School
创建jmod包
jmod create school.jmod -p mods
输出jlink
jlink --module-path "%JAVA_HOME%"jmods --add-modules school.jmod --output link
转载于:https://my.oschina.net/u/3217171/blog/3033810
最后
以上就是俊秀白云为你收集整理的jdk9 模块简介(非常简)jdk9 模块定义jdk9 模块关键字jdk9 模块打包的全部内容,希望文章能够帮你解决jdk9 模块简介(非常简)jdk9 模块定义jdk9 模块关键字jdk9 模块打包所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复