内容

1、高级语言的运行机制

2、Java 语言的运行机制

1、高级语言的运行机制

高级语言主要分为编译型语言和解释型语言两类。

编译型语言是指使用专门的编译器、针对特定平台(操作系统)将高级语言源代码一次性“翻译”成该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行文件格式,这个转换过程称为编译(Compile)。编译生成的可执行程序可以脱离开发环境,在特定的平台下独立运行。有些还需要链接其他编译好的目标代码

编译型语言是程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++

解释型语言是无需编译,先翻译成中间代码,再由解释器对中间代码进行解释运行。程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低,跨平台性较好。如Ruby、Python

2、Java 语言的运行机制

Java语言比较特殊,由Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种平台无关的字节码(也就是*.class文件)。这种字节码必须通过解释器执行。因此,Java程序的执行必须经过先编译,后解释两个步骤,如下图所示

JVM(Java Virtual Machine,Java虚拟机)负责解释执行字节码文件(*.class文件)。Java编译器不面向任何具体平台,只面向JVM。虽然不同平台下JVM是不同的,但它们都面对编译器均提供相同的接口。Java编译器生成的与平台无关的字节码,不能直接在不同的平台上运行,必须通过中间的转换器(JVM)才能运行。

首先Java编译器生成虚拟机能理解的代码(与平台无关的字节码文件),然后虚拟机解释执行这些代码。

JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台下运行。

JVM是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。

Sun公司制定的Java虚拟机规范在技术上规定了JVM统一标准,具体定义了JVM的如下细节:

  • 指令集
  • 寄存器
  • 类文件格式
  • 垃圾回收堆
  • 存储区

Sun公司制定规范的目的是为了提供统一的标准,最终实现Java程序的平台无关性。

转载于:https://www.cnblogs.com/klchang/p/4672848.html

《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制相关推荐

  1. 尽信书,不如无书。java的包装类Integer的深入理解及特殊情况(以及java疯狂讲义第5版170页中的错误)

    1.通常情况下,两个包装类型只有在两个引用指向同一对象时,使用 == 进行比较时才会返回true 例如: Double do1 = Double.valueOf(1.23); Double do2 = ...

  2. java疯狂讲义第四版第五章答案_疯狂java讲义第五章笔记

    1 定义类,成员变量和方法 类和对象 定义类 java的类名由一个或者多个有意义的单词组合而成,每个单词的首字母大写,其他的全部消协,并且单词之间没有分隔符. 成员变量:用于定义该类或者实例的所包含的 ...

  3. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects...

    The genesis of the computer revolution was a machine. The genesis of out programming languages thus ...

  4. 操作系统学习笔记-04-操作系统的运行机制和体系结构

    操作系统学习笔记-2019 王道考研 操作系统-04-操作系统的运行机制和体系结构 文章目录 4-操作系统的运行机制和体系结构 4.1知识总览 4.2运行机制 4.2.1预备知识:什么是指令? 4.2 ...

  5. PMBOK(第六版) 学习笔记 ——《考试、成绩、PDU》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  6. PMBOK(第六版) 学习笔记 ——《第七章 项目成本管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  7. PMBOK(第六版) 学习笔记 ——《第一章 引论》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  8. PMBOK(第六版) 学习笔记 ——《第六章 项目进度管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  9. PMBOK(第六版) 学习笔记 ——《第十章 项目沟通管理》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

最新文章

  1. php手册常用的函数
  2. java 工厂的变形模拟的各种应用
  3. win2003能装mysql_Windows2003系统安装mysql小结
  4. WSAIoctl 函数详解
  5. 分享Spring Cloud分布式微服务架构图
  6. 政企边缘安全,如何助您提升企业的“免疫力“?
  7. css-第一个CSS
  8. 海报设计素材模板|炫彩创意PSD分层时尚艺术海报 ​​​​
  9. php 属性名字访问,php – 如何使用连字符的名称访问此对象属性?
  10. android (12) Fragment使用
  11. Python 基础——一张图告诉你PyCharm如何进行断点调试
  12. [转]手游运营后台通用需求
  13. 校园招聘数电模电笔试题
  14. 机器学习项目 - ctr 电商点击率预估
  15. 解决DNS解析故障的几种方法
  16. AUC(ROC曲线下方的面积大小)
  17. 姿态(Orientation)
  18. “囍”博物馆与Interesting 有点意思
  19. 迪文串口屏幕通信问题
  20. Linux 根目录与路径

热门文章

  1. hashcode、equals和==简单总结
  2. 安装Grid Control
  3. ASP.NET 2.0 X64的奇怪问题
  4. CSS外边距折叠引发的问题
  5. 算法之最近最少使用LRU
  6. vue中引入jquery报错问题
  7. Re:从零开始的机器学习 - Machine Learning(一) 线性回归
  8. 第二次作业+105032014001
  9. StringBuffer 和StringBuilder的区别
  10. php date的警告