因为java程序是采用编译执行的,先将java源文件编译成class字节码文件,运行的时候再通过虚拟机一步一步的解释成各个平台能识别的机器码文件,意思就是java程序并没有一次性生成和平台有关的机器码文件,而是在运行的时候再生成与平台有关的机器码文件
java是跨平台的,就是生成的class文件拿到任何系统平台都能运行,其实是建立在虚拟机上的,也就是jvm,你装jkd的时候就带了。
所有的java程序都是在虚拟机也就是jvm是运行的,而且jvm的版本也不同,有windows版本的还有linux版本的,正是因为有了不同的jvm才使得java可以跨平台。简单的说就是因为jvm的不跨平台才导致了java的跨平台,其实是一个过度。不象c语言他没有jvm,通过 *** 作系统内核来编译,windows的 *** 作系统编写的c,拿到linxu下就用不了。
打个比方,就象大家所知道的看**有一种文件叫rmvb格式的,它拿到哪个平台都能运行,那是因为有realplayer,暴风等播放器的原因。不同的播放器有windows版 和linux版一个道理。
JAVA程序是以字节码的形式运行在JAVA虚拟机中(JVM),SUN提供了不同平台的虚拟机,从而实现跨平台
JAVA运行是分两步的,和C不一样,因为他有面向对象特点,运行哪个是客户决定的,客户决定运行什么就运行什么,所以运行效率相对较低,例如B继承A,创建A类型对象C=new B()那么C执行B类从A类继承的方法,如果new A()就执行A类方法,所以如果把JAVA中的类全声明成final类,就是没有继承,那么执行效率和c就没区别了,也就是去意义了
javalang包。System类位于javalang包,代表当前java程序的运行平台,系统级的很多属性和控制方法都放置在该类的内部。位于javalang包中,它是系统类,代表程序所在系统,提供了对应的些系统属性信息和系统 *** 作final类型。
以上就是关于java虚拟机为什么能够让java程序运行在不同平台全部的内容,包括:java虚拟机为什么能够让java程序运行在不同平台、java为什么可以跨平台执行、Java平台是什么其运行原理与一般的 *** 作平台有何不同等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)