您的位置:首页 > 编程语言 > Java开发

java虚拟机学习之java体系结构

2017-10-09 10:03 309 查看
根据《深入Java虚拟机》学习Java虚拟机 只为自己能够加深印象

java 体系结构包括4个独立但相关技术

(1)Java程序设计语言 即撸代码

(2)Java class文件格式 这个倒是没有关注字节码的相关资料 导致对java虚拟机的理解不够深

(3)java应用编程接口(api) 我的理解就是java已知的开放供他人调用的接口代码或文档

(4)Java虚拟机 概念模糊

    四个技术的关系 大致为: 用Java编程语言编写源代码, 用编译器将Java文件编译成class文件,然后再java虚拟机上运行class文件。编写源代码时,通过调用类(api)中的方法来访问系统资源(比如i/o)。代码运行时,代码通过用class文件中实现了Java api的方法来满足程序的java api调用、
    java虚拟机和java api组成平台,所有Java程序都在上面编译,被称为运行时系统/Java平台

1.1.1 java虚拟机

    支持面向网络体系结构三大支柱所有方面:平台无关性(跨平台),安全性(沙箱机制)和网络移动性(需要程序时从网络上下载class文件)

    java虚拟机规范定义每个java虚拟机必须实现的特性,每个java虚拟机都必须能执行Java字节码,但是用何种技术来执行是可以选择的。



    图1.3中可以看到虚拟机包含类加载器,它可以从程序和api中装载class文件,api只有在程序执行需要的那些类才会被装载


执行引擎有三种实现方式:

    1.一次性解释字节码 (较慢)

    2.即时编译器  (将第一次被执行的字节码编译成本地机器代码,机器代码会被缓存,以后调用会重用)消耗内存

    3.自适应优化器(解释字节码时,会监事运行中程序的活动,记录活动频繁的代码段,将这段编译成本地代码并缓存)

    4.硬件芯片构成 内嵌在芯片中

java调用存在两种方法:

    1.java方法(Java方法是由Java语言编写,编译成字节码,存储在class文件里)

    2.本地方法(本地方法是由其他语言比如c,c++或者汇编语言编写的,编译成和处理器相关的机器代码 即每个平台的本地方法可能不一样,本地方法保存在动态链接库中,本地方法是联系java程序和底层的主机操作系统的连接方法)

    由于本地方法和平台相关,所以不能直接调用本地方法,不然就把程序变的和平台相关了。为此我们可以抽象出来一个本地方法接口,这样就可以调用不同的主机操作系统的相关的本地方法

1.1.2 类装载器的体系结构



类装载器代表的是一个或者多个类装载器的子系统,从而使Java程序得以用自定义的方式来实现类的装载

类装载类类型:

    1、启动类装载器(系统唯一 bootstrap)是Java虚拟机实现的一部分

    2、自动义类装载器 ,用Java编写,实际上只是运行中的Java程序可执行代码一部分,可运行时加载类,提高Java程序扩展

1.1.3 Java class 文件

    为java程序提供独立于底层主机平台的二进制形式的服务,这种字节码就是Java虚拟机的机器语言

1.1.4 Java api

    支持平台无关性和安全性,是Java程序和本地方法的中间桥梁

1.1.5 Java体系结构的代价

     java在网络环境下面向网络的特征非常明显,但是牺牲的代价是执行速度可能非常低,虽然有即时编辑器的诞生和开发者近期的努力执行速度可以和c++相媲美,但是Java号称在任何地方运行 那么必然会有不同系统上面对应的不同Java虚拟机上部署一套程序(分布式部署)很难保证执行结果一致

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: