JAVA体系结构:JAVA设计语言,JAVA Class文件,JAVA API,JAVA虚拟机。
一、java虚拟机:
1、java虚拟机的主要任务是装载class我呢间并且执行其中的字节码。java虚拟机包含一个类装载器,他可以从程序和API中装载class文件。
JAVA API中只有程序执行时那些需要的类才能被装载。字节码由执行引擎来执行。
Java虚拟机:1、一种简单的执行引擎,是一次性解释字节码。2、执行引擎很快,消耗内存,在这种情况下,第一次被执行的字节码会被翻译成本地机器代码,
编译出的本地机器代码会缓存,当方法调用的时候可以重用。3、第三种执行引擎是自适应优化器。在这种方法里,虚拟机开始的时候解释字节码,但是会监事运行中程序的
活动,并且记录最频繁的代码段。只把最频繁的代码段翻译成本地机器代码。
2、当java虚拟机是由主机上的操作系统的软件实现的时候,java程序通过调用本地方法和主机交互。java中有两种方法,JAVA方法和本地方法。java方法编译成字节码,存储在class文件中,本地方法是由其他语言编写的,编译成和处理器相关的机器代码。本地方法保存在动态链接库中,格式是各个平台有的。运行中的Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。通过本地方法,java程序可以直接访问底层的操作系统的而资源。java本地接口(JNI)使得本地方法可以在特定主机系统的任何一个java平台实现上运行。然而java平台供应商不一定必须支持JNI.
二、类装载器的体系结构
1.类装载器有两种: 启动类装载器和用户自定义的类的装载器。启动类装载器是Java虚拟机实现的一部分。启动类装载器通常使用某种默认方式从本地磁盘中装载类,包括Java API的类。启动类装载器也被称为原始类装载、系统类装载器或者默认装载器。
Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自定义的方式来装载类。
2.每个类被装载的时候,Java虚拟机都监视这个类,看它到底是被启动类装载器还是被用户自定义类装载器装载。当被装载的类引用了另外一个类
时,虚拟机就会使用装载第一个类的类装载器 -->去装载
被引用的类。即比如,虚拟机会使用一个特定类装载器装载了Volcano类,它也会使用这个类装载器-->装载Volcano类中所引用到的所有
类。
3.由于Java虚拟机采用2所述的这种方式进行类的装载,所以被装载类 默认情况下只能看到被同一个类装载器装载的别的类。
通过这种方法,Java的体系结构允许在一个Java应用程序中建立多个命名空间,运行时的java程序中的每一个类装载器都有它自己的命名空间。
4. 一个Java应用程序能够从同一个类 或者 多个类 中 实例化 多个用户定义的 类装载器。(这句话好好理解下子)而,被不同类装载器装载的类存放在不同的命名空间中,它们不能相互访问,除非应用程序显示允许这样做。通过这种方法,就能够阻止恶意代码获取访问和破坏善意代码的权限。
三、java class文件
java class文件主要在平台无关性和网络移动性方面使得java更适应于网络。在平台无关性方面的任务是:为java程序提供独立于底层主机平台的二进制形式的服务。除了平台的无关性设计方面,java class文件设计的紧凑,可以很快在网络上传送。java程序的动态链接和动态扩展,class文件在需要的时候才被下载。
四、java API
java API是一套运行库的集合,他提供一套访问知己系统资源的标准方法。java API上的class文件天生就与主机平台密切相关。在一个平台能够支持java程序之前,必须在这个平台上特定的明确实现API的功能。为访问主机上的本地资源,java API调用了本地方法。java api为底层主机提供了具有平台无关性的标准接口的java程序。
五、java程序设计语言
面向对象、多线程、结构化错误处理、垃圾收集、动态链接、动态扩展。