在开始这篇文章的学习之前,希望您先学习前一篇的内容《使用jlink工具模块化Java应用,结合Docker优化容器镜像(上)》,对jlink和Docker有一个初步了解,会更有助于您理解下面的内容。如果您已经掌握了jlink和Docker的基础内容,请直接往下阅读学习。
构建一个自定义启动程序
Hello World是一个除了java.base之外不需要其它模块的应用。像java.lang这样的包都是被隐式导入应用的,所以这个模块是被自动导入的。
为了构建一个更小的定制化可执行文件,第一步就是将应用移植到系统模块中。如前面的描述,jlink可以单独运行模块化后的应用,因为它依赖的是module-info文件。
因为这个应用只需要java.base模块,所以直接这样创建一个module-info.java描述这个模块:
// module-info.java
module ch.frankel.jlink {
exports ch.frankel.blog.jlink;
}
jlink的特点就是优化一个应用,使之只保留将会被使用到的模块。此外,它可以用优化后的应用版本创建一个独立的可执行文件。因为我们的应用现在利用的是系统模块,所以它可以用来创建一个专用的启动程序。但是jlink需要一个现有的