首页 > 后端开发 > 正文

java运行原理 java工作原理

2024-04-27 14:51:31 | 我爱编程网

java运行原理 java工作原理很多朋友对这方面很关心,我爱编程网整理了相关文章,供大家参考,一起来看一下吧!

本文目录一览:

java运行原理 java工作原理

java运行原理

Java实在”虚拟机“上进行的编译和运行。

解释:在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class文件的内容),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。

java运行原理 java工作原理

简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理

Java编译原理:

Java

虚拟机

(JVM)是可运行Java 代码的假想计算机。只要根据JVM规格描述将

解释器

移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。

一.Java

源文件

的编译、下载 、解释和执行

Java

应用程序

的开发周期包括编译、下载 、解释和执行几个部分。Java编译程序将Java

源程序

翻译为JVM可执行代码?字节码。这一编译过程同C/C++ 的编译有些不同。当C

编译器

编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存

偏移量

,以保证程序运行。Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了Java的可移植性和安全 性。

运行JVM字节码的工作是由解释器来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(class loader)完成。类装载器负责装入运行一个程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调用的类。当类装载器装入一个类时,该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。在本台计算机上的所有类都在同一地址空间内,而所有从外部引进的类,都有一个自己独立的名字空间。这使得本地类通过共享相同的名字空间获得较高的运行效率,同时又保证它们与从外部引进的类不会相互影响。当装入了运行程序需要的所有类后,解释器便可确定整个可执行程序的内存布局。解释器为符号引用同特定的地址空间建立对应关系及查询表。通过在这一阶段确定代码的内存布局,Java很好地解决了由超类改变而使子类崩溃的问题,同时也防止了代码对地址的非法访问。

随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈溢出,非法

数据类型

转化等多种错误。通过校验后,代码便开始执行了。

Java字节码的执行有两种方式:

1.即时编译方式:解释器先将字节码编译成

机器码

,然后再执行该机器码。

2.解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。

通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作

具有较高的效率。对于那些对运行速度要求较高的应用程序,解释器可将Java字节码即时编译为机器码,从而很好地保证了Java代码的可移植性和高性能。

java运行原理 java工作原理

java工作原理

我爱编程网(https://www.52biancheng.com)小编还为大家带来java工作原理的相关内容。

Java工作原理

由四方面组成:

(1)Java编程语言我爱编程网

(2)Java类文件格式

(3)Java虚拟机

(4)Java应用程序接口

当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类 ,通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用 。

以上就是我爱编程网为大家带来的java运行原理 java工作原理,希望能帮助到大家!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“java运行原理 java工作原理”相关推荐
java运行原理 简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理
java运行原理 简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理

java工作原理Java工作原理由四方面组成:(1)Java编程语言(2)Java类文件格式(3)Java虚拟机(4)Java应用程序接口当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类,通过调用类(这些类实现了J

2024-06-15 23:25:04
Java程序编译运行原理 简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理
Java程序编译运行原理 简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理

简述JAVA程序的编辑编译和运行过程第一步(编译):创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cantfindsymbol”的错

2024-05-09 00:57:01
简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理 java8steam底层原理
简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理 java8steam底层原理

简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理Java编译原理:Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。一.Java源文件的编译、下载、解释和执行Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译

2024-06-17 03:32:57
简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理 简述Java应用程序的开发流程。
简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理 简述Java应用程序的开发流程。

简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理Java编译原理:Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。一.Java源文件的编译、下载、解释和执行Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译

2024-06-30 06:04:31
php底层原理 php是如何运行的
php底层原理 php是如何运行的

php底层原理php是如何运行的1、PHP动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。PHP本身是用C实现的,因此最终调用的也是C的函数,实际上,我们可以把PHP看做一个C开发的软件。2、PHP的4层运行体系:(1)Zend引擎:Zend整体用纯C实现,是PHP的内核部

2024-07-26 06:30:06
php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?
php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?

求PHP高手解析一下shuffle函数的实现原理你好,shuffle函数是随机变换数组元素位置,其实思路很简单,我们知道数组都可以计算其长度,$len=count($array)以后,我们只要用循环配合rand(0,$len)随机出一个位置,保存到一个新数组当中,因为在循环中,随机出来的位置可能一样,这时判断该随机位置有没在数组中,若有继续rand,没有则存进数组,直到个数够了,然后在逐个a

2025-01-10 16:12:03
php urlencode()与urldecode()函数字符编码原理详解 phpurlencode()与urldecode()函数字符编码原理详解
php urlencode()与urldecode()函数字符编码原理详解 phpurlencode()与urldecode()函数字符编码原理详解

PHP下编码转换函数mb_convert_encoding与iconv的使用说明在PHP编程中,编码问题通常在处理中文数据时出现。例如,当你使用如ZendStudio或Editplus编写程序,使用GBK编码输入数据,但数据库采用UTF-8编码时,数据需要转换以避免乱码。关于如何转换,PHP提供了两个函数:`mb_convert_encoding`和`iconv`。`mb_convert_e

2024-10-03 08:42:33
java程序不能运行,dos或eclipse都不行。是什么原因?
java程序不能运行,dos或eclipse都不行。是什么原因?

java程序不能运行,dos或eclipse都不行。是什么原因?还有一个path没有设置,path中存放的是电脑中安装的所有可执行程序所在的路径,很显然你的java虚拟机是可执行的程序。建议这么来配置,JAVA_HOME=C:\ProgramFiles\Java\jdk1.7.0这个不变,如果只运行java程序而不启动服务器的话,这个也可以不配。path要在最后面加上%JAVA_HOME

2024-05-11 17:54:47