JDK、JRE
1,编程环境 JDK |
①compile-time environment:.java—【Java compiler】—.class JDK ②move locally or though a network ③run-time environment: .class—+Java API .class— 【Java Virtual Machine 】 JRE |
2.运行机制 JRE |
Java program—【Java Platform of Opreation System】—【Opreation System】 |
3.JVM |
4.Java Program |
Java Program—Java methods(Java API)—native methods(dynamic libraries)—host operating system |
JVM
1.构成 |
类加载器 class loader 执行引擎 execution engine 输入——【class loader】—— bytecodes ——【execution engine】——输出 输入:Java program's class files + The Java API's class files 输出:Host Operating System |
2.软件实现 |
Java program's class files+The API'class files——【JVM】—— native method invocations—— 【Host operating system】 |
3.类加载器 class loader |
objects on the heap——part of the JVM implementation【bootstrap class loader】 |
Java Virtual Machine
Java Virtual Machine概念 |
抽象规范: 具体实现:全部软件或硬件和软件的组合 运行实例:运行实例承载单个正在运行的的Java应用程序 关系:每个Java应用程序都在JVM的抽象规范的一些具体实现的运行时实例内运行。 |
生命周期 |
Java Program运行,JVM实例诞生—Java Program完成,JVM实例终止 举例:Java虚拟机实例通过调用main()某些初始类的方法开始运行其单独的应用程序 关系:
- n个Java Program : n个JVM实例 - 1个实例:n个线程 |
体系结构 |
Java虚拟机规范中,虚拟机的实例是根据子系统,内存区域,数据类型和指令来描述的 【class loader subsystem】\【runtime data areas】\【execution engine】 类加载子系统 给定完全限定名称的情况下加载类型的机制 [类和接口] 执行引擎 负责执行加载类方法中包含的指令的机制 运行时数据区域 字节码和从加载的类文件的内存存储 [程序实例化的对象,方法的参数,返回值,局部变量和计算的中间结果] |
内部线程 |
初始线程:守护进程、非守护线程 守护线程:虚拟机本身使用的线程。如:执行垃圾收集线程 非守护线程: 线程共享的运行时数据区域 [一个实例:n条线程] 方法区 method area 类文件的类型信息 class data 堆 heap 实例化的对象 object 线程独有的运行时数据区域 [一条线程] 程序计数器 pc registers 值指向下一条执行的命令 堆栈 Java stacks 存储Java方法的调用状态[局部变量、参数、返回值、中间计算]—推送\弹出 说明:本机方法调用的状态 存储在本机方法堆栈中\寄存器\其他依赖于实现的存储区域 [以依赖实现的方式] |
数据类型 |
PrimitiveTypes 变量保存原始值 数字类型 NumericTypes Floating-Point Types float\double Integral Types byte\short\int\long\char[Unicode] 布尔类型 boolean returnAddress ReferenceTypes reference 变量保存参考值 类类型 class type 接口类型 interface types 数组类型 array types |