java.exe与javaw.exe区别

姜小白- 2013-11-30 02:11:16
昨天看到下面的这几行代码

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的区别
...全文
1619 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
teemai 2013-12-02
  • 打赏
  • 举报
回复
引用 10 楼 magi1201 的回复:
引用 8 楼 huxiweng 的回复:
两个功能完全一样,除了:javaw是没有关联的控制台
关联的控制台,这个怎么理解呢,他们的区别我查到一些,也了解一些了,现在就是关联的控制台 这个词语不太理解,版主,给细讲一下呗
简单点说就是在javaw.exe中无法获取Console Methods to access the character-based console device, if any, associated with the current Java virtual machine. Whether a virtual machine has a console is dependent upon the underlying platform and also upon the manner in which the virtual machine is invoked. If the virtual machine is started from an interactive command line without redirecting the standard input and output streams then its console will exist and will typically be connected to the keyboard and display from which the virtual machine was launched. If the virtual machine is started automatically, for example by a background job scheduler, then it will typically not have a console. If this virtual machine has a console then it is represented by a unique instance of this class which can be obtained by invoking the System.console() method. If no console device is available then an invocation of that method will return null.
姜小白- 2013-12-02
  • 打赏
  • 举报
回复
引用 8 楼 huxiweng 的回复:
两个功能完全一样,除了:javaw是没有关联的控制台
关联的控制台,这个怎么理解呢,他们的区别我查到一些,也了解一些了,现在就是关联的控制台 这个词语不太理解,版主,给细讲一下呗
___________小P 2013-12-02
  • 打赏
  • 举报
回复
两个功能完全一样
teemai 2013-12-02
  • 打赏
  • 举报
回复
两个功能完全一样,除了:javaw是没有关联的控制台
时光清浅 2013-12-02
  • 打赏
  • 举报
回复
5楼的意思很清楚了。 System.console()在javaw.exe(Eclipse中运行) 返回的是一个空对象。 在java.exe(DOS下运行) 返回的是一个实例。 楼主,java控制台输入还是用Scanner类吧!
姜小白- 2013-12-02
  • 打赏
  • 举报
回复
引用 5 楼 kslion 的回复:
感觉楼主可以这样来理解区别: 1、java启动的程序是命令行程序或阻塞程序,如果该程序未执行完毕或未被关闭,则所打开的命令行将被阻塞,不能执行其它命令如dir等,可以通过Ctrl+C等方式关闭程序; 2、javaw启动的程序是窗口程序或非阻塞程序,在使用该命令运行程序后,可接着在命令行中执行下一命令,且启动的程序与命令行无关不依赖命令行,不能通过Ctrl+C关闭
恩 线程阻塞的这个区别之前看到了,大牛能否解释下
String str=System.console().readLine();
在java 和 javaw 里面执行时获取控制台的情况
kslion 2013-12-02
  • 打赏
  • 举报
回复
感觉楼主可以这样来理解区别: 1、java启动的程序是命令行程序或阻塞程序,如果该程序未执行完毕或未被关闭,则所打开的命令行将被阻塞,不能执行其它命令如dir等,可以通过Ctrl+C等方式关闭程序; 2、javaw启动的程序是窗口程序或非阻塞程序,在使用该命令运行程序后,可接着在命令行中执行下一命令,且启动的程序与命令行无关不依赖命令行,不能通过Ctrl+C关闭
姜小白- 2013-12-02
  • 打赏
  • 举报
回复
周一了,大牛们都上班了,顶一下,看还有没有不同的答案,见解
kslion 2013-12-02
  • 打赏
  • 举报
回复
有点忙,不好意思。 这个console对象是从JDK1.6中引入的,我搞好几年java在项目中没用到过Console,抱歉啊。楼主了解一个新东西,可像版主那样,从基本的JDK提供的API文档看起,里面也提供了示例,尝试着用一下所提供的方法,再跟现有技术对比。 从Console的API来看,也就是读取输入,楼主把它跟Scanner作下对比搞篇文章加深印象,还希望到时分享一下哦。
WayneXuan 2013-11-30
  • 打赏
  • 举报
回复
引用 2 楼 magi1201 的回复:
控制台是操作系统的,这句话怎么理解呢,请大牛讲详细一点
控制台就是命令行界面,win下是cmd.exe
姜小白- 2013-11-30
  • 打赏
  • 举报
回复
引用 1 楼 waynexuan 的回复:
控制台是操作系统提供的,System.console()也会得到这个控制台 java.exe是win32控制台应用,javaw.exe是一个win32的GUI应用,这是它们的根本区别
控制台是操作系统的,这句话怎么理解呢,请大牛讲详细一点
WayneXuan 2013-11-30
  • 打赏
  • 举报
回复
控制台是操作系统提供的,System.console()也会得到这个控制台 java.exe是win32控制台应用,javaw.exe是一个win32的GUI应用,这是它们的根本区别

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧