Java 程序的运行必须经过编写、编译和运行 3 个步骤:

1、编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。
2、编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件,不像C语言那样生成可执行文件。
3、运行:是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。

Java 程序运行流程如图所示:

字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码。它是一种二进制文件,是 Java 源文件由 Java 编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的 Java 解释器来解释执行,因此 Java 是一种在编译基础上进行解释运行的语言。

Java 解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此 Java 程序不能直接运行在现有的操作系统平台上,它必须运行在被称为 Java 虚拟机的软件平台之上。

Java 虚拟机(JVM)是运行 Java 程序的软件环境,Java 解释器是 Java 虚拟机的一部分。在运行 Java 程序时,首先会启动 JVM,然后由它来负责解释执行 Java 的字节码程序,并且 Java 字节码程序只能运行于 JVM 之上。这样利用 JVM 就可以把 Java 字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定平台的 JVM,Java 程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。

JVM 把这种不同软、硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM 是 Java 平台架构的基础,Java 的跨平台特性正是通过在 JVM 中运行 Java 程序实现的。Java 的这种运行机制可以通过下图来说明。


Java 语言这种“一次编写,到处运行”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。

提示:Java 程序通过 JVM 可以实现跨平台特性,但 JVM 是不跨平台的。也就是说,不同操作系统之上的 JVM 是不同的,Windows 平台之上的 JVM 不能用在 Linux 平台,反之亦然。

Java程序的运行过程(执行流程)分析相关推荐

  1. 学习Java第一天:1、Java是什么?2、面向对象的编程思想的特点 3、Java的开发工具 4、安装JDK和配置环境变量 5、Java程序的运行过程 6、Java语言的特点

    目录 1.Java是什么? 2.面向对象的编程思想的特点 3.Java的开发工具 4.安装JDK和配置环境变量 5.Java程序的运行过程 6.Java语言的特点 1.Java是什么? java是一门 ...

  2. Java教程:Java程序的运行过程(执行流程)分析

    Java教程万事知其然,要知其所以然,所以本节带大家来详细了解一下 Java 程序的执行过程. 本篇文章由 泉州SEO www.234yp.com 整理发布,Java教程 www.234yp.com/ ...

  3. Java程序编译运行过程

    整体流程 1.首先由源程序文件编译成class文件.注意这里的源程序并不仅限于java程序,其他语言如果能够编译成class文件,并且符合jvm规范也能够在jvm上运行. 2.jvm将class文件拷 ...

  4. java语言执行过程_Java程序的运行过程(执行流程)分析

    万事知其然,要知其所以然,所以本节带大家来详细了解一下 Java 程序的执行过程.从<使用记事本编写运行Java程序>一节的案例可以看出,Java 程序的运行必须经过编写.编译和运行 3 ...

  5. scala语言的底层是java实现的_Scala学习笔记一(与Java、Jvm的关系以及程序执行流程分析)...

    一.Scala语言与Java.Jvm的关系分析 Scala语言是马丁奥德斯基接触Java语言后,针对Java语言的特点,将函数式编程语言的特点融合到Java中,由此发明的.Scala语言和Java语言 ...

  6. Java多线程- 线程池的基本使用和执行流程分析 - ThreadPoolExecutor

    线程池的实现原理 池化技术 一说到线程池自然就会想到池化技术. 其实所谓池化技术,就是把一些能够复用的东西放到池中,避免重复创建.销毁的开销,从而极大提高性能. 常见池化技术的例如: 线程池 内存池 ...

  7. java程序的运行机制详细分析

    转自:http://hi.baidu.com/suny_duan/blog/item/074f9afb09f08c9b58ee901b.html JVM(Java虚拟机)一种用于计算设备的规范,可用不 ...

  8. Go003:Go程序开发的步骤+Golang执行流程分析

    开发的步骤 一.开发这个程序页目时,go的目录结构怎么处理 二.开发一个hell.go程序 对上图的说明 1.go文件的后缀是.go 2.package main 表示hello.go文件所在的包是m ...

  9. 如何分析java程序_如何利用 JConsole观察分析Java程序的运行,进行排错调优

    一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JCons ...

最新文章

  1. 文件中数组的最大值及其对应的最小下标
  2. git init 与 git init --bare 区别
  3. 校招容易踩雷?这份“避雷针”指南拿走不谢
  4. 数字货币 Electron Cash钱包 如何离线转账
  5. 【论文学习】RepVGG: Making VGG-style ConvNets Great Again及网络重参数化的用途及效果分析
  6. 数据结构之线段树入门(单点更新区间查询)
  7. jaxb xsd生成xml_使用JAXB从XSD生成XML
  8. leetcode中使用c++需要注意的点以及各类容器的初始化、常用成员函数
  9. 久等了,你要的 Python 书籍推荐,来了
  10. 解决centos sudo执行仍旧显示Permission denied
  11. “庆渝年”​又更新了!法院裁定:禁止李国庆接触、骚扰、殴打俞渝
  12. win10专业版系统没有休眠选项如何解决?
  13. RayData学习总结
  14. 【软件构造】正则表达式合法性检测
  15. js 视频插件zyMedia下载和使用方法
  16. couch db_如何在Ubuntu上安装Couch DB 1.5
  17. element 复杂表格,表格合并
  18. 所谓的flash、ddr、ufs
  19. 【图形学】计算机图形学的应用领域
  20. 用ps魔棒工具选区域和改变区域颜色

热门文章

  1. 华为mate20pro计算机自动旋转,华为mate20pro特殊功能有哪些
  2. 我们无法创建新的分区,也找不到现有的分区
  3. CSDN插件超级赞啊!!!!
  4. 如何找到python廖雪峰基础_python3 基础 廖雪峰教程笔记-1
  5. python爬取boss直聘源码
  6. conEmu的使用笔记
  7. 想增加你的词汇量吗?---教你如何爬取某贝单词
  8. 2022年9月计划(ue4热更新视频教程+抄写rhi部分源码)
  9. Win10计算机组织选项在哪里,文件夹选项在哪里,教您Win10文件夹选项在哪
  10. OpenCV学习之路(七)——角点检测