黑马程序员技术交流社区

标题: 为什么编JAVA时候,要分别运行两次javac和java呢? [打印本页]

作者: 张洁    时间: 2012-6-5 11:35
标题: 为什么编JAVA时候,要分别运行两次javac和java呢?
感觉这个设置不太好啊,为什么不修改下,改成直接输入:java+文件名字

因为输入的时候又是javac ,又是java不加c
javac的时候又要加后缀名.java,java的时候又不要加后缀。。。

为什么不能改成直接java+文件名呢  然后其他步骤由系统自己自动执行?

求解惑,不要回答太复杂哦~
作者: 邵阳    时间: 2012-6-5 11:54
首先楼主善于思考,不过楼主没考虑到一点就是javac也有自己的作用,而不是简单单的一个中间步骤。
举个形象的例子来解释一下。
javac就相当于通过编码生成一个的音乐播放器,它就存在那里,我们如果不点击开始播放,它就不会播放音乐。    而java就相当于那个开始播放按钮,是执行播放任务。试想如果你的音乐播放器一直播放音乐,而没有停止和播放键,是不是很郁闷啊。可能例子不太恰当,不过原理是这个。

作者: 庄星睿    时间: 2012-6-5 11:58
这是因为java语言是一种特殊的高级语言,它既具有解释型语言的特征,也具有编译型语言的特征,因为java程序要先经过编译即 java  文件名.java
生成 .class字节码文件,与平台无关的字节码文件,它必须使用java解释器来解释执行,java 文件名
其实java语言里负责解释执行的字节码文件的就是java虚拟机JVM,我们编译的文件都是面向JVM的,都必须通过JVM进行解释,JVM就相当于一个翻译一样,当然不同
平台(操作系统)上的jvm是不同的,就好像我们有两支 不同的笔,但要把同一个笔帽套在两支不同的笔上,只有为这两支笔提供一个转换器,即这个转换器向上的
接口相同,用于适应同一个笔帽,向下的接口不同,用于适用两个不同的笔。也就是说所有平台上的JVM向上提供给java字节码程序的接口完全相同,但向下适应不同平台
的接口则互不相同。
希望我这么回答你能理解,哈{:soso_e100:}


作者: 刘蕴学    时间: 2012-6-5 12:02
庄星睿 发表于 2012-6-5 11:58
这是因为java语言是一种特殊的高级语言,它既具有解释型语言的特征,也具有编译型语言的特征,因为java程序 ...

你想不这么麻烦,其实也行,动态字节码技术,但程序驱动方面仍然还得做一些正规的编译
作者: 黄克帅    时间: 2012-6-5 14:20
如果有编译时期的错误怎么办。 直接运行后来解决不更麻烦?
你想直接运行也可以 ,用高级工具 ,比如eclipse  myeclipse   你敲代码就编译了,有编译错误就马上能发现。 不用你手动去编译,就可以直接运行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2