解释型语言和编译型语言的区别

在之前一篇JavaScript文章中提到了解释性语言和编译性语言的一点区别,这里特查阅了相关资料总结完善一下二者之间的区别。

编译和解释的概述:

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

而这种转换的方式有两种:

1)编译

2)解释

由此高级语言也分为编译型语言解释型语言两种方式只是翻译的时间不同

编译型语言:

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

特点:

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

总结:

1)一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;

2)与特定平台相关,一般无法移植到其他平台;

3)现有的C、C++、Objective等都属于编译型语言。

编译型语言与解释型语言




  1. 其实,确切的说java就是解释型语言,其所谓的编译过程只是将.java文件编程成平台无关的字节码.class文件,并不是向C一样编译成可执行的机器语言,在此请读者注意Java中所谓的“编译”和传统的“编译”的区别

  2. 作为编译型语言,JAVA程序要被统一编译成字节码文件——文件后缀是class。此种文件在java中又称为类文件。java类文件不能再计算机上直接执行,它需要被java虚拟机翻译成本地的机器码后才能执行,而java虚拟机的翻译过程则是解释性的。java字节码文件首先被加载到计算机内存中,然后读出一条指令,翻译一条指令,执行一条指令,该过程被称为java语言的解释执行,是由java虚拟机完成的。而在现实中,java开发工具JDK提供了两个很重要的命令来完成上面的编译和解释(翻译)过程。两个命令分别是javac.exe和java.exe,前者加载java类文件,并逐步对字节码文件进行编译,而另一个命令则对应了java语言的解释(javacexe)过程。在次序上,java语言是要先进行编译的过程,接着解释执行。

  3. Java语言比较特殊,由其编写的程序需要先编译,但此编译不会生成特定平台的机器语言文件,而是生成一种和平台无关的字节码文件,也就是*.class文件,这种字节码文件不是可执行文件,它必须使用特定平台的解释器来解释执行。

    Java语言要先编译后解释



  4. 先编译成字节码文件,也即*.class文件:

  5. 程序员使用Java语言编写的*.java源文件,需要使用javac编译器编译成字节码文件,也即*.class文件。

  6. 注意:该字节码文件与平台无关,可被特定平台的Java解释器执行。

    Java语言要先编译后解释


  7. 然后根据不同平台的Java解释器,将字节码文件解释成特定平台的机器文件:

    Java语言中负责解释字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)。不同平台,各自实现了其JVM,JVM向编译器提供相同的编程接口,所以可解释编译器生成的字节码文件,将其解释成特定平台的机器语言文件。

    Java语言要先编译后解释
    Java语言要先编译后解释


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值