Java虚拟机及跨平台原理

Java虚拟机及跨平台原理

Java Virtual Machine(JVM) 是可运行java字节码的假象计算机,java的跨平台性是相对其他编程语言而言的,用C语言的编程和执行过程来同java的编程和执行过程进行对比:

同C语言一样,首先也要编写java源程序,然后由java编译器将java源程序编译为JVM可执行的代码,即java字节码,java源程序编译后生成的字节码文件就相当于C源程序编译后的windows上的exe可执行文件,JVM相当于计算机系统(操作系统+硬件环境),在windows上运行的是exe文件,在JVM运行的是java字节码文件(.class文件)。

Windows执行exe可执行文件的过程,就是从exe文件中取出一条条的计算机指令,交给CPU去解释执行。JVM执行java字节码的过程,也是JVM从字节码文件中取出一条条的字节码指令交给“CPU”去执行。执行java字节码的“CPU”可以是硬件,也可以是某个系统上运行的一个软件,这个软件称为java字节码解释程序(也就是JVM)。

总结:

         解释器 = JVM 的“CPU”

①   .exe文件直接在windows操作系统下运行,即CPU上运行的是机器码。

②   .class字节码文件是在JVM虚拟机下运行,即解释器上运行的是Java字节码。

③  什么什么器就是一个程序,即所谓的java编译器就是java编译程序(jdk的bin目录下的javac.exe),java解释器就是一个特定平台下的解释程序(jdk的bin目录下的java.exe)。

④  只要实现了特定平台下的解释程序,java字节码就能通过解释器程序在该平台下运行,这是java跨平台的根本。

时间: 2024-11-06 09:42:34

Java虚拟机及跨平台原理的相关文章

Java虚拟机内存管理原理基础入门

Jdk:Java程序设计语言.Java虚拟机.Java API类库. Jdk是用于支持Java程序开发的最小环境. Jre:Java API类库中的Java SE API子集.Java虚拟机. Jre是支持Java程序运行的标准环境. Program Counter Register:较小的内存空间,可以看作当前线程所执行的字节码的行号指示器.是唯一一个Java虚拟机规范中没有规定OutOfMemoryError的区域. VM Stack:生命周期和线程相同,它描述了Java方法执行的内存模型:

简述java虚拟机的工作原理

java虚拟机包含类加载器.字节码校验器和JIT实时编辑器.类加载器用来取得从网络获取的或存于本地机器上的类文件字节码.下一步由字节码校验器检查这些类文件是否有正确的格式,以确认在运行时不会有破坏内存的行为.Java解释器将字节码解释翻译成机器码,而JIT编译器也可将字节码转为本地机器码,但它可使原本是解释执行方式的虚拟机提高到编译式的运行效率 原文地址:https://www.cnblogs.com/qq1335210739/p/10209868.html

Java虚拟机 - 结构原理与运行时数据区域

http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文件格式 Ja

Java虚拟机(一)结构原理与运行时数据区域

前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文件格式 Java API类库 第三方Java类库 可以把Java程序设计语言.Java虚拟机和Java API类库这三部分

Java虚拟机(二)对象的创建与OOP-Klass模型

相关文章 Java虚拟机系列 前言 在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案. 1.对象的创建 对象的创建通常是通过new一个对象而已,当虚拟机接收到一个new指令时,它会做如下的操作. (1)判断对象对应的类是否加载.链接.初始化 虚拟机接收到一条new指令时,首先会去检查这个指定的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被类加载

深入拆解Java虚拟机

作为开发工程师,你也许会在日常编程中被 Java 的启动性能和内存耗费所震惊,继而对 Java 语言产生怀疑:或许在使用虚拟机遇见内存溢出等一系列异常时头疼万分,困扰于为什么会出现各种问题. 和语言朝夕相处的开发者们,提及代码的详细运行过程也难免会一时语塞.这都是由于 Java 虚拟机封装得太好,让使用者几乎感觉不到它的存在.虽然这种“一次编写,到处运行”优势颇多,但是却也让我们忽略了学习 Java 虚拟机的必要. 熟知 Java 虚拟机的工作原理可以大幅提升日常编程的效率,对寻常 Bug 的修

Java虚拟机A博娱乐(JVM)以及跨平台原理

A博娱乐相信大家已经了解到Java具有跨平台的特性,可以"一次编译,到处运行",在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM). JVM也是一个软件,不同的平台有不同的版本.我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件.Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行.也就是说,

JAVA虚拟机(JVM)以及跨平台原理(JDK、JRE、JVM)

相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM). JVM也是一个软件,不同的平台有不同的版本.我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件.Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行.也就是说,只要在不同平台上安

Java知多少(2)虚拟机(JVM)以及跨平台原理

相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM). JVM也是一个软件,不同的平台有不同的版本.我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件.Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行.也就是说,只要在不同平台上安