java运行原理_Java程序的加载与运行原理详解
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程序的加载与运行原理详解相关推荐
- JAVA入门级教学之(JAVA程序的加载和运行)
JAVA程序的加载和运行 多思考多动脑(边参考文章最后的示意图,边按步骤理解) 1.JAVA程序的加载和运行包括两个非常重要的阶段: 编译阶段 运行阶段 2.我们先来了解一下什么是编译阶段: 首先,我 ...
- c语言中组件出现错误,错误:R6034 运行时错误! 应用程序尝试加载 C 运行库时出现错误。 有关详细信息,请联系应用程序的支持团队...
错误:R6034 运行时错误! 应用程序尝试加载 C 运行库时出现错误. 有关详细信息,请联系应用程序的支持团队 错误消息 ArcGIS Engine 应用程序 10.4 和 10.4.1 版本会返回 ...
- 【胖虎的逆向之路】01——动态加载和类加载机制详解
胖虎的逆向之路 01--动态加载和类加载机制详解 一.前言 二.类的加载器 1. 双亲委派模式 2. Android 中的类加载机制 1)Android 基本类的预加载 2)Android类加载器层级 ...
- Fragment的懒加载与生命周期详解
提示:本文仅为笔者学习记录 Fragment的懒加载与生命周期详解 什么是懒加载 了解Fragment的生命周期 onAttach onCreate onCreateView onActivityCr ...
- android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解
Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...
- miniui datagrid 隐藏列默认赋值_「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)...
小程序如何加载的呢?生命周期!源码:https://github.com/limingios/wxProgram.git 中的No.3 加载页面 小程序默认加载的pages中的第一个目录 不管你的名称 ...
- 加载类_JVM类加载详解
类的加载器 概述 类加载器是JVM执行类加载机制的前提. ClassLoader的作用:ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassL ...
- java 永久代_Java新生代、老生代和永久代详解
前言: 还是面试经常被q,小结一下 image.png JVM中的堆一般分为三部分,新生代.老年代和永久代. 1 新生代 主要是用来存放新生的对象.一般占据堆空间的1/3,由于频繁创建对象,所以新生代 ...
- java类加载过程_java类的加载过程
在这本书里面,在讲到类初始化的五种情况时,提及了一个比较有趣的事情.先来看看下面的代码 public class SubClass { static{ System.err.println(" ...
最新文章
- linux下移动c盘文件位置,问个问题我在unbuntu下为何找不到windows c盘文件
- 2012年的这些经典书目你读了没?
- POJ 2187 Beauty Contest( 凸包求最远点对 )
- 网络协议是什么?—Vecloud微云
- 动态加载html 添加样式表,使页面动态加载不同CSS样式表,从而实现不同风格模板的方法...
- Nginx 负载均衡和缓存服务实战
- 数据库学习笔记2-隔离等级 isolation level
- CSDN Blog推出专属的离线发布工具 - CSDN剪影
- 【SpringBoot】24、SpringBoot中实现数据字典
- t450加固态硬盘教程_Thinkpad T450 超级笔记本 开箱更换SSD和内存
- QQ群互通(QQ_Bot)程序配置教程
- Power BI+Power Apps联动初尝试
- 数据分析[1.1]--拆解方法总结
- I2C的ACK和NACK
- 客服系统竞品分析报告Shein
- 【自定义控件】Android仿刮刮乐|刮刮卡|橡皮擦效果
- 公众号(服务号)模板消息(个人通知)开发方案
- 安装ps显示检测到计算机,修复:win10下Photoshop遇到显示驱动程序问题
- 【xtku】巧设路由器 自动拨号上网
- 阿里云美国服务器怎么样?