首页 > 后端开发 > 正文

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工作原理

Java工作原理

由四方面组成:

(1)Java编程语言

(2)Java类文件格式

(3)Java虚拟机

(4)Java应用程序接口

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

以上就是我爱编程网为大家带来的java运行原理 java工作原理,希望能帮助到大家!

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“java运行原理 java工作原理”相关推荐
Python中,如何理解单行注释的作用是?
Python中,如何理解单行注释的作用是?

Python中,如何理解单行注释的作用是?在Python中,单行注释以井号(#)开头。井号告诉Python解释器,其后的内容是注释,而不是代码,因此解释器会忽略这部分内容。例如:python复制代码,#这是一个单行注释;print(“Hello,world!”);#这也是一个单行注释。在上述例子中,#这是一个单行注释和#这也是一个单行注释都是注释,Python解释器会忽略它

2024-02-14 22:59:56
visual studio的什么工作负载可以运行java?
visual studio的什么工作负载可以运行java?

vscommunity2019能编译Java教程:在自己已有的项目中右击添加setpeoject,右击ApplicationFolder->Add->项目输出,在ApplicationFolder上右键添加项目输出,注意是你项目的主输出(主程序部分),确定后生成系列文件,在主输出上右键第一个创建快捷方式,将生成的快捷方式可以改成自己希望的程序名称,就是你打包的程序名.exe文

2024-03-20 05:05:29
python里面eval怎么理解
python里面eval怎么理解

python里面eval怎么理解eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。eval是程序语言中的函数。是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。即变量赋值时,等号右边的表示是写成字符串的格式,返回值就是这个表达式的结果。将字符串转成相应的对象(如list、tuple、dict和string之间的转换)

2024-02-04 12:14:03
eclipseJava中文输出乱码是什么原因?
eclipseJava中文输出乱码是什么原因?

eclipseJava中文输出乱码是什么原因?eclipseJava中文输出乱码的原因可能是字符编码与默认的编码不符合导致的。可以尝试以下方法解决:1.修改Eclipse编码设置:点击Eclipse菜单栏的"Window",选择"Preferences";在弹出的窗口中,找到"General"->"Workspace";在右侧的"Textfileencoding"选项中选择合

2024-04-14 03:47:49
华中农业大学python期末考试会考原题吗
华中农业大学python期末考试会考原题吗

华中农业大学python期末考试会考原题吗华中农业大学python期末考试不会考原题。华中农业大学python期末考试考的内容也:Python语言基本语法元素。基本数据类型。程序的控制结构。函数和代码复用。组合数据类型。文件和数据格式化。Python计算生态等等。每年的都不一样。python语言程序设计考什么考试内容包括Python语言的基本语法元素、基本数据类型、程序控制结构、函数

2024-02-05 03:55:35
java web工程打包后tomcat怎么运行的
java web工程打包后tomcat怎么运行的

javaweb工程打包后tomcat怎么运行的Tomcat的项目部署方式有以下三种:1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法。2.在tomcat安装目录中有一个conf文件夹,打开此文件夹,其中包含配置文件server.xml,打开配置文件,并在<host>和</host&gt

2024-03-23 21:49:21
JAVA选择题,解释一下每个选项的对错原因。运行结果题解释一下运行的过程方法。最好详细点,不多的(急!!!Java的习题(需要程序以及运行的结果))
JAVA选择题,解释一下每个选项的对错原因。运行结果题解释一下运行的过程方法。最好详细点,不多的(急!!!Java的习题(需要程序以及运行的结果))

JAVA选择题,解释一下每个选项的对错原因。运行结果题解释一下运行的过程方法。最好详细点,不多的2(1)内部类不能放置static变量,故选C(2)解析:A选项:和接口有关的匿名类不能是abstractclass,因为其不能实例化;B选项:有且仅有实现一个interfaceD选项:static变量属于类3(1)类似一个覆盖override,当然会实现new对象里的method

2024-04-02 02:19:42
java 显示不是内部或外部命令,也不是可运行程序(java程序运行时出现.javac不是内部或外部命令,也不是可运行的程序或批处理文件。已设置好了环境变量)
java 显示不是内部或外部命令,也不是可运行程序(java程序运行时出现.javac不是内部或外部命令,也不是可运行的程序或批处理文件。已设置好了环境变量)

java显示不是内部或外部命令,也不是可运行程序原因:这是因为安装java时把jdk的路径和jre的路径选择成一样,就造成覆盖了,这时候你在lib下也找不都tools.jar和dt.jar.解决:如果只需要使用javac命令其实不需要这么复杂的,可以直接把新建的JAVA_HOME、CLASSPATH这两个变量和PATH变量中的JAVA_HOME%\bin;%JAVA_HOME%

2024-03-19 13:15:57