
Decifrando diferenças entre _JAVA_OPTIONS, JAVA_TOOL_OPTIONS e JAVA_OPTS
No domínio da configuração da Java Virtual Machine (JVM), três variáveis de ambiente servem a propósitos distintos: _JAVA_OPTIONS, JAVA_TOOL_OPTIONS, e JAVA_OPTS. Embora JAVA_OPTS seja externo à JVM, os outros dois fornecem uma alternativa aos parâmetros de linha de comando para especificar argumentos JVM.
_JAVA_OPTIONS vs. variáveis de ambiente. No entanto, eles diferem em sua precedência e escopo. _JAVA_OPTIONS tem a precedência mais alta, substituindo quaisquer configurações especificadas em JAVA_TOOL_OPTIONS ou parâmetros de linha de comando. Em contraste, JAVA_TOOL_OPTIONS tem a precedência mais baixa, sendo substituído por _JAVA_OPTIONS e argumentos de linha de comando.
Aplicabilidade
JAVA_TOOL_OPTIONS e _JAVA_OPTIONS são utilizados por vários executáveis dentro do ecossistema Java. Além de Java e javac, eles também são escolhidos por Javadoc, jar e Java Native Interface (JNI).
Limitações
Embora não haja restrições explícitas sobre os argumentos que podem incluídas em JAVA_TOOL_OPTIONS e _JAVA_OPTIONS, configurações incorretas ou conflitantes podem levar a um comportamento inesperado. É aconselhável priorizar o uso de parâmetros de linha de comando, reservando essas variáveis de ambiente para cenários onde a modificação da linha de comando é impraticável ou impossível.
Advertências
É importante observar que _JAVA_OPTIONS é não documentado e seu uso não é recomendado. Não há garantia de que futuras implementações de JVM suportarão esta variável. Além disso, lembre-se de que a ordem de precedência é _JAVA_OPTIONS > argumentos de linha de comando > JAVA_TOOL_OPTIONS.