Java JVM 1-JVM是什么

1. JVM概念

 JVM是Java Virtual Machine的简写,意为Java虚拟机。

 虚拟机是指通过软件模拟的具有完整硬件功能的,运行在一个完全隔离的环境中的完整计算机系统,常见的虚拟机有JVM,VMwawe,Virtual Box等。虽然都是虚拟机,但是JVM比起其它虚拟机又有不同。

 像VMwawe,Virtual Box虚拟机,是通过软件模拟物理CPU的指令集,物理系统中又有很多的寄存器,所以其又将这些寄存器也进行了模拟。而JVM是通过软件模拟Java字节码的指令集,只保留了主要的PC寄存器,其他的寄存器都进行了剪裁,所以说JVM模拟的是一台现实中不存在的计算机。

 Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器就负责将字节码文件解释成为特定的机器码进行运行。

 因此在运行时,Java源码首先通过编译器(javac)成为 .class 文件。然后通过JVM装载jvm.dll(linux为:libjvm.so)使 .class 成为Java可执行文件java.exe,这个动态链接的过程就是java跨平台的关键所在。

2. JVM发展简史

 正式深入JVM之前,了解一下它的发展历史也是一件很重要的事情。
- 20世纪Java发展:

 1996年SUN JDK 1.0时发布:Classic VM 纯解释运行,使用外挂进行JIT(编译器)。

 1997年JDK 1.1发布:AWT、内部类、JDBC、RMI、反射(Java的核心),RMI:远程方法调用(Remote Method Invocation)。能够让在某个java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法。

 1998年JDK 1.2发布:Solary Exact VM(仅存在了很短的时间)。
JIT和解释器混合执行 Accurate Memory Management 精确内存管理,数据类型敏感 提升GC性能。

 JDK1.2开始成为Java2(J2SE,J2EE,J2ME出现),并且加入了Swing Collection。

  • 二零零几年:

 2000年JDK1.3:HotSpot作为默认虚拟机发布2002年JDK1.4:Classic VM退出历史舞台。

 1.4更新内容:Assert,正则表达式,NIO,IPV6,日志API,加密类库,异常链,XML解析器等。

 2004年JDK1.5即JDK5,Java5(很重要的一个版本)。

 Java5更新内容:泛型,注解,装箱,枚举,可变长参数,Foreach循环。虚拟机层面:改进了Java内存模型(JMM),提供了JUC并发包。

 JDK1.6 java6:更新内容:脚本编程的支持(动态语言支持),jdbc4.0,Java编译器API,微型Http服务器API等。虚拟机层面:锁与同步,垃圾收集,类加载等算法的改动

  • 二零一几年:

 2011年JDK1.7/Java7发布: G1收集器(Update4才正式发布) 加强对非Java语言的调用支持 升级类加载器架构 64位系统压缩指针 NIO2.0。

 2014年Java8发布: Lamda表达式 语法增强 Java类型注释等

  • Java与JVM发展历史中的大事件:

 使用最广泛的JVM为HotSpot。

 HotSpot最早为Longview Technologies开发,被SUN收购。

 2006年,Java开源,并建立OpenJDK HotSpot成为SUN JDK和OpenJDK中所带的虚拟机。

 2008年,Oracle收购BEA 得到JRockit VM。

 2010年Oracle收购SUN 得到HotSpot,Orcale宣布在JDK8时整合HotSpot和JRockit VM,优势互补 在HotSpot的基础上移植JRockit的优秀特性。

猜你喜欢

转载自blog.csdn.net/weixin_40739833/article/details/80713278