Java虚拟机初识

来源:互联网 发布:知乎评价章泽天长相 编辑:程序博客网 时间:2024/06/10 23:47

什么是JVM?

JVM是Java Virtual Machine的简称。意为Java虚拟机。作为Java可以进行一次编写,到处执行(Write once, run anywhere)的平台基础,由JVM帮工程师屏蔽了不同平台的差异性,提供了一致的编写接口。

虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

JVM使用软件模拟Java 字节码的指令集,从而可以进行class的加载以及执行。


JVM-java的演变历史


  1996年, JDK 1.0 classic VM, 纯解释执行,基于外挂进行JIT,落下了Java执行慢的坏名声
  1997 年   JDK 1.1  支持AWT、内部类、JDBC、RMI、反射
  1998年, JDK 1.2   Solaris Exact VM , JIT混合解释器,精确内存管理,GC性能提升
  2000年,JDK 1.3 Hotspot 作为默认虚拟机发布, JVM的一个里程碑
  2002年,JDK 1.4  Classic VM退出历史舞台, 一个应用非常广泛的版本,  支持NIO  IPV6 日志API  加密类
  2004年, JDK 1.5/JDK 5,支持泛型注解装箱枚举可变长的参数Foreach循环
  2006年4月,JDK 6, 支持脚本语言支持JDBC 4.0Java编译器 API,允许基于程序来动态编译代码,加入对动态语言的初步支持
 2011年7月, JDK 7, 动态语言增强支持,NIO 2, G1垃圾回收算法的引入,提升JVM大型应用的支持
 2014年3月, JDK 8 整合JRockit和Hotspot, Lambda表达式语法增强  Java类型注解 
 2016年, JDK 9, 模块化支持等


JVM规范


--Class文件类型
--运行时数据
--帧栈
--虚拟机的启动
--虚拟机的指令集

JVM规范是描述Class文件格式,JVM执行流程和指令集的。 Java语言编写的代码编译成Java Class文件格式,从而被JVM来执行。

Java语言和JVM相对独立,其他一些语言如Groovy、Scala等也可以在jvm上运行,JVM主要定义二进制class文件和JVM指令集等。只要是编译出来的class遵守JVM的规范,即可被JVM解释执行;这个也是JVM作为一个平台,与Java语言独立发展的源动力,随着后续JVM性能的提升以及平台稳定,也给不同的新语言提供了运行平台,从而导致了百花齐放般的JVM 语言出现。

 JVM中有堆(Java Object分配空间),栈(线程执行区域),方法区, PC(Program Counter)程序计数器等组成。


jVM需要对Java Library 提供以下支持:


--反射 java.lang.reflect
--ClassLoader
--初始化class和interface
--安全相关 java.security
--多线程
--弱引用

0 0
原创粉丝点击