JAVA程序运行机制

JAVA程序运行机制

这两个类型时机不同

  • 编译型

  • 解释型

什么是编译型语言和解释型语言

​ 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:编译、解释,由此高级语言也分为编译型语言和解释型语言。

主要区别在于,前者源程序编译后即可在该平台运行,后者是运行期间才编译。所以前者运行速度快,后者跨平台性好。

编译型语言

​ 使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。

​ 特点:在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因此只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。

​ 总结:

	1. 一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;
	1. 与特定平台相关,一般无法移植到其他平台;
	1. 现有的C、C++、Objective等都属于编译型语言。

在这里插入图片描述

解释型语言

​ 使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。

​ 特点:解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了响应的解释器即可运行该程序。

​ 总结:

	1. 解释型语言每次运行都需要将源代码解释成机器码并执行,效率较低;
	1. 只要平台提供响应的解释器,就可以运行源代码,所以可以方便源代码移植;
	1. Python等属于解释型语言。
编译型与解释型,两者各有利弊

​ 前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言;

​ 一些网页脚本、服务器脚本以及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释型语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB等等。

关于JAVA

  • 可以说是编译型的,因为所有的Java代码都需要编译,Java源程序不经过编译就什么用都没有
  • 可以说是解释型的,因为Java代码编译后不能直接运行,它是解释运行在JVM上的
  • 又可以说是编译型的,因为JVM为了提高效率会有一些JIT优化,又会把.class的二进制编译为本地可执行的代码运行

像C、C++经过一次编译、没有经过第二次处理即可直接执行,固它们是编译型语言。

Java首先由编译器编译成.class类型的文件(并不是机器可识别的语言),然后通过虚拟机(JVM)从.class文件中读一行解释一行,所以应该算是解释型语言。Java针对不同的平台有不同的JVM,实现了真正意义上的跨平台。所以Java语言有一次编译到处执行的说法。

Java程序(虚拟机)运行机制
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值