一、JVM与Java体系结构

  • Java —> 跨平台的语言
    • 不同的操作系统提供了不通过版本的jvm,来实现对相同字节码文件的解析。

Java_跨平台的语言.png

  • JVM —> 跨语言的平台
    • 不同语言只要提供各自的编译器,编译为jvm规范的字节码文件,那么jvm上都能运行。
  • JVM_跨语言的平台.png
    • 随着Java 7发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序
    • JVM本身不关心在其内部运行的程序到底是什么语言编写的,它只关心字节码文件(我认为这也是程序设计低耦合的一种体现)。
    • IT界三大难题:
      • CPU
      • 操作系统
      • 编译器
  • 多语言的编程
    • 通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向。
    • 举例:
      并行处理用clojure,展示层用JRuby/Rails,中间应用处理层用Java,接口对每一层的开发者都是透明的。各种语言的交互不存在任何困难,它们最终运行在JVM上。
  • 虚拟机与Java虚拟机
    • 虚拟机(Virtual Machine),就是一台虚拟的计算机。是一款软件,用于执行一系列虚拟计算机指令。大体上可以将虚拟机分为系统虚拟机程序虚拟机
      • 系统虚拟机
        如Virtual Box,VMWare,它们完全是对物理计算机的仿真,提供了一个可以完整运行操作系统的软件平台。
      • 程序虚拟机
        最典型的是Java虚拟机,为专门执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。
    • 无论系统虚拟机和程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。
    • Java虚拟机
      • 概念与概述
        • 执行Java字节码的虚拟计算机
        • JVM平台的各种语言可以共享Java虚拟机带来的跨平台性优秀的垃圾回收器,以及可靠的即时编译器
        • Java技术的核心就是Java虚拟机(Java Virtual Machine)
      • 作用
        二进制字节码的运行环境
      • 特点

        • 一次编译,到处运行(Write Once, run anywhere.)
        • 自动内存管理;
        • 自动垃圾回收;

二、JVM位置与整体架构

1. JVM的位置

  • 运行在操作系统上,没有与硬件直接交互
    JVM的位置.png

2. JVM整体结构与Java代码执行流程

Java代码执行流程.svg