我试图理解java模块化项目的这两个原则/特性之间的区别或联系。
我试图通过减少外部库/模块的使用来最小化jre的大小。
为了做到这一点,我做了一些快速的研究,我发现这两个“原则”可能会帮助我。
现在,我不明白这两件事是不同的,还是它们之间有某种联系。我应该如何使用这些来达到我的目标?你能具体说明一下对我来说什么是最好的解决方案吗?在module-info.java中,我是否必须手动指定我需要什么?
是否有可能生成module-info.java文件(我想不是,但我只是问问。我可以用jdk亚马逊correto 11吗?
1条答案
按热度按时间zxlwwiss1#
你实际上发布了多个问题。
我试图通过减少外部库/模块的使用来最小化jre的大小。
少依赖总是一个好目标。jigsaw/jpms不会帮到你。相反:事实上,您可能会得到同一依赖项的多个版本,这在以前是不可能的。
提示:jlink和jigsaw/jpms不能帮助您减少依赖性。
我应该如何使用这些来达到我的目标?
如果您的目标是让应用程序附带一个精简的jvm,那么您应该研究jlink二进制文件,它是自java9以来jdk的一部分。
如果您使用的是maven,那么可以使用maven jlink插件来调用它。gradle甚至maven都有类似的插件(例如javafx特定的插件)。
你能具体说明一下对我来说什么是最好的解决方案吗?
这是我们无法回答的。ymmv–也许quarkus也值得一看,它创建了本机映像(是的,依赖于操作系统和架构的本机二进制文件)。
在module-info.java中,我是否必须手动指定我需要什么?
是的,你的模块。如果使用maven将module-info.class文件注入到依赖项中,则可以使用moditect,至少在将maven用作构建系统时是这样。
是否有可能生成module-info.java文件?我想不是,但我只是问)
已经在评论中回答了,是的,通过使用jdeps。
我可以用jdk亚马逊correto 11吗?
是的,它们还提供jlink和jdeps。