Java может упаковать ваше приложение, включая только платформу Java
модули, которые фактически использует ваше приложение.
Начиная с Java 9, можно создавать пользовательских образов времени выполнения с помощью инструмента jlink .
По сути, пользовательский образ среды выполнения - это пакет, который содержит не только сторонние библиотеки, но и необходимые части JVM. Это своего рода автономный исполняемый образ, содержащий все необходимое для его запуска, без необходимости установки JRE в вашей ОС. Это хорошая функция, потому что вам не нужно беспокоиться, если у кого-то установлена конкретная версия JRE для запуска образа.
Теперь, я предполагаю, что предложение, на которое вы ссылаетесь, не хочет говорить о том, что размер JAR уменьшен по сравнению с JAR до Java-9 (немодулярного). Я думаю, что автор хотел сказать, что способность упаковывать только требуемые модули JVM уменьшает его размер по сравнению с JAR, который будет содержать всю JVM.
Например, представьте, что вы пишете приложение, которое использует только некоторые базовые API-интерфейсы Java, такие как коллекции, IO или API даты и времени (содержащиеся в модуле java.base ). Поскольку вы не используете API, такие как Swing ( java.desktop module) или JDBC ( java.sql module), вам не нужно иметь их в своем пакете. Следовательно, вы можете явно указать, какие java-модули использует ваше приложение (в файле module-info.java ), и только те из них будут включены в ваше приложение. В этом случае вы бы только добавили модуль java.base в список необходимых модулей. С другой стороны, если возникнет необходимость добавить доступ к базе данных к вашему приложению с помощью JDBC, вы добавите модуль java.sql в список модулей. Как вы можете видеть, нет необходимости иметь целую JVM в комплекте с вашим приложением , так как вы можете выбрать, какие модули JVM необходимы.