首先我们应该了解这两种语言的概念 .

高级语言在计算机上执行 , 有两种方式 , 分为编译型语言和解释型语言 .

编译型语言 : 编写源代码–>编译–>链接. 典型的编译型语言 : 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是编译性语言还是解释型语言 ?

Java是编译性语言还是解释型语言 ?相关推荐

  1. java是编译性语言,解释性语言

    看到一个对java的描述,恰好之前笔试也遇到的一个问题:**java是解释性语言还 是编译性语言**.书中对java的描述是这样的:java兼具编译性与解释性,java编译器会将java源码翻译成所谓 ...

  2. 编译性语言和解释性语言的区别

    编译性语言和解释性语言的区别 1.编译性语言 (1)只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以:因此其执行的效率比较高: (2)编译性语言代表:C. ...

  3. python\java\c\解释性语言\编译性语言 程序执行过程

    c时纯粹的编译性语言,执行过程如下图: 可以看出c是通过预处理器.编译器.汇编器和链接器生成可执行的二进制目标文件,然后直接运行(编译性语言的本质).  Java和python是解释性语言,但并不是纯 ...

  4. 编译性语言解释性语言

    计算机是不能理解高级语言,当然也就不能直接执行高级语言了.计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言.任何编程语言编写的程序归根到底都是由底层机器的机器代码(01序列)执行的, ...

  5. 解惑解释性语言与编译性语言

    计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序.      翻译的方式有两种,一个是编译,一个是解释.两种方式只是翻译的时间不同 ...

  6. 解析性语言与编译性语言优劣对比

    高级编程语言分为解析语言和编译性语言,各自代表有Js,python 以及c/c++,golang等,java某种意义上说既是解析语言也是编译性语言. 以下是解析语言与编译性语言的一些优劣对比: 1:效 ...

  7. 编译性语言、解释性语言和脚本语言

    什么是编译性语言.解释性语言和脚本语言 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能值型高级语言编写的程序. 翻译的方式有两种,一个是编译,一个是解 ...

  8. 解释性语言和编译性语言的区别

    解释性语言和编译性语言的区别 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种,一个是编译,一个是解释.两种方 ...

  9. 解释性语言与编译性语言

    首先了解下计算机语言的发展,目前共经历四个时代,或许以后会出现5,6代语言 机器 汇编 高级 C++.Visual C++.Visual Basic .Delphi.Java等屏蔽了机器的细节,提高了 ...

最新文章

  1. R计算贝叶斯信息指标(Bayesian Information Criterion,BIC)实战
  2. 操作系统:小和尚打水+老和尚喝水经典同步问题实现 菜鸟的解题全过程(附具体代码)
  3. vue xss 存在_默认情况下,Vue是否为XSS提供安全性或防御XSS?
  4. sql左连接排序取第一个_详解kettle工具记录集连接功能及实验测试
  5. POJ 3034 Whac-a-Mole(DP)
  6. SAP用Function发布供外部调用的webservice
  7. boost::mpi::wait_any相关用法的测试程序
  8. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)
  9. ssl初一组周六模拟赛【2018.5.12】(期中)
  10. 精华阅读第7期|程序员职业人生规划的三点建议
  11. TP笔记1、TP框架概述
  12. ASCII码表对照图
  13. MOSSE相关滤波目标跟踪论文
  14. 【记要】计算机基础通识知识
  15. 基于transformer的车辆识别
  16. 计算机应用基础 教学工作总结,四年级下期计算机教学工作总结(共3篇)
  17. uni-app商城源码/公众号/小程序/APP多端适配
  18. 常见的数字证书格式与格式转换
  19. OSG学习之几何图形
  20. Tensor.shape[0]的理解

热门文章

  1. Create和OnCreate的关系
  2. R-loop及两种测序技术的介绍
  3. About Wireshark
  4. Linux中分卷压缩和合并解压
  5. xingtai - 学习九九乘法表和皇帝的米粒
  6. CF545C Woodcutters
  7. TCP/IP(十一)TCP滑动窗口和拥塞控制
  8. HTML5和CSS3新特性有哪些
  9. Android 集成友盟推送方案(1)
  10. 客户无盘系统服务器内存,无盘服务器内存大小