Java是编译性语言还是解释型语言 ?

news2024/9/30 3:21:09

首先我们应该了解这两种语言的概念 .
高级语言在计算机上执行 , 有两种方式 , 分为编译型语言和解释型语言 .

编译型语言 : 编写源代码–>编译–>链接. 典型的编译型语言 : C/C++ .

特点 : 源代码中一处有错 , 就不允许编译 ; 编译过程中出现一处错误 , 就停止编译 .

优点 : 直接运行生成最终产物 , 以C语言为例 , 最终产物就是二进制机器代码 , 速度快 , 效率高 !

解释性语言 : 编写源代码 , 一行一行解释执行 , 而不是一次编译全部代码 . 典型的解释型语言 : JavaScript , Python , Matlab .

特点 : 边解释 , 边执行 .

优点 : 源代码有错照样能解释执行 , 遇到错再停下 .

缺点:不断地对源代码进行解释、执行、解释、执行 . 由于解释型程序是将翻译过程放到执行过程中 , 这就决定了解释型程序注定要比编译型慢上一大截,而且每次运行程序 , 都要对源代码进行重新解释 , 而不是执行最终产品 , 所以速度比编译型慢得多得多 .

Java比较特殊 , 是编译型 + 解释型 .

Java的编译器先将其编译为class文件,也就是字节码;然后将字节码交由JVM(java虚拟机)解释执行;所以很多地方都说“Java是一种半编译、半解释执行”的语言 .

看上去陷入了一个困境,Java到底是编译型语言呢,还是解释型语言呢?

一种朴素的判定方式:如果翻译器部分较为简单,我们说这个语言是“解释的”,反之如果翻译器部分很复杂,我们就说这个语言是“编译的” .事实上这两者之间的界限是模糊的,因为“简单”和“复杂”都具有主观性 . “解释型”和“编译型”并不是一个清晰的描述 . 故强行将某种具有混合形式的语言划入两者之一是不当的。
但实践中肯定还是有进行分类的需求,所以这里有一条启发性原则用以判断语言的类型:

如果翻译器对程序进行了彻底的分析而非某种机械的变换,而且生成的中间程序与源程序之间没有很强的相似性,我们就认为这个语言是编译的 . 彻底的分析和非平凡的变换,是编译方式的标志性特征 .

因此,从这一角度讲 , Java应当被认作一种编译型语言 .

由Java的代码执行过程可知 ,一个Java 代码的执行过程是由 . Java–>. class–>对应平台机器码 ;

  1. . Java–>. class是由 Javac 编译,这个过程符合编译型语言的特点 (一次性编译,注意并未编译为实际平台的机器码) .
  2. 而. class–>对应平台机器码 的这一过程 是由Java解释执行 (逐行解释为特定平台机器码)这一过程符合解释语言的特点 ;

我本人更倾向于Java既是编译型语言语言 ,又是解释型语言。

参考文章 : Java是编译性语言还是解释型语言 ?

在这里插入图片描述

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

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

相关文章

论文投稿指南——中文核心期刊推荐(武器工业)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

4个免费数据恢复软件:免费恢复您的数据

意外的文件删除或文件损坏可能会令人头疼,尤其是在您不使用云存储的情况下。两者通常都支持已删除的文件恢复和版本控制,以帮助您摆脱此类困境。如果您不使用云,通常唯一的机会就是使用数据恢复软件来找回丢失或损坏的数据。 这种方法有两个…

使用 Burpsuite 测试的常用操作(二)

大家好啊,我是大田。接上篇文章「 使用 Burpsuite 测试的常用操作(一)」,今天继续分享一下 Burpsuite 在工作中常用操作三、本文中 2 个常用操作1、Burpsuite_proxy 篡改请求通过代理模式可以拦截、查看、修改所有客户端和服务器端…

(二)Linux嵌入式开发——软件安装(Ubuntu)

文章目录(二)Linux嵌入式开发——软件安装(Ubuntu)APP StoreAPT工具问题解决办法1解决办法2deb软件包程序源码问题1解决办法问题2解决办法总结(二)Linux嵌入式开发——软件安装(Ubuntu) 接下来,…

【GD32F427开发板试用】FOC矢量算法研究系列之一:PWM实现呼吸灯

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:Q_dGHvwj 前言 有幸被选为此次开发板测评活动的参与者,万分感谢。收到板子后迫不及待的拆来查看,画风整齐美观&#x…

SpringCloudAlibabaNacosConfig学习笔记

目录 1. Nacos配置中心使用 2 搭建nacos-config服务 3 Config相关配置 4 .配置的优先级 5. RefreshScope 1. Nacos配置中心使用 官方文档: https://github.com/alibaba/springcloudalibaba/wiki/Nacosconfig Nacos 提供用于存储配置和其他元数据的key/value 存…

23种设计模式(十三)——代理模式【接口隔离】

文章目录 意图什么时候使用代理真实世界类比代理模式的实现代理模式的优缺点亦称:Proxy 意图 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 什么时候使用代理 1、…

论文投稿指南——中文核心期刊推荐(环境科学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

操作系统-操作系统引论(1)

操作系统的基本概念一、操作系统的定义二、操作系统的产生与发展三、操作系统的特征四、操作系统的功能五、操作系统的运行机制六、操作系统的体系结构一、操作系统的定义 资源管理的观点:操作系统是控制和管理计算机的软、硬件资源,并且合理的组织计算…

通过C++对【图】进行抽丝剥茧(包括广度、深度优先遍历,求最小生成树,求最短路径)

目录 一.图的基本概念 二.图的存储结构 1.邻接矩阵 (1)无向图、有向图矩阵存储 (2)实现: 2.邻接表 (1)无向图邻接表存储 (2)有向图邻接表存储 (3&a…

windows下运行ROSEFusion

其实LZ已经不再是两年前的Linux小白了,至于为什么要在windows下配置环境,是因为LZ在Linux下已经成功编译成功了ROSEFusion,但运行时一直报错Frame could not be processed,在github下的issue里面查询得知可能是CUDA版本问题。另外…

VM16 Pro+ubuntu20.04.5+GAMIT10.71安装(20230118更新包)

VMware Workstation 16 Proubuntu20.04GAMIT10.71安装测绘老中医(qq8212714)(2023-01-20)NOTE:安装环境:Windows 10 专业版,64 位操作系统, 基于 x64 的处理器1、首先在计算机中安装VMware Workstation 16 …

交叉编译(全志)

文章目录一、交叉编译概念二 、香橙派交叉编译3.带WiringPi库的交叉编译一、交叉编译概念 交叉编译,就是:在一种平台上编译,编译出来的程序,是放到别的平台上运行即编译的环境,和运行的环境不一样,属于交叉…

【基础】高低位和大小端

大小端模式出现是为了兼容不同CPU采用的不同的指令集 PowerPC架构和x86架构采用的是不同的CPU指令集。PowerPC采用精简指令集(RISC,reduced instruction set computer),x86指的是特定微处理器执行的一些计算机语言指令集。 Powe…

Obsidian 插件(一):DataView 的使用

文章目录DataView 的使用一、 环境配置二、 入门介绍1、 快速开始2、 页面和字段3、 创建查询4、 系统字段三、 接口讲解1、 表达式1.1 概述1.2 表达式类型1.3 特定类型的交互2、 函数2.1 构造器2.2 常用函数2.3 工具函数DataView 的使用 一、 环境配置 首先,我们…

ESP32设备驱动-DHT11温度湿度传感器驱动

DHT11温度湿度传感器驱动 1、DHT11介绍 DHT11数字温湿度传感器是一种复合传感器,包含一个经过校准的温湿度数字信号输出。 应用了专用的数字模块采集技术和温湿度传感技术,确保产品具有高可靠性和优异的长期稳定性。 该传感器包括一个电阻感湿元件和一个 NTC 温度测量装置,…

LeetCode题目笔记——1814. 统计一个数组中好对子的数目

文章目录题目描述题目难度——中等方法一:模拟(超时)(参考)代码/Python方法二:优化代码总结题目描述 给你一个数组 nums ,数组中只包含非负整数。定义 rev(x) 的值为将整数 x 各个数字位反转得…

Kong Api Gateway

Kong Api Gateway什么是API 网关为什么是 Kong安装Kong通过包管理器来安装启动Kong配置文件详解1、常规配置2、Nginx注入配置3、数据库存储配置4、数据库缓存配置DNS解析器配置其他杂项配置API 管理详解1、查看节点信息2、查看节点状态3、添加服务4、查询服务5、查询所有服务6、…

golang入门笔记——Hertz

文章目录Hertz介绍应用层路由层协议层传输层HZ脚手架Hertz的使用一个简单的案例:利用Hertz监听8080端口并编写/ping的get处理函数Hertz和gin一样,提供了分组路由的功能Hertz路由的匹配优先级:静态路由>命名路由>通配路由参数绑定&#…

SD卡读写实验(SPI模式)

对于 SD 卡的 SPI 模式而言,采用的 SPI 的通信模式为模式 3,即 CPOL1,CPHA1,在 SD 卡 2.0 版本协议中,SPI_CLK 时钟频率可达 50Mhz。SD 卡的 SPI 模式,只用到了 SDIO_D3(SPI_CS)、SD…