Лучший способ узнать это - попробовать и посмотреть; например используйте java -verbose.
для запуска минимальной программы на различных языках JVM.
Но ответ, вероятно, будет:
- для конкретной версии JVM и
- специфический язык программирования.
Я также должен отметить, что полученный вами ответ не будет иметь никакого практического применения (... если только вы не планируете создавать сокращенную JRE. И если это так, прочитайте приведенную ниже последовательность действий. .)
Знаете ли вы, являются ли все классы строго необходимыми, или виртуальная машина также предварительно загружает классы, которые она ожидает использовать во всех случаях приложениями?
JVM не загружает вещи на этой основе. Скорее, он загружает закрытие зависимостей, от которого статически зависит ваш код. В зависимости от того, какие классы использует ваше приложение, это может привести к загрузке классов, которые фактически не используются. Инженеры Sun проделали большую работу, пытаясь уменьшить этот эффект на протяжении многих лет, но это, несомненно, все еще происходит в некоторой степени.
СЛЕДУЙТЕ ЗА
Читая между строк, кажется, что целью является создание урезанного пакета JVM для поддержки требований времени выполнения какого-либо другого языка. Если так, рассмотрите эти пункты:
Существуют лицензионные требования в отношении того, что вы можете делать с Java в отношении создания урезанных версий. В частности, Java, JVM и JRE являются товарными знаками, и Oracle может последовать за вами, если вы будете использовать их в контексте сокращенной JRE. (Я не говорю, что вы не можете этого сделать, но вам нужно необходимо самостоятельно проверить юридические аспекты.)
Определенно есть проблемы с поддержкой. Например, вам необходимо отслеживать любые соответствующие проблемы безопасности и исправления Java / JVM и создавать новые версии базовой платформы по мере необходимости.
Если вы намереваетесь предоставить прикладным программам на вашем новом языке какой-либо способ вызова библиотек Java, то использование урезанной JRE может стать серьезной болью для некоторых пользователей. Особенно, если вы упаковываете свои вещи таким образом, что они должны использовать вашу сокращенную JRE.
В JRE / JDK есть инструменты, которые могут быть полезны вам / вашим пользователям. Инструменты, такие как профилировщики, отладчики, команда JAR и так далее. Ваша JRE должна включать все классы, необходимые для их запуска.
Наконец, загрузка 100 МБ не является существенной проблемой для БОЛЬШОГО БОЛЬШИНСТВА пользователей. И если это так, вы можете заработать немного денег для поддержки своего проекта, продавая установочные DVD-диски.
Сосредоточьтесь на том, что вы действительно пытаетесь сделать здесь ... и оставьте оптимизацию установщика, когда вам нужно оптимизировать качество производства.