什么是字节码?java为什么可以实现跨平台性?

  • java中的编译器与解释器
    java中引入了虚拟机(JVM)的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个公共的接口。
    编译程序只需要面对JVM,生成JVM能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在java中,这种供虚拟机理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。
    每一种平台的解释器是不同的,但是实现的虚拟机是相同的,java源程序经过编译器后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。这也就解释了java编译与运行并存的特点。
    流程:java源代码-->编译器-->JVM可执行的java字节码(即虚拟指令)-->JVM-->JVM中解释器-->机器可执行的二进制机器码-->程序运行。
  • 采用字节码的好处:
    java语言通过字节码的方式,在一定程度上解决了传统解释性语言的执行效率低的问题,同时又保留了解释型语言可移植性的特点。所以java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,java程序无需重新编译就可以在不同的计算机上运行。
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 18:25
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务