字节码产生的背景

Java最初诞生的目的就是为了在不依赖于特定的物理硬件和操作系统环境下运行,那么也就是说Java程序实现跨平台特性的基石其实就是字节码。Java之所以能够解决程序的安全性问题、跨平台移植性等问题,最主要的原因就是Java源代码的编译结果并非是本地机器指令,而是字节码。当Java源代码成功编译成字节码后,如果想在不同的平台上面运行,则无须再次编译,也就是说Java源码只需一次编译就可处处运行,这就是“Write Once,Run Anywhere”的思想。所以注定了Java程序在任何物理硬件和操作系统环境下都能够顺利运行,只要对应的平台装有特定的Java运行环境,Java程序都可以运行,虽然各个平台的Java虚拟机内部实现细节不尽相同,但是它们共同执行的字节码内容却是一样的。

什么是字节码?字节码扩展名是什么?

那么什么是字节码(ByteCode)呢?参考《Java虚拟机规范Java SE7版》的描述来看,任何编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表以及一些其他辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。在大部分情况下,字节码更多是存储在本地磁盘文件中,比如后缀名为“.class”的文件。每一个字节码文件都对应着全局唯一的一个类或者接口的定义信息,但这也并非绝对,类和接口并不一定都只能存储在文件里,它还可以通过类装载器直接在运行时生成。

字节码的结构

字节码结构组成比较特殊,其内部并不包含任何的分隔符区分段落,所以无论是字节顺序、数量都是有严格规定的,所有16位、32位、64位长度的数据都将构造成2个、4个和8个8位字节单位来表示,多字节数据项总是按照big-endian顺序(高位字节在地址最低位,低位字节在地址最高位)来进行存储。也就是说,一组8位字节单位的字节流组成了一个完整的字节码文件。

猜你喜欢:

java字节码的扩展名_什么是字节码?字节码扩展名是什么?相关推荐

  1. 3位格雷码的顺序编码_绝对值编码器当中的格雷码

    格雷码:又叫循环二进制码或反射二进制码.格雷码是我们在旋转编码器中常会遇到的一种编码方式. 格雷码的特点: 任意两个相邻的代码只有一位二进制数不同: 循环码,0和最大数(2^n-1)之间只有一位不同: ...

  2. python和c++情侣网名_“果然,他用的是情侣网名!”

    "果然,他用的是情侣网名!" 情侣网名:小敢敢不憨 / 小憨憨不敢 情侣网名:人间水蜜桃 / 人间粑粑柑 情侣网名:星星泡饭/地球炒饭 情侣网名:似朝朝/亦暮暮 情侣网名:醒捕时光 ...

  3. java 扩展接口_详解常用的Spring Bean扩展接口

    前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...

  4. 字节跳动mysql面试题_刚面完的字节跳动java研发面试题整理(含答案):线程+MySQL+Spring+JVM...

    点关注,不迷路:持续更新Java相关技术及资讯!!! 为什么要用线程池那先要明白什么是线程池 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建 ...

  5. 拍卖系统源码 java,基于B2C的网上拍卖系统_秒杀与竞价 - WEB源码|JSP源码/Java|源代码 - 源码中国...

    文件名大小更新时间 a014基于B2C的网上拍卖系统_秒杀与竞价02019-08-15 a014基于B2C的网上拍卖系统_秒杀与竞价\截图02020-05-29 a014基于B2C的网上拍卖系统_秒杀 ...

  6. java正则获取sql表名_如何提取SQL语句中的表名

    如果不带别名的话,可以就正则实现. 不过java的正则有些限制,所以对于from中多于10张表的就有问题了,不多可以自己在添加,考虑不是很完善 Stringstr="INSERTINTOA\ ...

  7. l源码安装mysql升级_[Linux]javaEE篇:源码安装mysql

    javaEE :源码安装mysql 安装环境 系统平台:CentOS-7-x86_64 数据库版本:mysql-5.6.14 源码安装mysql步骤: 一.卸载mysql 安装mysql之前,先确保l ...

  8. safari扩展安装_如何安装和管理Safari 5扩展

    safari扩展安装 While there have been hacks to include extensions in Safari for some time now, Safari 5 n ...

  9. python字符串和字节串有什么区别_对于Python中的字节串bytes和字符串以及转义字符的新的认识...

    事情的起因是之前同学叫我帮他用Python修改一个压缩包的二进制内容用来做fuzz,根据他的要求,把压缩包test.rar以十六进制的方式打开,每次修改其中一个十六进制字符串并保存为一个新的rar用来 ...

  10. 在python中是否可以使用if作为变量名_在Python中可以使用if 作为变量名_python使用符号 标示注释...

    在Python中可以使用if 作为变量名 答:× " src=" " style="max-width: 100%; display: inline;" ...

最新文章

  1. 剑指offer(Java实现) 平衡二叉树
  2. WebRTC-集成qsv硬解码实现
  3. 20190825 On Java8 第十二章 集合
  4. java 常用缓存描述
  5. 2022年6月大学英语六级翻译
  6. word中去除页眉中的横线
  7. java解压出来损坏_在Java中解压缩错误
  8. 回文数—简单方法(C语言)
  9. 劲乐园合歌(幽灵圣典+飞吧喜鹊+唯一+v3+幽灵圣典2)铃声 劲乐园...
  10. 网贷平台老板跑路,程序员这波操作很溜
  11. 求助 opencv视频播放速度变慢
  12. LeetCode题解(0741):摘樱桃(Python)
  13. Linux分区大师,linux分区管理
  14. Java 工具类 - 身份证工具类 IDCardUtil
  15. php表单处理、与MySQL交互
  16. 猝死(Sudden death,SD)是人类的最严重的疾病。
  17. 网络营销中的博客营销有什么价值?对于博客营销我们应该注意哪些问题?
  18. 关于智能家居布线 这些你都知道吗
  19. 相机姿态估计(四)--AP3P
  20. 【深度学习入门】Paddle实现车辆检测和车辆类型识别(基于YOLOv3和ResNet18)

热门文章

  1. 凸多边形的划分——区间DP
  2. onscroll 事件和onScrollCapture事件
  3. 浏览器及HTTP相关面试总结
  4. mysql applying_mysql安装图解详细说明
  5. 第三方QQ、微博登陆
  6. bigemap瓦片数据MBTiles存储简介
  7. 有视力的UR机器人提高了座椅制造生产率
  8. Android 属性动画Animator
  9. 那个 16 岁盗走马化腾QQ、黑掉整个天涯论坛的少年,如今怎么样了?
  10. Embedding泛谈