La mejor manera de averiguarlo es probarlo y ver; p.ej. use java -verbose.
para ejecutar el programa mínimo en una variedad de lenguajes alojados en JVM.
Pero la respuesta es probable que sea:
- versión de la JVM específica, y
- lenguaje de programación específico.
Debo señalar también que la (s) respuesta (s) que obtenga no serán de ninguna utilidad práctica (... a menos que planee crear un JRE reducido, y si ese es el caso, lea el seguimiento a continuación.)
¿Sabe si todas las clases son estrictamente necesarias o la VM también precarga las clases que espera que sean utilizadas en todos los casos por las aplicaciones?
La JVM no precarga cosas sobre esa base. Más bien, carga el cierre de dependencia del que su código depende estáticamente. Dependiendo de las clases que use su aplicación, esto puede dar como resultado la carga de clases que realmente no se utilizan. Los ingenieros de Sun han trabajado arduamente para tratar de reducir este efecto a lo largo de los años, pero, sin duda, aún sucede en cierta medida.
SEGUIMIENTO
Leyendo entre líneas, parece que la intención es crear un paquete JVM corte hacia abajo para soportar los requisitos de tiempo de ejecución de algún otro idioma.Si es así, tenga en cuenta estos puntos:
Hay requisitos de licencia sobre lo que puede hacer con Java vis-a-vis la creación de versiones de corte hacia abajo. Específicamente, Java, JVM y JRE son términos de marca registrada, y Oracle podría ser que venga después de usted si los usa en el contexto de un JRE reducido. (No estoy diciendo que no pueda hacerlo, pero haga necesita verificar los aspectos legales para usted).
Definitivamente hay problemas de soporte. Por ejemplo, necesita rastrear los parches y problemas de seguridad relevantes de Java/JVM y crear nuevas versiones de su plataforma base como necesarias.
Si tiene la intención de proporcionar alguna forma de que los programas de aplicación en su nuevo idioma llamen a las bibliotecas Java, entonces usar un JRE reducido podría ser un serio inconveniente para algunos usuarios. Especialmente si empacas tus cosas de una manera que signifique que tienen que usar tu JRE reducido.
Hay herramientas en un JRE/JDK que pueden ser útiles para usted/sus usuarios. Herramientas como perfiladores, depuradores, el comando JAR, etc. Su JRE debería incluir todas las clases necesarias para ejecutarlos.
Finalmente, una descarga de 100Mb no es un problema significativo para la MAYORÍA DE VARONES de los usuarios. Y si lo es, podría ganar un poco de dinero para respaldar su proyecto vendiendo DVD instaladores.
Enfóquese en lo que sea que realmente esté tratando de hacer aquí ... y deje la optimización del instalador cuando tenga algo de calidad de producción para optimizar.
Probablemente dependa de lo que quiere decir con "iniciar" la máquina virtual. ¿Tiene que incluir un cargador de clases más dependencias para cargar un programa? –
¿Por qué está etiquetado 'language-agnostic'? – casablanca
Porque la JVM solo ejecuta bytecode. Hay múltiples lenguajes y compiladores que pueden generar ese bytecode. – soc