Java程序的运行包括两个非常重要的阶段:

一.编译阶段

第一步:程序员需要在计算机硬盘中任意位置创建一个.java扩展名的文件,该文件被称为 java源文件,源文件当中编写的是java源代码/源程序。java源代码必须符合java的语法规则。

第二步:java程序员需要使用JDK当中自带的javac.exe命令进行java程序的编译。

javac使用规则?

javac java源文件的路径

javac在哪用?

在DOS命令窗口中使用,win+r打开“运行窗口”,输入cmd

--注:

一个java源文件可以编译生成多个.class文件

编译阶段主要检查java源代码是否符合Java语法。

符合java语法则能生成以.class结尾的字节码文件,

不符合java语法则无法形成字节码文件。

字节码文件不是存粹的二进制,无法在操作系统中直接执行。

编译结束之后,可以将class文件拷贝到其他操作系统当中(java跨平台性)。

字节码文件/class文件是最终要执行的文件,所以说class文件生成之后,java源文件/.java文件删除并不会影响程序执行。但是一般不删除,最后可能执行效果不是想要的,只能将java源文件重新修改,然后java源文件重新生成class文件,运行class文件生成新的效果。

二.运行阶段

JDK安装之后,除了自带javac.exe之外,还有另一个工具/命令,叫java.exe,java.exe主要负责运行阶段。

java.exe在哪里用?

在DOS窗口中使用,win+r打开“运行窗口”,输入cmd

java.exe怎么用?

java 类名 注意与javac命令的区分

例如:硬盘上有一个A.class文件,则:java A

硬盘上有一个b.class文件,则:java b

注意不能写成:java A.class(错误方式)

运行阶段过程步骤:

1.打开DOS命令窗口

2.输入:java A

3.java.exe命令会启动Java虚拟机(JVM),JVM会启动类加载器ClassLoader。

4.ClassLoader会去硬盘上搜索A.Class文件,找到该文件则将该文件字节码文件装载到JVM当中。

5.JVM将A.Class字节码文件解释成二进制10101010这样的数据。

6.然后操作系统执行二进制和底层硬件平台进行交互。Java编程与运行机制图

java运行原理_Java程序的加载与运行原理详解相关推荐

  1. JAVA入门级教学之(JAVA程序的加载和运行)

    JAVA程序的加载和运行 多思考多动脑(边参考文章最后的示意图,边按步骤理解) 1.JAVA程序的加载和运行包括两个非常重要的阶段: 编译阶段 运行阶段 2.我们先来了解一下什么是编译阶段: 首先,我 ...

  2. c语言中组件出现错误,错误:R6034 运行时错误! 应用程序尝试加载 C 运行库时出现错误。 有关详细信息,请联系应用程序的支持团队...

    错误:R6034 运行时错误! 应用程序尝试加载 C 运行库时出现错误. 有关详细信息,请联系应用程序的支持团队 错误消息 ArcGIS Engine 应用程序 10.4 和 10.4.1 版本会返回 ...

  3. 【胖虎的逆向之路】01——动态加载和类加载机制详解

    胖虎的逆向之路 01--动态加载和类加载机制详解 一.前言 二.类的加载器 1. 双亲委派模式 2. Android 中的类加载机制 1)Android 基本类的预加载 2)Android类加载器层级 ...

  4. Fragment的懒加载与生命周期详解

    提示:本文仅为笔者学习记录 Fragment的懒加载与生命周期详解 什么是懒加载 了解Fragment的生命周期 onAttach onCreate onCreateView onActivityCr ...

  5. android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解

    Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...

  6. miniui datagrid 隐藏列默认赋值_「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)...

    小程序如何加载的呢?生命周期!源码:https://github.com/limingios/wxProgram.git 中的No.3 加载页面 小程序默认加载的pages中的第一个目录 不管你的名称 ...

  7. 加载类_JVM类加载详解

    类的加载器 概述 类加载器是JVM执行类加载机制的前提. ClassLoader的作用:ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassL ...

  8. java 永久代_Java新生代、老生代和永久代详解

    前言: 还是面试经常被q,小结一下 image.png JVM中的堆一般分为三部分,新生代.老年代和永久代. 1 新生代 主要是用来存放新生的对象.一般占据堆空间的1/3,由于频繁创建对象,所以新生代 ...

  9. java类加载过程_java类的加载过程

    在这本书里面,在讲到类初始化的五种情况时,提及了一个比较有趣的事情.先来看看下面的代码 public class SubClass { static{ System.err.println(" ...

最新文章

  1. linux下移动c盘文件位置,问个问题我在unbuntu下为何找不到windows c盘文件
  2. 2012年的这些经典书目你读了没?
  3. POJ 2187 Beauty Contest( 凸包求最远点对 )
  4. 网络协议是什么?—Vecloud微云
  5. 动态加载html 添加样式表,使页面动态加载不同CSS样式表,从而实现不同风格模板的方法...
  6. Nginx 负载均衡和缓存服务实战
  7. 数据库学习笔记2-隔离等级 isolation level
  8. CSDN Blog推出专属的离线发布工具 - CSDN剪影
  9. 【SpringBoot】24、SpringBoot中实现数据字典
  10. t450加固态硬盘教程_Thinkpad T450 超级笔记本 开箱更换SSD和内存
  11. QQ群互通(QQ_Bot)程序配置教程
  12. Power BI+Power Apps联动初尝试
  13. 数据分析[1.1]--拆解方法总结
  14. I2C的ACK和NACK
  15. 客服系统竞品分析报告Shein
  16. 【自定义控件】Android仿刮刮乐|刮刮卡|橡皮擦效果
  17. 公众号(服务号)模板消息(个人通知)开发方案
  18. 安装ps显示检测到计算机,修复:win10下Photoshop遇到显示驱动程序问题
  19. 【xtku】巧设路由器 自动拨号上网
  20. 阿里云美国服务器怎么样?

热门文章

  1. 调用CALL TRANSACTION的三种方法
  2. ABAP RANGES 在 RFC 的应用示例
  3. 使用特殊的技术更新数据库(ABAP)
  4. SAP BDC(Batch Data Conversion )技术之我见
  5. SQVI和SAP查询QUERY的区别和使用注意事项
  6. SAP中添加自定义菜单
  7. ME21N增强提示警告消息
  8. ABAP取字符串中的连续数字
  9. [FI] SAP 关于标准成本、计划成本、目标成本、实际成本
  10. ABAP 删除内表重复数据