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

万事知其然,要知其所以然,所以本节带大家来详细了解一下 Java 程序的执行过程。从《使用记事本编写运行Java程序》一节的案例可以看出,Java 程序的运行必须经过编写、编译和运行 3 个步骤。编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。

编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件,不像C语言那样生成可执行文件。

运行:是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。

Java 程序运行流程如图 1 所示。

720485846119bd241fcdb92dea4afff0.png

图 1 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 的这种运行机制可以通过图 2 来说明。

80719b65225d5dc6963f876ca1f97f80.png

图 2 JVM工作方式

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

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

本文来自投稿,不代表访得立场,如若转载,请注明出处:http://www.found5.com//view/1171.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java smp_什么是SMP系统

SMP(Symmetric Multi-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资…

php搭建云服务器,云服务器上如何搭建php环境

1) 安装libtool和libtool-ltdl[rootlocalhost mysql]# yum -y install "libtool*"[rootlocalhost mysql]# yum -y install "libtool-ltdl*"2) 手工修改gd库文件PHP 5.4 也有一些 Bug,在检测 gd 库时会报错,需要我们手工修改。命令如…

php实现文本替换,php 如何实现文字替换

php实现文字替换的方法:首先创建一个PHP示例文件;然后输入代码“str_replace("iwind", "kiki", "i love iwind, iwind said");”;最后输出执行结果即可。在php替换字符效率最高也是最简单字符替换函数str_repl…

php 删除指定html标签,php删除html标签的三种解决办法

分享下PHP删除HTMl标签的三种方法。方法1:直接取出想要取出的标记function strip($str){$strstr_replace("","",$str);//$strhtmlspecialchars($str);return strip_tags($str);}//edit by www.jbxue.com?>方法2.PHP 中有个 strip_tags 函数…

php加载autoload,php自动加载类__autoload()的方法_PHP教程

本文章来给大家简单的介绍一下关于php自动加载类__autoload()的方法,希望此方法对各位同学会有所帮助哦。作用:当在程序中需要实例化一个类,刚好这这类又不是在本文件中,则需要用包含函数将外部文件包含进来。但是,当要…

php http_user_agent 微信浏览器改变为其他浏览器,微信内置浏览器HTTP_USER_AGENT

随着微信的普及和微信公众号的营销日益增多,我们所面对的开发不再仅仅局限于传统的网站,微信开发也成为了我们程序猿的一项必修课程。我们可以借助微信开发者工具进行微信小程序和微信公众号网页开发,但是在微信公众号网页开发过程中&#xf…

达内php第三次月考,达内第三次月考

1. 下列不属于浏览器内置的对象的是:()A. navigatorB. documentC. windowD. request正确答案:D2. Servlet 可以存储数据的三个不同的作用域是()。A. 请求、会话和上下文B. 响应、会话和上下文C. 请求、响应和会话D. 请求、响应和上下文正确答案&#xff…

php与eCharts结合,23.安装php和echarts进行结合展示图表

$dbms‘mysql‘; //数据库类型$host‘192.168.86.131‘; //数据库主机名$dbName‘userdb‘; //使用的数据库$user‘sqoop‘; //数据库连接用户名$pass‘sqoop‘; //对应的密码$dsn"$dbms:host$host;dbname$dbName";$dbh new PDO($dsn, $user, $pass); //初始化一个PD…

java win10 通知,如何使用Java AWT创建和显示Windows 10通知

在Java中, 如何生成不同类型的通知或警报非常令人困惑。一些开发人员更喜欢使用JOptionPane, 但是当你在固定环境中工作时(例如在Windows 10中), 使用Windows的默认通知样式非常好, 因此这就是为什么我们向你展示一个简短的摘要来显示Java AWT轻松实现Windows 10通知。以下代码…

matlab枚举类型,在 Simulink 模型中使用枚举数据

计算中的枚举值按照设计,Simulink 不允许在数学计算中将枚举值作为数值使用,即使枚举类是 MATLAB int32 类的子类也是如此。因此,尽管枚举类型存在基础整数,也不能作为数值类型使用。例如,您不能直接为 Gain 模块输入枚…

mysql数据库表名批量改为小写,MySQL 批量修改表名

2018-12-04 15:33:19CocoaPods安装和使用教程当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他…

dataguard mysql,[dataguard同步数据库]Dataguard环境下数据库的备份与恢复

在线QQ客服:1922638专业的SQL Server、MySQL数据库同步软件在部署完active data guard后,不但可以将只读的查询交给备库执行,还可以把日常的数据库备份工作放在备库上执行,从而减轻主库的压力,充分的发挥服务器资源&am…

matlab求解helmholtz,MATLAB与科学计算(第2版)

第1章 安装及使用前的准备1.1 MATLAB 6.x简介1.1.1 21世纪的科学计算语言1.1.2 MATLAB的发展历史1.1.3 MATLAB 6.x的新特点1.1.4 MATLAB的应用和网上资源1.2 MATLAB 6.x的安装1.3 MATLAB的桌面平台1.3.1 启动MATLAB1.3.2 桌面平台1.4 帮助系统1.4.1 联机帮助系统1.…

php最简单漂亮的excel导出,php把数据表导出为Excel表的最简单、最快的方法(不用插件)...

header("Content-type:application/vnd.ms-excel");header("Content-Disposition:filenamexls_region.xls");$cfg_dbhost localhost;$cfg_dbname testdb;$cfg_dbuser root;$cfg_dbpwd root;$cfg_db_language utf8;// END 配置//链接数据库$link mysq…

php getimagecompose,Docker进阶:Dockerfile以及docker-compose工具

Dockerfile:用来定制镜像的文件Docker-compose:用来部署容器集群的命令工具Dockerfile基本语法FROM:指定基础镜像,格式一般是FROM :FROM必须是Dockerfile的第一条非注释的命令是镜像名,是指定版本,不写的话…

oracle 数字类型行转列,oracle行转列

一、PIVOT实例1. 建表建立一个销售情况表,其中,year字段表示年份,quarter字段表示季度,amount字段表示销售额。quarter字段分别用Q1, Q2, Q3, Q4表示一、二、三、四季度。CREATE TABLE SalesByQuarter( year INT, -- 年份qu…

Redis的安装以及使用

第一步,去官网下载一个压缩包到本地解压即用,绿色软件,不用其他操作,点击Download下载即可: Introduction to Redis | RedisLearn about the Redis open source projecthttps://redis.io/docs/about/第二步&#xff0…

oracle转sparksql工具化,不使用Sqoop流程,利用CacheManager直接完成SparkSQL数据流直接回写Oracle...

以前都是使用Sqoop来完成数据从生成的hdfs数据存储上来抽取至oracle的数据库:sqoop抽取语句:sqoop export --connect "jdbc:oracle:thin:ip:port:sid" --username 用户名 --password 密码 --table sid.表名 --export-dir hdfs://nameservice1/…

oracle+行换列,Oracle的数据表中行转列与列转行的操作实例讲解

行转列一张表查询结果为--行转列select years,(select amount from Tb_Amount as A where month1 and A.yearsTb_Amount.years)as m1,(select amount from Tb_Amount as A where month2 and A.yearsTb_Amount.years)as m2,(select amount from Tb_Amount as A where month3 and…

Oracle和sql语言,SQL语言的四种类型和ORACLE运算符

数据定义语言(DDL)数据操作语言(DML)数据控制语言(DCL)事务控制语言(TCL)Data Definition Language(DDL)DDL使我们有能力创建或删除表格。也可以定义索引(键),规定表之间的链接,以及施加表间的约束。CREATE DATABASE - 创建新数据库ALTER DATABASE - 修改…