博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java是如何运行的

Posted on 2011-06-02 11:05  天地玄黄  阅读(3988)  评论(0编辑  收藏  举报

      1、Java的源代码是.java文件,使用compiler(即javac命令)把源文件编程.class文件,这个文件是java的byte code文件。然后使用java虚拟机(JVM)来运行这个中间代码,就可以得到想要的结果。运行JVM使用的命令是java <your_class>。

           在JVM中有JIT(just-in-time) compiler, 是JIT把byte code转换成native machine code。 The JIT compiler translates the Java bytecode into native processor instructions at run-time and caches the native code in memory during execution.[3]

           Java虽然是platform independent,但是JVM却不是。对于不同的操作系统和不同的CPU架构,有不同的JVM与之对应。JVM就是这样屏蔽底层硬件差异,使得Java program可以在任何平台上无差别的运行。[3]

image

 

      2、Java依赖于JVM来运行它的程序。同时Java也依赖于Java Platform。Java Platform是由很多类(classes)构成的,这些类又被组织成为packages,每个package完成一项比较庞大的功能,比如networking, graphics, input/output, user-interface creation, 以及security。[1]

 

      3、由于Java是在JVM上运行的,这并不是一个真实的硬件环境(寄存器啦、内存啦、指令操作啦等等),而仅仅是一个在内存中存在的虚拟的环境。所以,JVM这个软件如果编的不好,就会使得代码运行出错。不同机器上的JVM如果有差异,代码运行时也有可能会出现不同。[1]

 

      4、JRE中包含JVM。JDK又包含JRE。JRE和操作系统进行交互。操作系统会提供各种system calls,通过这些system calls,就可以对硬件进行操作(让硬件来执行指令).[2]

image

 

      5、Java的语法结构借鉴的是C和C++的。Java的面向对象的特性借鉴的是Smalltalk和Object-C的。[3]

 

      6、Java的每个Object都是在Heap中分配的(即动态分配的),all variables of object types are references. Java的内存管理是通过JVM的garbage collection统一管理的,因此比较简单。[3]

 

 

      [1]  HOW JAVA WORKS: http://ecommerce.hostip.info/pages/643/Java.html

      [2]  How the Java virtual machine (JVM) works: http://www.codeproject.com/KB/java/How_JVM_Works.aspx

      [2]  Java (sotfware platform): http://en.wikipedia.org/wiki/Java_(software_platform)