java / javaw / javaws之间的区别

时间:2011-11-19 14:35:41

标签: java java-web-start javaw

我想知道java / javaw / javaws之间有什么区别?我发现在Windows下,大多数Java都是使用javaw开始的。

5 个答案:

答案 0 :(得分:189)

请参阅以下文档:

  • java command1/javaw command2
      
        
    1. java 工具启动Java应用程序。它通过启动Java运行时环境,加载指定的类以及调用该类的main方法来实现此目的。
    2.   
    3. javaw 命令与java相同,但javaw没有关联的控制台窗口。当 想要显示命令提示符窗口时,请使用javaw
    4.   
  • javaws commandJava Web Start命令”

      

    javaws命令启动Java Web Start,它是Java网络启动协议(JNLP)的参考实现。 Java Web Start启动网络上托管的Java应用程序/小程序。

      如果指定了JNLP文件,javaws将启动JNLP文件中指定的Java应用程序/小程序。

      javaws启动程序具有当前版本中支持的一组选项。但是,可能会在将来的版本中删除这些选项。

    另见JDK 9 Release Notes Deprecated APIs, Features, and Options

      

    Java部署技术已弃用,将在以后的版本中删除
      Java Applet和WebStart功能,包括Applet API,Java插件,Java Applet Viewer,JNLP和Java Web Start,包括 javaws工具都在JDK中被弃用9 ,将在以后的版本中删除。

答案 1 :(得分:61)

java: java应用程序执行程序,它与控制台关联以显示输出/错误

javaw:(java窗口化)应用程序执行程序与控制台无关。所以没有输出/错误的显示。可用于以静默方式将输出/错误推送到文本文件。主要用于启动基于GUI的应用程序

javaws:(java web start)下载并运行分布式Web应用程序。再次没有关联控制台。

所有都是JRE的一部分并使用相同的JVM

答案 2 :(得分:9)

java.exe 与控制台关联,而 javaw.exe 没有任何此类关联。因此,当运行 java.exe 时,它会自动打开一个命令提示符窗口,其中显示输出和错误流。

答案 3 :(得分:6)

来自http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix32.60%2Fuser%2Fjava.html

  

javaw命令与java相同,只是javaw没有关联的控制台窗口。如果不希望显示命令提示符窗口,请使用javaw。如果失败,javaw启动程序会显示一个包含错误信息的窗口。

javaws适用于java web start应用程序,applet或类似我怀疑

的东西

答案 4 :(得分:0)

我检查了输出重定向是否与javaw兼容:

javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt

这意味着,如果Java应用程序通过System.out或System.err打印出任何内容,则将其写入该文件中,就像使用java(不带w)一样。尤其是在启动Java时,JRE可能会在错误输出管道上写入启动错误(找不到类)。在这方面,必须了解错误。我建议在调用javaw的任何情况下都使用控制台重定向。

相反,如果您使用

start java .... 1>log.txt 2>err.txt

使用Windows控制台启动命令,控制台输出重定向不适用于java和javaw。

解释,为什么这样:我认为javaw在OS上打开一个内部进程(足够使用java.lang.Process类),并将已知的输出重定向转移到该进程。如果在命令行上未提供任何重定向,则不会重定向任何内容,并且javaw的内部启动进程没有控制台输出。 java.lang.Process的行为类似。虚拟机也可以将此内部功能用于javaw。

如果您使用“启动”,则Windows控制台会为Windows创建一个新进程以在启动后执行命令,但是不幸的是,此机制并未对启动的子进程使用给定的重定向。