码迷,mamicode.com
首页 > 其他好文 > 详细

解释性,和编译性

时间:2018-08-03 23:13:13      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:针对   机器语言   运行   区别   字节   执行   后缀   com   java程序   

JAVA

  JAVA语言是一种编译型-解释型语言。同一时候具备编译特性和解释特性(其所谓的编译过程仅仅是将.java文件编程成平台无关的字节码.class文件,并不是像C一样编译成可执行的机器语言)。

  作为编译型语言,JAVA程序要被统一编译成字节码文件——文件后缀是class。此种文件在java中又称为类文件。java类文件不能再计算机上直接 执行,它需要被java虚拟机翻译成本地的机器码后才能执行,而java虚拟机的翻译过程则是解释性的。

C#

C#语言是编译型语言,但其“编译”过程比较特殊,具体说明如下:

  C#程序在第一次运行的时候,会依赖其.NET Frameworker平 台,编译成IL中间码),然后由JIT compiler翻译成本地的机器码执行。从第二次在运行相同的程序,则不需要再执行以上编译和翻译过程,而是直接运行第一次翻译成的机器码。所以对于 C#来说,通常第一次运行时间会很长,但从第二次开始,程序的执行时间会快很多。
  那么,C#为什么要进行两次“编译”呢?其实,微软想通过动态编译(由JIT compiler工具实现)来实现其程序运行的最优化。如果代码在运行前进行动态编译运行,那么JIT compiler可以很智能的根据你本地机器的硬件条件来进行优化,比如使用更好的register,机器指令等等,而不是像原来那样,build一份程序针对所有硬件的机器跑,没有充分利用各个机器的条件。
 
参考地址:

解释性,和编译性

标签:针对   机器语言   运行   区别   字节   执行   后缀   com   java程序   

原文地址:https://www.cnblogs.com/Jacob-Wu/p/9416684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!