zoukankan      html  css  js  c++  java
  • JVM简介

    1.VM是什么?

    • VM全称Virtual Machine,即虚拟机.
    • 虚拟机就是一款软件,它通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统.
    • 大体上,虚拟机可以分为系统虚拟机程序虚拟机

    Visaual Box,VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台
    程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令

    2.JVM是什么?

    • JVM全称Java Virtual Machine,即Java虚拟机.
    • JVM为Java程序提供运行平台,是二进制字节码的运行环境.
    • JVM也有很多发行商版本,Oracle官方发行的JDK默认的JVM是HotSpot.
    • 注意:JVM的目标执行文件是字节码文件(对于Java就是.class文件),需要说明的是,除了Java,其他语言只要通过各自的编译器生成遵循JVM规范的字节码文件,同样可以运行在JVM上,简而言之,JVM是跨语言的平台.

    3.JDK和JVM发展历程

    • JDK版本升级不仅仅体现在语言和功能特性上,还包括了其编译和执行的Java虚拟机的升级。
    • 1990年,在Sun计算机公司中,由Patrick Naughton、MikeSheridan及James Gosling领导的小组Green Team,开发出的新的程序语言,命名为Oak,后期命名为Java
    • 1995年,Sun正式发布Java和HotJava产品,Java首次公开亮相
    • 1996 年,JDK 1.0 发布时,提供了纯解释执行的 Java 虚拟机实现:Sun Classic VM
    • 1997 年,JDK 1.1 发布时,虚拟机没有做变更,依然使用 Sun Classic VM 作为默认的虚拟机
    • 1998 年,JDK 1.2 发布时,提供了运行在 Solaris 平台的 Exact VM 虚拟机,但此时还是用 Sun Classic VM 作为默认的 Java 虚拟机,同时发布了JSP/Servlet、EJB规范,以及将Java分成J2EE、J2SE、J2ME
    • 2000 年,JDK1.3 发布,默认的 Java 虚拟机由 Sun Classic VM 改为 Sun HotSopt VM,而 Sun Classic VM 则作为备用虚拟机
    • 2002 年,JDK 1.4 发布,Sun Classic VM 退出商用虚拟机舞台,直接使用 Sun HotSpot VM 作为默认虚拟机一直到现在
    • 2003年,Java平台的Scala正式发布,同年Groovy也加入了Java阵营
    • 2004年,JDK1.5发布,同时JDK1.5改名为JDK5.0
    • 2006年,JDK6发布,同年,Java开源并建立了OpenJDK。顺理成章,Hotspot虚拟机也成为了OpenJDK默认虚拟机
    • 2008年,Oracle收购BEA,得到了JRockit虚拟机
    • 2010年,Oracle收购了Sun,获得Java商标和HotSpot虚拟机
    • 2011年,JDK7发布,在JDK1.7u4中,正式启用了新的垃圾回收器G1
    • 2014年,JDK8发布,用元空间MetaSpace取代了PermGen
    • 2017年,JDK9发布,将G1设置为默认GC,替代CMS
    • Sun Classic VM
    • 世界上第一款商用 Java 虚拟机。1996年随着Java1.0的发布而发布,JDK1.4时完全被淘汰;
    • 这款虚拟机内部只提供解释器;
    • 如果使用JIT编译器,就需要进行外挂。但是一旦使用了JIT编译器,JIT就会接管虚拟机的执行系统,解释器就不再工作,解释器和编译器不能配合工作;
    • 现在hotspot内置了此虚拟机
    • Exact VM
    • 它的执行系统已经具备了现代高性能虚拟机的雏形:如热点探测、两级即时编译器、编译器与解析器混合工作模式等;
    • 使用准确式内存管理:虚拟机可以知道内存中某个位置的数据具体是什么类型;
    • 在商业应用上只存在了很短暂的时间就被更优秀的 HotSpot VM 所取代
    • Sun HotSpot VM
    • 它是 Sun JDK 和 OpenJDK 中所带的虚拟机,也是目前使用范围最广的 Java 虚拟机;
    • 继承了 Sun 之前两款商用虚拟机的优点(如准确式内存管理),也使用了许多自己新的技术优势,如热点代码探测技术(通过执行计数器找出最具有编译价值的代码,然后通知 JIT 编译器以方法为单位进行编译;
    • Oracle 公司分别收购了 BEA 和 Sun,并在 JDK8 的时候,整合了 JRokit VM 和 HotSpot VM,如使用了 JRokit 的垃圾回收器与 MissionControl 服务,使用了 HotSpot 的 JIT 编译器与混合的运行时系统。
    • BEA JRockit VM
    • 专注于服务器端应用,内部不包含解析器实现;
    • 号称是世界上最快的JVM
    • IBM J9 VM
    • 全称:IBM Technology for Java Virtual Machine,简称IT4J,内部代号:J9
    • 市场定位于HotSpot接近,服务器端、桌面应用、嵌入式等多用途VM
    • 目前是有影响力的三大商用虚拟机之一
    • 虚拟机有很多,此外还有Azul VM、Liquid VM、Apache Harmony、TaobaoJVM、Graal VM等

    4.Java和JVM官方规范

    3.Java语言如何实现跨平台,即"一次编译,到处运行"?

    • 这里的跨平台指不同的计算机操作系统.
    • 通过在不同操作系统上安装对应版本的JVM,将生成的字节码文件交给JVM,就可以实现跨平台.

    4.JVM的位置

    • JVM是运行在操作系统之上的,与硬件没有直接的交互.
    • JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。JDK 物理存在,是 Java Language、Tools、JRE 和 JVM 的一个集合。

    5.Java代码执行流程

  • 相关阅读:
    【笔记】初探KNN算法(2)
    【笔记】初探KNN算法(3)
    将onenote快速复制粘贴到博客园后台
    【笔记】numpy.array基础(2)
    【笔记】matplotilb数据可视化基础
    【笔记】numpy.array的常用基本运算以及对数据的操作
    【笔记】初探KNN算法(1)
    关于解决numpy使用sklearn时的警告问题
    【笔记】读取数据以及简单的数据探索
    【笔记】numpy.array基础(3)
  • 原文地址:https://www.cnblogs.com/gycc/p/13246470.html
Copyright © 2011-2022 走看看