什么是编译型语言?什么事解释型语言?java是解释型语言吗?

编译型语言:C/C++、 Pascal(Delphi)

编译就是把源代码(高级语言,人类容易读,容易理解)转换成机器码(CPU能理解,能高效的执行)

解释型语言:JavaScript、Perl、Python、Ruby

解释就简单多了,解析源代码,并且直接执行,没有编译过程

编译程序是整体编译完了,再一次性执行。 而解释程序是一边解释,一边执行

JAVA语言是一种编译型-解释型语言,同时具备编译特性和解释特性 其所谓的编译过程只是将.java文件编程成平台无关的字节码.class文件, 并不是向C一样编译成可执行的机器语言,在此请读者注意Java中所谓的“编译”和传统的“编译”的区别。

作为编译型语言,JAVA程序要被统一编译成字节码文件——文件后缀是class。此种文件在java中又称为类文件。 java类文件不能再计算机上直接执行,它需要被java虚拟机翻译成本地的机器码后才能执行,而java虚拟机的翻译过程则是解释性的。 java字节码文件首先被加载到计算机内存中,然后读出一条指令,翻译一条指令,执行一条指令,该过程被称为java语言的解释执行,是由java虚拟机完成的。 以上说的是Java的解释执行,但是比如我们大多数情况使用的Hotspot JVM,都提供了动态编译器编译器JIT,能够追踪热点代码, 然后变成机器指令,这种情况下部分热点代码就属于编译执行,而不是解释执行了。

除了我们日常最常见的Java使用模式,其实还有一种新的编译方式,即所谓的AOT(Ahead-of-Time Compilation),直接将字节码编译成机器代码,这样就避免了JIT预热等各方 面的开销,比如Oracle JDK 9就引入了实验性的AOT特性,并且增加了新的jaotc工具。

而且,Oracle JDK支持分层编译和AOT协作使用,这两者并不是二选一的关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值