简单来说Java程序的运行机制分为编写、编译和运行三个步骤。

  一、Java编写文件格式

  编写是指在Java开发环境中进行程序代码的编辑,最终生成后缀名为“.java”的Java源文件。

  二、Java编译生成文件格式

  编译是指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件,该文件可以被Java虚拟机(JVM)的解释器正常读取。

  三、Java运行虚拟机(JVM)

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

  在运行Java程序时,首先会启动JVM,然后由它来负责解释执行Java的字节码,并且Java字节码只能运行于JVM之上。这样利用JVM就可以把Java字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对于特定具体平台的JVM,Java程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。JVM把这种不同软硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM是Java平台无关的基础,Java的跨平台特性正是通过在JVM中运行Java程序实现的。接下来了解一下Java的运行流程,如图所示。

  上中,从编写出来的Java源文件,到编译为字节码文件,再到通过JVM执行程序,最后将程序的运行结果展示给用户,这是一个完整的Java运行流程。

转载于:https://www.cnblogs.com/CQqf/p/10823620.html

Java编译的运行机制初步讲解相关推荐

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

    内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...

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

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

  3. Java语言的运行机制

    一.高级语言的运行机制 我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的 ...

  4. Java程序的运行机制

    简单来说Java程序的运行机制分为编写.编译和运行三个步骤. 1.编写 编写是指在Java开发环境中进行程序代码的编辑,最终生成后缀名为".java"的Java源文件. 2.编译 ...

  5. JVM学习(1)——通过实例总结Java虚拟机的运行机制(转)

    俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...

  6. 【剧前爆米花--爪哇岛寻宝】初识Java,了解Java代码的运行机制及JDK,JRE,JVM等

    作者:困了电视剧 专栏:<JavaSE语法与底层详解> 文章分布:这是一篇知识点较为基础的文章,我会先将JavaSE相关的知识给罗列一遍,然后在后续的文章中会对其中重要的点再逐一进行底层剖 ...

  7. mac上java文件如何编译_如何在Mac上用Java编译和运行程序?

    小编典典 在Mac OSX或任何主要操作系统上编译和运行Java应用程序非常容易.Apple随OSX一起提供了一个功能齐全的Java运行时和开发环境,因此您要做的就是编写Java程序并使用内置工具来编 ...

  8. Java 编译,运行错误之 java.lang.UnsupportedClassVersionError: Bad version n umber in .class file

    这里使用的是 http://blog.csdn.net/oscar999/article/details/7305489 中的JDBCTest.java源文件 1. 在JDK1.6 中使用编译命令编译 ...

  9. Java 编译,运行错误之 java.lang.UnsupportedClassVersionError: Bad version n umber in .class file...

    这里使用的是 http://blog.csdn.net/oscar999/article/details/7305489 中的JDBCTest.java源文件 1. 在JDK1.6 中使用编译命令编译 ...

最新文章

  1. Java Socket 客户端使用指定端口多次连接服务器引发 BindException
  2. Linux下让进程在后台可靠运行的几种方法
  3. 【ubuntu】GPU进程kill后,显存未释放(杀死僵尸进程)
  4. <img src=“图片引用失败“ onerror=“自动替换默认图片“> - 代码篇
  5. 容器编排技术 -- Kubernetes kubectl rollout pause 命令详解
  6. DaDa英语完成卖身好未来?英语在线1v1再洗牌
  7. python中的sklearn.svm.svr_python机器学习库scikit-learn:SVR的基本应用
  8. linux服务器启用光口,Ubuntu中启用ssh服务
  9. 如何在Premiere Pro 中使用动态图形模板
  10. 【优化分类】基于matlab改进的人工蜂群算法优化SVM分类【含Matlab源码 1833期】
  11. 学有小成-php基础语法-06
  12. 线性系统理论2 系统状态和状态空间
  13. 李宏毅-人类语言处理-成分句法分析
  14. 深度剖析JAVA软件工程师
  15. 计算机音乐文献,论音乐文献计算机编郭小株.pdf
  16. luogu2657-Windy数题解--数位DP
  17. cpu性能指标(cpu性能指标字长是指什么)
  18. 深入了解梯度消失与梯度爆炸
  19. idea部署web项目
  20. 网络安全的红利还能吃几年?

热门文章

  1. 【机器学习】机器学习从零到掌握之七 -- 教你使用KNN进行手写数字识别
  2. 120余家自动驾驶公司的行业汇总
  3. 卷王李富贵算法每日一题--分治算法(三)--逃亡
  4. 单用户修改root密码--redhat7.2 or centos7
  5. 作文 深海机器人_海底寻宝机器人
  6. android listview 向上自动滚动效果,Android通过代码控制ListView上下滚动的方法
  7. ant vue 离线文档_超全离线开发手册
  8. Springboot2 搭建 高性能Websocket服务器
  9. 向左向右向后转python_Turbot与python教程-实现左向旋转
  10. 如何通过鸿蒙生态赚钱?