Java虚拟机可以执行的语言并不是只有Java语言,比如jython也可以

运行在Java虚拟机上。不明白字节码之前觉得挺疑惑,为什么和Java

完全不同语法的程序语言也可以运行在虚拟机上呢?

不得不承认创建Java语言的人具有极大的想象力和前瞻性,

就像所有的程序语言真正运行时候都得变成机器指令一样,

所有在jvm上执行的语言都得变成jvm认可的字节码,而Java

只是其中一种实现。Java语言只是字节码指令组合的一个子集。

class文件是以8字节为单位的二进制流,和xml等文件不同,

class文件上存储的没有冗余数据。这样的文件可读性虽然差,

但是节省空间,符合虚拟机执行的需求。当然,如果我们想修改

字节码来改变class文件也是比较复杂的,因为位置,顺序等基本被

严格限制死了。

class文件的前四个字节值为0xCAFEBABE,这个确定文件格式

的魔数,因为文件的后缀名是可以随意更改的。紧接着魔数的

四个字节存储的是class文件的版本号。根据向下兼容的原则,

高版本的jre可以执行低版本的class文件,反之则不行。当然判定

的依据就是这个版本号。

最新文章

  1. SVO原理解析
  2. 【javascript 技巧】谈谈setTimeout的作用域以及this的指向问题
  3. xp_sendmail: 由于邮件错误 0x80004005 而失败
  4. 关于css样式2
  5. 开源库Magicodes.WeChat.SDK总体介绍
  6. oGrid 初探
  7. USACO Section 3.1: Contact
  8. Web程序员最常用的11款PHP框架
  9. sql语句实现随机取n条数据(转)
  10. SqlServer死锁与阻塞检测脚本
  11. Binary Search Tree BST Template
  12. python手记(27)
  13. 注册Dev的帮助文件
  14. Oracle 表空间和用户权限管理【转】
  15. 深入浅出 TCP/IP 协议
  16. java 异步查询转同步多种实现方式:循环等待,CountDownLatch,Spring EventListener,超时处理和空循环性能优化
  17. TP方法中打印地址栏中所有的参数:
  18. web前端利用leaflet生成粒子风场,类似windy
  19. Android照片墙-多图加载
  20. Python2与python3中字符串的区别

热门文章

  1. 【转】eclipse for java ee的tomcat配置(常见问题解决)
  2. 修改Struts2的struts.xml配置文件位置
  3. vue实现简单在线聊天
  4. 前端读者 | ES6知识点概述
  5. apache配置httpd.conf相关
  6. Graph Valid Tree -- LeetCode
  7. 【20181023T2】行星通道计划【二维BIT】
  8. 【状压dp】送餐员
  9. [SRM478]RandomApple
  10. 【贪心】hdu6180 Schedule