Qual é a diferença entre java
, javaw
e javaws
?
Eu encontrei no Windows a maioria do Java é iniciada javaw
.
Qual é a diferença entre java
, javaw
e javaws
?
Eu encontrei no Windows a maioria do Java é iniciada javaw
.
Respostas:
Consulte a documentação para:
java
comando 1 / javaw
comando 2
- A
java
ferramenta inicia um aplicativo Java. Isso é feito iniciando um ambiente de tempo de execução Java, carregando uma classe especificada e chamando omain
método dessa classe .- O
javaw
comando é idêntico ajava
, exceto pelo fato dejavaw
não haver uma janela do console associada. Usejavaw
quando você não quiser que uma janela do prompt de comando apareça.
javaws
comando , o " comando Java Web Start "
O
javaws
comando inicia o Java Web Start, que é a implementação de referência do Java Network Launching Protocol (JNLP). O Java Web Start lança aplicativos / applets Java hospedados em uma rede.
Se um arquivo JNLP for especificado, ativarájavaws
o aplicativo / applet Java especificado no arquivo JNLP.
Ojavaws
iniciador tem um conjunto de opções suportadas na versão atual. No entanto, as opções podem ser removidas em uma versão futura.
Consulte também APIs, recursos e opções descontinuadas das notas de versão do JDK 9 :
As tecnologias de implantação Java estão obsoletas e serão removidas em uma versão futura das funcionalidades
Java Applet e WebStart, incluindo a API Applet, o plug-in Java, o Java Applet Viewer, JNLP e Java Web Start, incluindo ajavaws
ferramenta , estão obsoletas no JDK 9 e será removido em uma versão futura.
java: executor de aplicativo Java associado a um console para exibir resultados / erros
javaw: executor de aplicativo (com janela Java ) não associado ao console. Portanto, nenhuma exibição de saída / erros. Pode ser usado para enviar silenciosamente a saída / erros para arquivos de texto. É usado principalmente para iniciar aplicativos baseados em GUI.
javaws: ( Java web start ) para baixar e executar os aplicativos da web distribuídos. Novamente, nenhum console está associado.
Todos fazem parte do JRE e usam a mesma JVM.
javaw
deveria estar no meu caminho? (Não é)
O java.exe está associado ao console, enquanto o javaw.exe não possui essa associação. Portanto, quando o java.exe é executado, ele abre automaticamente uma janela de prompt de comando onde os fluxos de saída e erro são mostrados.
O comando javaw é idêntico ao java, exceto que o javaw não possui uma janela do console associada. Use javaw quando não desejar que uma janela do prompt de comando seja exibida. O lançador javaw exibe uma janela com informações de erro, se falhar.
E o javaws é para aplicativos, applets ou algo do tipo Java Web Start, eu suspeitaria.
Eu verifiquei se o redirecionamento de saída funciona com javaw
:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
Isso significa que, se o aplicativo Java imprimir alguma coisa via System.out ou System.err, ele será gravado nesses arquivos, como também com o uso de java (sem w
). Especialmente na partida java
, o JRE pode gravar erros de partida (classe não encontrada) no tubo de saída de erro. A este respeito, é essencial conhecer os erros. Sugiro usar o redirecionamento do console em qualquer caso, se javaw
for chamado.
Ao contrário, se você usar
start java .... 1>log.txt 2>err.txt
Com o start
comando do console do Windows , o redirecionamento de saída do console não funciona java
nem com javaw
.
Explicação do motivo: acho que javaw
abre um processo interno no sistema operacional (adequado usando a classe java.lang.Process) e transfere um redirecionamento de saída conhecido para esse processo. Se nenhum redirecionamento for fornecido na linha de comando, nada será redirecionado e o processo interno iniciado para javaw
não terá nenhuma saída do console. O comportamento do java.lang.Process é semelhante. A máquina virtual também pode usar esse recurso interno javaw
.
Se você usar 'start', o console do Windows criará um novo processo para o Windows executar o comando após o início, mas esse mecanismo não usa um determinado redirecionamento para o subprocesso iniciado, infelizmente.
java -cp ...
. Como quase ninguém quer isso,javaw
é a opção de fazer essa janela irritante desaparecer.