JAVA体系有四种规范:1.规范源文件2.class文件格式3.Java API 4.Java虚拟机 编译时段:java编译器javac将javac源文件编译成class文件,运行期用户的class文件和javaAPI的class文件在java虚拟机上协同工作。
java虚拟机最主要的作用是装载class文件和执行这些class文件所包含的字节码,这决定了java虚拟机的主要两个部件是:类装载器 class loader;执行引擎 execution egine;类装载器就是将用户的class和java Api里class文件装载到执行引擎,但是它仅仅只选择真正被用到的class进行装载。执行引擎的任务则是执行class文件中的字节码,由于class文件格式都遵循一种规范,所以执行引擎是可以有各种不同的方式来实现的,比如它可以是一个解释器,读一句字节码,生成一句机器码,然后执行它,这是典型的解释器行为,它可以在第一次执行某个方法时,将该方法编译成机器码,并缓存起来,下次该方法再被调用时它直接执行缓存的机器码,这是编译行为,所以并不是所有的java虚拟机都是解释器。Jni java native interface通过JNI,java允许你的程序调用任何其他语言写的方法,然而这样也将使你失去java平台无关的优势,建议只用java实现方法或只调用java Api 提供的native方法。