日积月累---JVM01

Java体系结构包括四个独立但相关的技术:

Java程序设计语言

Java class文件格式

Java应用编程接口

Java虚拟机

用Java编程语言编写源代码,把它编译成Java class文件,然后再在Java虚拟机运行class文件。当编写程序时,通过调用类(这些类实现了Java API)中的方法来访问系统资源(比如I/O)。当程序运行时,它通过调用class文件中实现了Java API的方法来满足程序的Java API调用。这里就可以看到四者的联系。

Java 虚拟机包含类装载器(class loader)和执行引擎,程序的class文件和Java API的class文件由类装载器装载,字节码由执行引擎来执行。

一个Java应用程序可以使用两种类装载器:“启动”(bootstrap)类装载器和用户定义的类装载器。启动类装载器(这是系统中唯一的)是Java虚拟机实现的一部分。

Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自定义的方式来装载类。

每一个类被装载的时候,Java虚拟机都监视这个类,看它到底是被启动类装载器还是被用户定义类装载器装载。当被装载的类引用了另外一个类时,虚拟机就会使用装载第一个类的类装载器装载被引用的类。

Java class文件:主要在平台无关性和网络移动性方面使Java更适应于网络。

平台无关性:为Java程序提供了独立于底层主机平台的二进制形式的服务。

网络移动性:class文件设计紧凑,因此他们可以快速地在网络上传送。Java程序时动态连接和动态扩展的,class文件在需要的时候才下载。

Java API:Java API是运行库的集合,它提供了一套访问主机系统资源的标准方法。

Java中有两种方法:Java方法和本地方法。

Java方法由Java语言编写,编译成字节码,存储在class文件中。

本地方法是由其他语言(比如c、c++,或者汇编语言)编写的,编译成和处理器相关的机器代码。本地方法保存在动态连接库中,格式是各个平台专有的。Java方法是与平台无关的,但是本地方法却不是。通过本地方法,Java程序可以直接访问底层操作系统的资源。如果你这样用,你的程序就变成平台相关的,因为包含本地方法的动态库是和平台相关的。一个本地方法接口(Java Native  Interface,JNI)使得本地方法可以在特定主机系统的任何一个Java平台实现上运行。如果希望保证程序的平台无关性,那么只能通过Java API 来访问底层系统资源。

                                

原文地址:https://www.cnblogs.com/520lq/p/10670727.html