Java是一种特殊的高级性语言,它既有解释性语言的特征,也有编译性语言的特征,因为它是经过先编译,后解释的过程。
简单说:
HelloWorld.java————>HelloWolrd.class————>特定平台的机器代码
①编译 ②解释
编写出一个HelloWorld.java文件,通过javac.exe解释器编译成了一个不是特定平台(操作系统)的机器码HelloWorld.class文件。当然这种机器码是不可以执行的,必须使用java解释器(java.exe)来执行的。可是java.exe不具有解释的能力,它是调用jvm-java虚拟机来解释成适用当前平台的机器码。
——纸上得来终觉浅,绝知此事要躬行
java compile 只是把source编译成jvm可辨识的中间代码,程序运行时,jvm再把代码根据不同的cpu,不同的os,解释成相应的机器码。所以java能跨平台
java源代码文件是.java文件,经过编译后是.class文件,这是一种中间代码(java字节码),运行时java虚拟机负责执行,java是以此获得跨平台特性和高效率的,因为java程序不是编译成机器码,所以不存在跨系统的问题,此外java虚拟机在程序运行时可以帮助java程序管理资源,所以效率高,这并不是一种解释性的语言。C#也是这种机制的。
应该不算解释性语言,是介于纯粹的编译语言和解释性语言之间的一种形式,为了保证跨平台性和保护源代码的等目的
你只要知道运行需需要jre,编程需要jdk⋯⋯完事
就是用jdk编译为一种中间代码,然后用jre执行这种中间代码
是的!