详述Java程序运行原理

前言

我们都知道,Java是一种面对对象的语言,这样就避开了繁琐的过程使编码变得简单。同时Java是在JVM虚拟机上运行,故具有良好的可移植性。
现在,让我们来一起探索Java程序运行的原理

基本原理

在这里插入图片描述
Java语言是一种先编译后解释的语言,一般我们在编写一个Java程序时需要在记事本(或编辑器)上先编辑好源代码
这些源代码经过编译器编译后,就会生成一个.class文件,这个文件就是编译好的Java程序,需要使用java语句来运行它
那么,我们输入的这些文本是怎么从字母和符号变成一个完整的程序的呢?
这里我们以一个简单的“HelloWorld”程序为例,详细讲述

首先创建一个文本文档,重命名为“HelloWorld”,并且把它的后缀名改为“.java”,然后编辑源代码

public class HelloWorld{

	public static void main(String [] args){
		System.out.println("HelloWorld");
		}
}

HelloWorld程序保存后
在cmd中用javac语句编译

编译其实是将我们编写的.Java源代码编译成.class字节码文,而这个字节码文(
.class)是Java虚拟机可识别的(可以在JVM虚拟机上运行),不是针对某一系统平 台(如Windows,Mac等),这样我们编写的源代码经过编译就可以在虚拟机上运行,实现代码跨平台运行。此外,javac即为Java编译器,存放于Java安装目录bin文件夹中
运行如下:
在这里插入图片描述
运行后我们会发现在我们刚刚创建的HelloWorld.java所在的文件夹中多出来了一个HelloWorld.class文件

在这里插入图片描述
至此,我们已经基本成功编写出HelloWorld程序
下面我们来用java语句打开程序,看是否正常运行
注:
Java语句即为调用Java解释器,用于运行编译后的Java字节码文件
在这里插入图片描述可以看见,成功打印出来了“HelloWorld”,说明我们成功编写出了程序!

那么从编译好的*.class文件到程序运行又经过了哪些步骤呢

Java虚拟机在接收*.class字节码文件后,首先运行了类加载器,然后运行了字节码校验器,来检测我们所编写的代码是否合乎语法规则,如果合乎语法,最后将字节码文转换成虚拟机可以识别的机器码(即01010001)
虚拟机运行完成机器码后,返回输出值“HelloWorld”显示到我们的屏幕上
在这里插入图片描述

*什么是JVM虚拟机

java虚拟机是一个可执行java字节码的虚拟机进程
用Java编写的程序(存放在扩展名为java的文件中)经过编译器(即JDK根目录bin文件夹中的javac.exe文件)编译成字节码文件(即扩展名为class的文件),这个字节码文件不是针对具体平台的,而是针对抽象的Java虚拟机的,在Java虚拟机上运行,在不同类型的平台上安装不同的Java虚拟机,这些不同的Java虚拟机屏蔽了各个不同平台的差异,从而使编译过的Java程序具有平台无关性,即Java虚拟机在执行字节码时,把字节码解析成具体平台上的机器指令执行。
总结就是:一次编译,处处运行

总结

java程序运行的原理简要来说就是用户使用java语言根据一定语法编辑程序源代码,源代码经过javac编辑器转换成JVM虚拟机能够识别的字节码,字节码在JVM虚拟机中经过校验,确认无误后,再由JVM组件转换为机器码供计算机识别,最终达到执行程序的目的。
这次我用一个简易的例子来解释了Java程序运行的原理,但其实Java程序的运行还有更深层次的理解与知识,我以后会做更加详细的说明。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值