1、JAVA
Java是可以跨平台的编程语言,那我们首先得知道什么是平台,我们把CPU处理器与操作系统的整体叫平台。
C语言是编译执行的,编译器与平台相关,编译生成的可执行文件与平台相关;
Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码也与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是与平台相关的,也就是不同的平台需要不同的解释器。
在执行的时候,表面上我们调用的是Java.exe,实际上我们在调用java.exe的时候,会去动态调用JVM虚拟机,JVM将字节码文件一行一行的解释成为当前操作系统认识的可执行文件的格式,因此,java是一个“解释型”语言。
Java是编译型的语言,也是解释型的语言,现在明白了,编译型的语言是因为java的你可以说它是编译型的,因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有
而解释型因为java代码编译后不能直接运行,它是解释运行在JVM上的,而JVM的执行方式是把字节码文件一行一行的解释成当前平台认识的可执行文件,所以它是解释运行的,那也就算是解释类型的了。
2、C语言的跨平台原理
那么c语言是不是跨平台的语言呢,实际上我们所说的跨平台,是指编译后的文件是否可以跨平台,从这个角度来讲,c语言不是跨平台的,但是网上有很多人讲c语言是跨平台的语言,这里指的是因为不同平台有对应的编辑器,是源文件跨平台.
3、效率问题
我们回到两个语言跨平台的原理,java把程序先编译成字节码,然后通过对应的JVM进行一句一句的解释执行,而c语言,则直接通过对应平台的解释器翻译成直接可以在对应平台是执行的文件,从这可以看出,c语言的执行效率是快于java的。