Java是解释型还是编译型?

Python014

Java是解释型还是编译型?,第1张

它既不属于传统的编译型语言也不属于解释型语言。它是先编译成.CLASS字节码文件,然后再利用虚拟机解释执行的.可以说先编译后解释吧。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程[1]  。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2]  。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3]  。

20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度。Sun公司为了抢占市场先机,在1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。

由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大。另外由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,他们首先着眼于语言的开发,假设了一种结构简单、符合嵌入式应用需要的硬件平台体系结构并为其制定了相应的规范,其中就定义了这种硬件平台的二进制机器码指令系统(即后来成为“字节码”的指令系统),以待语言开发成功后,能有半导体芯片生产商开发和生产这种硬件平台。对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。

高级计算机语言主要有两种类型:编译和解释。

编译语言:在程序运行之前,它有一个单独的编译过程,它将程序转换成机器语言,以后不再需要翻译。

解释语言:运行时将程序翻译成机器语言,因此速度比编译语言慢。

因此,两者之间最大的区别是是否保存目标机代码:编译器会在一些单位输入源程序(如基本块/函数/方法/微量)生成目标机代码,都放下(无论是在磁盘或内存)的后续执行可重复使用;解释的的解释,一个实现在一个源程序指令的解释,没有目标代码的存在,没有后续执行可重用信息。

所以,java是一种解释性的语言

像C和C++,他们可以直接编译成操作系统识别的类型编译后,就可以直接执行,所以他们是编译语言。未经治疗的二倍,他不是为java首先被编译成相同。类文件,这是java的文件类型,然后通过虚拟机(JVM)的解释和执行读一行的类文件,所以他是解释型的语言,和java的各种操作系统不同的JVM,java实现跨平台的真正意义!

因此,java的解释器的优点是,它是用户实现自己的跨平台的代码更容易,和代码相同的设置几乎可以在所有操作系统执行。

这是一个跨平台的java,并可在任何地方运行:跨平台的java是基于JVM。Java虚拟机是由软件或硬件模拟的计算机程序,java,计算机所有的.class文件是运行在JVM,即JVM *。只有Java类文件,以适应不同的操作系统,让操作系统的安装按照不同只要JVM的类型,然后程序无论哪个操作系统的JVM可以纠正窗口/其他...... JVM的Unix / JVM的实现因此,如果没有JVM,就不能跨平台。

有些答案对JAVA的理解还停留在上古时代或者教科书里。其实,现在用编译型、解释型来分类编程语言已经有点力不从心了。JAVA的第一道工序是javac编译,当然目标文件是BYTECODE。后续可能有三种处理方式:1. 运行时,BYTECODE由JVM逐条解释执行,2. 运行时,部分代码可能由JIT翻译为目标机器指令(以method为翻译单位,还会保存起来,第二次执行就不用翻译了)直接执行;3. RTSJ。继JAVAC之后执行AOT二次编译,生成静态的目标平台代码(典型的就是IBM WEBSHPERE REAL TIME)。有的时候,可能是以上三种方式同时在使用。至少,1和2是同时使用的,3需要程序员手工指定。所以讨论语言得更细化一点了,强类型的、弱类型的,静态的、动态的,GC-based的、手工管理内存的,有没有VM...