日期:2014-05-20  浏览次数:20883 次

java.exe与javaw.exe区别
昨天看到下面的这几行代码

public class Test {
    public static void main(String args[]){
        while(true){
            String str=System.console().readLine();
            System.out.println(str);
        }
   }

 首次知道,eclipse中运行java代码时,执行的是javaw.exe,而非java.exe。
下来找了下两者的区别,发现众多说法中都有这么个说法,java.exe是与控制台相关联的,而javaw.exe提供自己的GUI窗口,不启动控制台。请问,这里的控制台指的是System.console()吗?
还提到说java运行GUI以后堵塞在那里直到窗口关闭;javaw运行GUI后 直接就可以进行下一条命令的运行了。
请问下,java.exe与javaw.exe都有哪些区别,请提供相关资料或示例说明,谢谢。
参考资料 
java和 javaw 以及 javaws的区别 
java javaw

------解决方案--------------------
控制台是操作系统提供的,System.console()也会得到这个控制台
java.exe是win32控制台应用,javaw.exe是一个win32的GUI应用,这是它们的根本区别
------解决方案--------------------
感觉楼主可以这样来理解区别:
1、java启动的程序是命令行程序或阻塞程序,如果该程序未执行完毕或未被关闭,则所打开的命令行将被阻塞,不能执行其它命令如dir等,可以通过Ctrl+C等方式关闭程序
2、javaw启动的程序是窗口程序或非阻塞程序,在使用该命令运行程序后,可接着在命令行中执行下一命令,且启动的程序与命令行无关不依赖命令行,不能通过Ctrl+C关闭

------解决方案--------------------
5楼的意思很清楚了。

System.console()在javaw.exe(Eclipse中运行) 返回的是一个空对象。

在java.exe(DOS下运行) 返回的是一个实例。

楼主,java控制台输入还是用Scanner类吧!
------解决方案--------------------
两个功能完全一样,除了:javaw是没有关联的控制台