Motivando a proposta está o desejo de preservar o dinamismo da plataforma Java enquanto reduz o custo desse dinamismo, que deve ser pago toda vez que um aplicativo é iniciado, diz a proposta. A plataforma Java altamente dinâmica tem recursos como carregamento dinâmico de classe, vinculação dinâmica e reflexão dinâmica, que dão poder expressivo aos desenvolvedores. Os desenvolvedores Java podem, por exemplo, escrever bibliotecas que carregam dinamicamente e então vinculam a componentes de plug-in em tempo de execução, ou montar aplicativos compondo bibliotecas que vinculam dinamicamente a outras bibliotecas. No entanto, todo esse dinamismo tem um preço, o que significa que a JVM faz muito trabalho durante a inicialização de um aplicativo de servidor típico, como escanear arquivos JAR no disco e carregar dados analisados em objetos de classe. E ela faz esse trabalho sob demanda, preguiçosamente, na hora certa. Como resultado, um aplicativo de servidor grande pode levar segundos ou até minutos para iniciar.
A chave para melhorar o tempo de inicialização é fazer parte desse trabalho antes do tempo, em vez de apenas na hora. Um objetivo específico da proposta é melhorar o tempo de inicialização explorando o fato de que a maioria dos aplicativos iniciam aproximadamente da mesma forma toda vez que são executados. Outros objetivos incluem:
- Não requer nenhuma alteração no código, aplicativos, bibliotecas ou estruturas.
- Não requer nenhuma alteração na forma como os aplicativos são iniciados a partir da linha de comando com o inicializador Java, além das opções de linha de comando relacionadas diretamente a esse recurso.
- Não requerendo o uso do
jlink
oujpackage
ferramentas. - Estabelecendo uma base para melhorias contínuas no tempo de inicialização e também no tempo de aquecimento, ou seja, o tempo necessário para que a HotSpot JVM otimize o código de um aplicativo para desempenho máximo.
A proposta ahead-of-time para class-loading e linking segue uma proposta anterior para ahead-of-time compilation para a JVM. Essa proposta está listada como em status de rascunho.