由于c语言只能在特定的环境下运行,不适应现在网络的千变万化,所以,为了适应要求,为了实现:一次编写,处处运行,伟大的开发者们开发了java语言。
jvm,java虚拟机。不同版本的jvm会适应不同的操作系统,,,比如,手机的jvm叫做安卓系统。jvm解释执行所编写的java代码。
源代码的执行方式有两种:口译和笔译。jvm就相当于一个翻译,但这种方式会使得java代码比直接执行可执行文件会慢。c语言是直接执行.exe文件,速度最快。java是先进行翻译,再执行可执行文件。但是相比同样的解释类basic语言,java比他快的多,,,因为java有个预先编译。做了一个初次的编译,后面再二次,三次加工,就好像羊吃草,先全吃了,晚上再反刍。我们写的java文件的扩展名是.java,这个java文件是ASCII码文件,和c语言程序一样,必须通过java的编译,先编译成字节码文件。这个字节码,人是看不懂的,它更趋向于机器语言,但它不是某种特定的机器语言,不是某一个特定指令体系下的机器语言,而是一个类似于机器语言,但又不是机器语言的一个中间的语言。这个中间的语言,在通过不同的jvm(比如手机的jvm和Windows的jvm是不一样的)中把相同的字节码,翻译成适应于本系统的机器代码,也就是说,java的运行模式,是对java的源代码进行初次编译,编译形成的中间代码,再经过最终编译,而最终编译时,由于中间编译的结果更倾向于机器,机器解释起来远比机器直接解释ASCII码速度要快的多。这个中间语言,宁可让机器看懂,也不让人看懂。这就是为什么basic语言远比java语言慢了成千上万倍。同样是解释方式,一个是从头解释,一个是从中间解释。
我们编写的源文件是.java文件,而编译成的字节码文件是.class文件;
如果任意一个"机器"的系统上有适应于自己的jvm,那么,我们就可以把一个class文件,用这个机器来解释,解释出来的,将是适用于自己当下系统的机器语言指令,也就使得java具有跨平台性。