javac与java的编译与解释

众所周知java是跨平台的,那么java是怎样实现的呢。

  编译:生成可执行的文件,例如c++中利用g++生成的a.out,效率很高。但是不跨平台。

  解释:解释器把源文件一行一行的解释,跨平台但是效率不高。

  java综合了两者,先编译后解释。把.java文件编译成.class字节码文件:  

流程:java源代码文件(.java文件) --》java编译器(javac)--》java字节码文件(.class文件,与平台无关)--》java的解释器(java),执行java的字节码

         用买鱼来进行类比:

  java是跨平台的语言,从上面来看真正执行的不是二进制的代码,而是字节码,所以能很好的跨平台,

  java的执行实际上是在JVM(java Virtual Machine,java虚拟机)上解释执行的,java是跨平台的,而JVM不是跨平台的(JVM是由c语言编写的),java之所以能跨平台,本质原因是在于JVM不是跨平台的。

  解释:Java依赖于jvm运行。在不同的操作系统下有不同的jvm.jvm不是跨平台的。但是这不影响java程序。因为java程序是通过jvm间接和操作系统打交道。所以说java之所以能够跨平台本质是由于JVM不是跨平台的。

posted @ 2016-01-30 23:59  独钓寒江雪kq  阅读(389)  评论(0编辑  收藏  举报