java、javaw和javaws之间的区别是什么?
我发现在Windows上,Java的大部分使用都是使用javaw完成的。
java、javaw和javaws之间的区别是什么?
我发现在Windows上,Java的大部分使用都是使用javaw完成的。
请参阅Java工具文档:
Java command1/javaw command2
java工具启动java应用程序。它通过启动Java运行时环境、加载指定的类并调用该类的main方法来实现这一点。 javaw命令与java相同,只是javaw没有相关的控制台窗口。当您不希望出现命令提示窗口时,请使用javaw。
javaws命令,“Java Web Start命令”
javaws命令启动Java Web Start,这是Java网络启动协议(Java Network Launching Protocol, JNLP)的参考实现。Java Web Start启动托管在网络上的Java应用程序/小程序。 如果指定了JNLP文件,javaws将启动JNLP文件中指定的Java应用程序/applet。 javaws启动器有一组当前版本支持的选项。但是,在将来的版本中可能会删除这些选项。
参见JDK 9发布说明 已弃用的api、功能和选项:
Java部署技术已弃用,将在未来的版本中删除 Java Applet和WebStart功能,包括Applet API、Java插件、Java Applet Viewer、JNLP和Java WebStart,包括javaws工具,在JDK 9中都已弃用,并将在未来的版本中删除。
从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启动应用程序,applet,或者类似的东西。
java: java应用程序执行器,与控制台相关联,用于显示输出/错误
javaw: (Java窗口)应用程序执行程序没有与控制台相关联。因此不显示输出/错误。它可以用于将输出/错误无声地推送到文本文件。它主要用于启动基于gui的应用程序。
javaws:(Java web start)下载并运行分布式web应用程序。同样,没有关联控制台。
它们都是JRE的一部分,并使用相同的JVM。
我已经检查了输出重定向工作与javaw:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
这意味着,如果Java应用程序通过System打印任何东西。退出或系统。err,它被写入这些文件,使用java也是如此(没有w)。特别是在启动java时,JRE可能会在错误输出管道上写入启动错误(类未找到)。在这方面,了解错误是必要的。如果调用javaw,我建议在任何情况下都使用控制台重定向。
如果你用反义词
start java .... 1>log.txt 2>err.txt
使用Windows控制台start命令,控制台输出重定向在java和javaw下都不能工作。
解释如下:我认为javaw在操作系统中打开一个内部进程(充分使用java.lang.Process类),并将一个已知的输出重定向传递给这个进程。如果没有在命令行上给出重定向,则没有任何内容被重定向,并且javaw的内部启动进程没有任何控制台输出。process的行为与此类似。虚拟机也可以将这个内部特性用于javaw。
如果你使用'start', Windows控制台会在启动后为Windows创建一个新进程来执行命令,但不幸的是,这种机制不会为已启动的子进程使用给定的重定向。