Если вы скачаете JRE в Adopt и запустите java --list-modules
, вы получите следующее (я удалил версию для лучшей читабельности):
java.base
java.compiler
java.datatransfer
java.desktop
java.instrument
java.logging
java.management
java.management.rmi
java.naming
java.net.http
java.prefs
java.rmi
java.scripting
java.se
java.security.jgss
java.security.sasl
java.smartcardio
java.sql
java.sql.rowset
java.transaction.xa
java.xml
java.xml.crypto
jdk.accessibility
jdk.aot
jdk.charsets
jdk.crypto.cryptoki
jdk.crypto.ec
jdk.dynalink
jdk.httpserver
jdk.internal.ed
jdk.internal.le
jdk.internal.vm.ci
jdk.internal.vm.compiler
jdk.internal.vm.compiler.management
jdk.jdwp.agent
jdk.jfr
jdk.jsobject
jdk.localedata
jdk.management
jdk.management.agent
jdk.management.jfr
jdk.naming.dns
jdk.naming.rmi
jdk.net
jdk.pack
jdk.scripting.nashorn
jdk.scripting.nashorn.shell
jdk.sctp
jdk.security.auth
jdk.security.jgss
jdk.unsupported
jdk.xml.dom
jdk.zipfs
Если вы загрузите JDK и используете jlink --add-modules java.se
для создания image, вы получите следующее:
java.base
java.compiler
java.datatransfer
java.desktop
java.instrument
java.logging
java.management
java.management.rmi
java.naming
java.net.http
java.prefs
java.rmi
java.scripting
java.se
java.security.jgss
java.security.sasl
java.sql
java.sql.rowset
java.transaction.xa
java.xml
java.xml.crypto
Как видите, он не содержит jdk. * модулей, потому что они, строго говоря, не нужны для работы среды выполнения. Тем не менее, их отсутствие будет замечено, например, без jdk.localedata , будут работать только локали Engli sh (или, может быть, даже только США).
Если вы попросите jlink
Службы привязки, вы получаете другую картину, но все же не то же самое, что JRE:
java.base
java.compiler
java.datatransfer
java.desktop
java.instrument
java.logging
java.management
java.management.rmi
java.naming
java.net.http
java.prefs
java.rmi
java.scripting
java.se
java.security.jgss
java.security.sasl
java.smartcardio
java.sql
java.sql.rowset
java.transaction.xa
java.xml
java.xml.crypto
jdk.charsets
jdk.compiler
jdk.crypto.cryptoki
jdk.crypto.ec
jdk.dynalink
jdk.internal.opt
jdk.jartool
jdk.javadoc
jdk.jdeps
jdk.jfr
jdk.jlink
jdk.localedata
jdk.management
jdk.management.jfr
jdk.naming.dns
jdk.naming.rmi
jdk.scripting.nashorn
jdk.security.auth
jdk.security.jgss
jdk.unsupported.desktop
jdk.zipfs
Наличие, например, jdk.compiler и jdk.javado c означает, что каталог bin
будет содержать инструменты javac
и javadoc
, вероятно, не то, что вы ожидаете от JRE.
Это говорит о том, что JRE в Adopt создается с указанием c список модулей. Если вы получили этот список модулей или просто используете приведенный выше список для создания образа среды выполнения, вы должны получить то же поведение, что и JRE, загруженный из AdoptOpenJDK.
Некоторые предостережения: (a) это просто мое предположение, поэтому не ставьте на него свой проект, (б) есть множество флагов, которые вы можете применить к jlink
, чтобы поиграть с результирующим изображением, например, символы сжатия или отладки полосы, которые повлияют на его размер, производительность (немного ) и отладочные способности.