编译_解释_java

以下是个人拙见,希望大家指正

  • 编译型语言:针对特定的平台(操作系统,指令集体系),通过指定平台的编译器一次性编译成特定平台的机器指令,再次执行时效率高,但是跨平台时,由于不同的机器的指令集可能不同,对同一机器指令的解析结果可能不同甚至无法解析,所以必须将源代码复制到新的机器上,针对特定平台利用该机器的指令集重新编译。

  • 解释性语言:逐行解释成特定平台的机器码,边解释边执行,但是每次执行都需要重新编译一次,但是只需要提供特定平台的解释器,就可以实现跨平台,所以程序的移植是以效率为代价的。

  • 解释型和编译型比较:
    1.编译型效率高,跨平台困难
    2 解释型可以通过解释器跨平台,但是效率相对降低

  • JDK包括:

  1. java编译器
  2. JRE【JVM,类加载器,字节码校验器等】
  3. java类库
  • java(半编译半执行,均不纯粹):编译器对不同语言提供相同的编程接口,使得编译器可以将它们转化成可以被jvm解释执行的二进制字节码文件(与平台无关),并且编译器只需要面对jvm即可,(怀疑jvm对不同的平台也提供了相同的接口,使得在不同的平台上可以被转化成不同的机器代码执行)

  • 半编译在于:均需要一次性编译;但是编译出来的不是最终与特定平台相关的机器代码,而是平台无关的字节码,实现了跨平台。

  • 半执行在于:均需要类似解释器(转换器)的东西解释成特定机器的机器代码;但是解释型每次执行时需要解释一次,java虚拟机可以保留中间的字节码文件,效率改善了。

  • 所以这是两种运行机制优点的结合

本文地址:https://blog.csdn.net/qq_42349617/article/details/112051549

相关推荐:

为什么Python解释器在多核CPU下无法跑满负载_解析GIL锁对多线程的影响

根本原因是CPython解释器的GIL强制所有线程争抢同一把锁,任意时刻仅一个线程执行Python字节码;IO操作会主动释放GIL,但纯计算任务中GIL锁死导致多核无法并行。 Python多线程在多核CPU上跑不满负载,根本原因不是线程没调度、不是系统不支持、也不是代码写错了——而是CPython解...