java的跨平台原理
最近在学习java,然后听说了许多java的优点,java是个很好的跨平台语言,那么什么是跨平台呢,那么我们就要先懂得java代码的运行是怎么个操作的:
java的跨平台原理
假如我们编好了一个java程序,文件是以.java结尾,例:HelloWorld.java,它以javac.exe被编译成HelloWorld.class的字节码文件,在执行和翻译时候,表面上我们调用的是java.exe,实际上,在调用java.exe的时候,会动态调用JVM(java虚拟机,后面有解释),实际真正起到执行作用的是JVM
什么是JVM
而这里讲到的JVM,就相当于一个“翻译官”,将之前的字节码文件翻译成为当前的平台上人生的可执行的文件格式
这里讲的平台,类似于我们都熟知的windows,Linux,MacOS,这些平台上面都有它们对应的JVM,也就是在JDK中,然后就能实现同一种代码,在这些平台上都可以被翻译执行,也就是我们所说的Write Once,Run EveryWhere
**为了更好的理解:**比如同一个你想表达的意思,在韩国,你可以找韩国的翻译来翻译成韩国人能懂得的意思,在英国,你可以找英国的翻译来翻译执行你要表达的意思,同一个意思在不同国家都得以实现,和前面的跨平台是一个道理。
JAVA也是解释性语言
之前的困惑:很早之前看见过java是编译型的语言,也是解释型的语言,现在明白了,编译型的语言是因为java的你可以说它是编译型的,因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有
而解释型因为java代码编译后不能直接运行,它是解释运行在JVM上的,而JVM的执行方式是把字节码文件一行一行的解释成当前平台认识的可执行文件,所以它是解释运行的,那也就算是解释类型的了。
C语言的跨平台原理
与之相对比的是,c语言的跨平台原理:还是像之前的文件HelloWorld.c ,它在不同平台,比如在Windows上通过Windows的编译器编译成相应的可执行文件在Windows上运行,而不是先产生像java的那种字节码
那么c语言是不是跨平台的语言呢,实际上我们所说的跨平台,是指编译后的文件是否可以跨平台----》从这个角度来讲,c语言不是跨平台的,但是网上有很多人讲c语言是跨平台的语言,这里指的是因为不同平台有对应的编辑器,是源文件跨平台
谁是世界上最好的语言?
那么,回到老生常谈的问题**java和c执行效率谁更高呢?**我们回到两个语言跨平台的原理,java把程序先编译成字节码,然后通过对应的JVM进行一句一句的解释执行,而c语言,则直接通过对应平台的解释器翻译成直接可以在对应平台是执行的文件,从这可以看出,c语言的执行效率是快于java的,那么当别人说:java是全世界最好的语言的时候,我们可以用这个来反驳他hhh