基本概念

  1. 什么是编译型语言?编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制),比如C和C++.
    编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。
  2. 什么是解释型语言?解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释性语言必须先解释再运行。

要知道java到底是编译型语言还是解释型语言,就要理清楚java源代码文件(.java)到机器码的整个过程。

源代码文件的旅行

  1. 程序员编写的java代码就是源代码,格式为.java。
  2. 经过了javac(正常是IDE自动编译的)编译后,就是class文件,也叫字节码(bytecode)文件,格式是.class,当打开class文件会发现内容如下:

    字节码文件本质是二进制文件,只是以16进制表示。
  3. jvm上场,jvm有JIT(即时编译器),AOT(提前编译器),还有解释器。
  • AOT可以把字节码文件在运行之前提前编译为二进制的本地机器码(计算机的机器码)
  • JIT可以在运行期间把热点代码编译为本地机器码。
  • 解释器可以一边解析字节码文件一边编译为本地机器码执行。

正常情况下,是解释器和JIT配合,当然也可以AOT,或者只有AOT也可以,常用的HotSpot是解释器和JIT配合,可以配置AOT。

总结

从概念和java文件的旅行中我们可以得出以下结果:

  1. Java文件编译成字节码文件(二进制)就是编译过程,是编译型语言。(jvm也是一种机器,字节码就是jvm的机器码)
  2. 字节码文件一边解析一边执行的过程就是解释过程,是一种解释型语言。
  3. 字节码文件通过AOT提前编译成本地机器码的过程,是一种编译型语言。
  4. JIT是在运行期起作用的,不是执行之前,可以看做解释过程的优化。

由于通常用的是HotSpot虚拟机,并且基本是解释器都有使用,所以我们通常说java即是编译型又是解释型语言。例外:三大虚拟机之一的JRockit,没有解释器,所以对它来说,java是编译型语言。

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

  1. 1. Java是编译型语言还是解释型语言?

    一.理解什么是编译型语言和解释型语言 首先,计算机是不能理解高级语言的.更不能直接执行高级语言,它只能理解和执行机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也 ...

  2. java是编译型语言还是解释型语言_什么是编译型语言和解释型语言?

    首先什么是编译型语言和解释型语言? 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码 ...

  3. Java属于编译型语言还是解释型语言

    文章目录 引言 区别 编译型语言 解释型语言 关于Java 声明: 引言 计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序.翻 ...

  4. java属于编译_《程序员修炼之道》-读书笔记一-Java到底属于编译型语言还是解释型语言?...

    Java到底属于编译型语言还是解释型语言? 要想知道Java属于编译型语言还是解释型语言我们需要知道他们的定义和区别 定义: 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序.然后,可直接运 ...

  5. 【Java基础】面向对象与面向过程、编译型语言与解释型语言

    1 面向对象与面向过程 面向过程:类调用需要实例化,开销大,比较消耗资源,所以当性能是最重要的因素是,比如单片机.嵌入式开发.Linux.Unix等一般采用面向过程开发.常见语言:C. 面向对象:面向 ...

  6. Java语言是编译型语言还是解释型语言?(Java程序执行过程)

    Java语言是编译型语言还是解释型语言? 我们都知道,编程语言从程序执行过程分,分为编译型语言和解释性语言 什么是编译型语言和解释型语言? Java语言看似是编译型的,因为Java程序代码的确是需要经 ...

  7. 编译型语言和解释型语言(转载)

    在具体计算机上实现一种语言,首先要确定的是表示该语言语义解释的虚拟计算机,一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言.这个问题决定了语言的实现.根据这个问题的回答 ...

  8. 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

    编译型语言和解释型语言 1.编译型语言 需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言.一般需经过编译(compile).链接(linker)这两个步骤.编译是把源代码编译成 ...

  9. 辨异 —— 不同的编程语言(编译型语言、解释型语言、动态语言、静态语言)...

    Java 越来越强大,覆盖领域也越来越多,变得无所不能的时候,和那些仅专注于一个领域的的编程语言相比,它反而显得不够专业: 1. 算符优先级 优先级意味着结合律: C/C++:位运算符(&|^ ...

最新文章

  1. How to get ABAP code coverage result
  2. java2的7次方怎么表示_静态市盈率要怎么看?
  3. 浅谈大型网站之负载均衡架构
  4. “做好大数据测试,我是认真的!”
  5. MYSQL安装与库的基本操作
  6. 搜索二叉树之字典实现
  7. java webservice 客户端_Java Webservice客户端(最佳方法)
  8. 年后跳槽必备的 Java 题库,全网最全!
  9. 我搭建Wiki网站的步骤
  10. LeetCode每日一题: 搜索插入位置(No.35)
  11. php mysql搜索功能并分页_php实现搜索和分页效果-亲测有效
  12. 豆瓣评分9.0以上,数据分析、爬虫、Python等书籍,45本包邮送到家!
  13. keytool命令详解 自签名证书
  14. 误删libcrypto.so.1.0.0
  15. 国家计算机机房地址,国家电子计算机机房设计规范..doc
  16. Processing 椭圆运动模拟
  17. 社交APP市场泥沙俱下,怎能脱颖而出
  18. 一文搞懂linux时间片,硬件时钟,软件时钟,实时时钟,时间中断,墙上时间
  19. HBase的协处理器(Coprocessor)、HBase如何使用二级索引、observer协处理器、 endpoint协处理器、Hbase 协处理器加载方式
  20. 人工智能学习路线(转载)

热门文章

  1. Redis-简单介绍及基本数据类型【随笔一】
  2. 河北大学本部导航系统(c语言实现)
  3. 有一条长阶梯:如果每步跨 2阶,那么最后剩 1 阶;如果每步跨 3 阶,那么最后剩 2 阶;如果每步跨 5 阶,那么最后剩 4 阶;如果每步跨 6 阶,那么最后剩 5 阶;只有当每步跨 7 阶时,最后
  4. 阿里P8架构师深度概述互联网分布式架构
  5. 谈谈 雷达信号处理之脉冲压缩
  6. win10系统保存文件到桌面需要刷新才显示解决办法
  7. 如何轻松拥有属于自己的淘宝店手机客户端?
  8. 智汇华云|安超云套件Archer Cloudsuite为“信创强国”筑基
  9. 【Lintcode】125. Backpack II
  10. JAVA API1.8中文版 谷歌翻译 最准确最全的翻译版本!蓝奏下载