一、JVM介绍

一、概念

  • JVM是java virtual machine的简称,是java虚拟机,使用软件模拟java字节码的指令集;
  • 虚拟机:通过软件模拟具有完整硬件系统功能的、运行在隔离环境中的完整的计算机系统;

二、发展历史

  • 1996年 SUN发布JDK1.0 Classic VM;
  • 1997年发布JDK1.1 -AWT、内部类、JDBC、RMI、反射;
  • 1998年发布JDK1.2
    • 开始称为java2;
    • 精确数据类型管理,数据类型敏感;
    • 提升GC性能;
  • 2000年JDK1.3 Hotspot作为默认虚拟机发布;Hotspot是Longview Technologies开发 被SUN收购
  • 2002年JDK1.4 Classic VM退出;
  • 2004年JDK1.5 即JDK5
    • 泛型、注解、装箱、枚举、可变长参数、Foreach循环;
  • 2006年JDK1.6
    • java开源、并建立OpenJDk
    • HotSpot 成为Sun JDK和OpenJDK中所带的虚拟机
    • 脚本语言支持;
    • JDBC4.0;
    • Java编译器API提供;
  • 2008年Oracle收购BEA得到JRockti VM
  • 2010年Oracle收购SUN
  • 2011年JDK1.7
  • 2014年JDK1.8
    • Lambda表达式
    • 语法增强 Java类型注解
    • Stream API、Date Time API 、Optional 类、
  • 2017年JDK1.9

三、JVM规范

  • 满足JVM规范的语言(Scala、Groovy、Clojure)即可在JVM上运行;
  • 定义PC(指令存放)、堆、栈、方法区;
  • 原码、反码、补码
    • 原码:最高位为符号位,0表示整数、1表示负数;
    • 反码:整数反码是原码,负数反码符号位不变其余取反;
    • 补码:整数补码与原码一致,负数补码是反码+1;
    • 一补码表示整数好处:能正确表示0(正负)、能正确表示加法运算(正负)。
  • 特殊方法:(类的初始化)、(实例的初始化);
  • 提供一系列指令集,如:
    • l2i:long类型转int;
    • aload、astore:出入栈;
    • iadd、isub:加减;
    • ifeq、ifne:相等、不相等;
  • 提供基础支持,如:
    • 反射;
    • classloader:类装载(main);
    • 多线程;
    • 初始化

你可能感兴趣的:(一、JVM介绍)