java是编译型还是解释型语⾔
python转java代码Java这个语⾔很⾮凡!
⼀、你可以说它是编译型的:因为所有的Java代码都是要编译的,.java不经过编译就什么⽤都没有。
⼆、你可以说它是解释型的:因为java代码编译后不能直接运⾏,它是解释运⾏在JVM上的,所以它是解释运⾏的,那也就算是解释的了。
三、但是,现在的JVM为了效率,都有⼀些JIT优化。它⼜会把.class的⼆进制代码编译为本地的代码直接运⾏,所以,⼜是编译的。
像C、C++ 他们经过⼀次编译之后直接可以编译成操作系统了解的类型,可以直接执⾏的,所以他们是编译型的语⾔。没有经过第⼆次的处理。⽽Java不⼀样,他⾸先由编译器编译成.class类型的⽂件,这个是java⾃⼰类型的⽂件 然后在通过虚拟机(JVM)从.class⽂件中读⼀⾏解释执⾏⼀⾏,所以他是解释型的语⾔,⽽由于java对于多种不同的操作系统有不同的JVM,所以,Java实现了真正意义上的跨平台!
请观看下⾯两张图 了解⼀下Java的虚拟机机制:
(1)java语⾔的编译-->解释--->执⾏过程
(2)java的虚拟机
现在复习的时候,经看到很多地⽅都有⼈在讨论java是哪种类型的语⾔(编译型、解释型),以前稍微有些接触,但是概念⽐较模糊,为了不⾄于让别⼈的思想左右⾃⼰,所以查了些资料,到了很多热⼼⽹友给出的答案,终于有些明⽩。这⾥先给出编译型语⾔和解释型语⾔的定义。
定义:
(1)编译型语⾔:把做好的源程序全部编译成⼆进制代码的可运⾏程序。然后,可直接运⾏这个程序。
(2)解释型语⾔:把做好的源程序翻译⼀句,然后执⾏⼀句,直⾄结束!
区别:
(1)编译型语⾔,执⾏速度快、效率⾼;依靠编译器、跨平台性差些。
(2)解释型语⾔,执⾏速度慢、效率低;依靠解释器、跨平台性好。
总结:
个⼈认为,java是解释型的语⾔,因为虽然java也需要编译,编译成.class⽂件,但是并不是机器可以识别的语⾔,⽽是字节码,最终还是需要 jvm的解释,才能在各个平台执⾏,这同时也是java跨平台的原因。所以可是说java即是编译型的,也是解释型,但是假如⾮要归类的话,从概念上的定义,恐怕java应该归到解释型的语⾔中。
附:
编译型的语⾔包括:C、C++、Delphi、Pascal、Fortran
解释型的语⾔包括:Java、Basic、javascript、python
java编译器和解释器的结构如下图,等搞清楚了再写。。。
本⽂转⾃: ,尊重原创,感谢作者!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论