class文件魔数CAFEBABE的由来

简介: Java中class文件的前四个字节为什么是 CAFEBABE? 是谁定义的?Java编程语言之父,詹姆斯•高斯林(James Gosling),曾这样说过:关于这一点,我很抱歉。

Java中class文件的前四个字节为什么是 CAFEBABE? 是谁定义的?

Java编程语言之父,詹姆斯•高斯林(James Gosling),曾这样说过:

关于这一点,我很抱歉。我以前并不知道有 NeXT connection。这些有趣的十六进制数(HEX words)可能是匹配的来源. 至于在Java中使用CAFEBABE作为魔数的过程, 说起来有些曲折:

我和小伙伴们经常去一个叫圣米歇尔巷(St Michael’s Alley)的地方吃午餐。根据当地传说, 在深暗的过去,感恩而死乐队(Grateful Dead)在出名前曾在此地表演. 这绝对是一个因 Grateful Dead Kinda Place 而闻名的地方。杰瑞(Jerry)去世时, 他们进行了祭奠.我们经常去那里, 称这个地方为 死亡咖啡(Cafe Dead)。

可以看到,这是一个十六进制数. 那时候我正好需要维护一些文件的编码格式,需要用到两个魔数(magic numbers): 一个用于对象持久化文件, 另一个用于类文件. 于是我就用 CAFEDEAD 作为对象持久化文件的魔数, 当然,这两个魔数有着共同的前缀: 4个十六进制字符(CAFE, Java和咖啡有一段深沉的虐恋), 我选中了BABE(宝贝),于是不知道为什么洪荒之力就爆发了[鬼知道我都经历了些什么,>2016年8月17日<]。

当时, 这个魔数并没有什么特别的意义, 也看不出来有什么重要的, 或许很快就会消失在历史中。所以 CAFEBABE 成为 class 文件的魔数, CAFEDEAD 成为持久对象的魔数. 但没多久持久化对象(persistent object)技术真的消失了, 就如同魔数 CAFEDEAD 所蕴含的一样 —— 后来用的是RMI技术。

另请参见:

WIKI百科: Java_class_file

翻译人员: 铁锚 http://blog.csdn.net/renfufei

目录
相关文章
小技巧 - 微信零钱转出免手续费方法(利用零钱通转出)
小技巧 - 微信零钱转出免手续费方法(利用零钱通转出)
3875 0
小技巧 - 微信零钱转出免手续费方法(利用零钱通转出)
|
6月前
|
人工智能 运维 Cloud Native
2025年国内工单系统推荐:技术架构、场景适配与行业实践
分析了智能化升级、大数据驱动、云原生架构及全渠道融合四大技术趋势,从功能适配性、易用性、集成能力、安全性和性价比五个维度指导企业选型,并推荐合力亿捷等三家系统的优劣对比,结合电商和制造行业的实际案例,帮助企业提升客户服务水平与竞争力。
469 11
2025年国内工单系统推荐:技术架构、场景适配与行业实践
|
JavaScript
如何解决ElementUI中的el-tab-pane组件使用v-show不生效的问题?
如何解决ElementUI中的el-tab-pane组件使用v-show不生效的问题?
969 3
|
12月前
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
513 0
Vue3基础(19)___vite.config.js中配置路径别名
|
设计模式
SpringMVC常见组件之DataBinder数据绑定器分析
SpringMVC常见组件之DataBinder数据绑定器分析
550 0
|
安全 Linux 数据安全/隐私保护
入职必会-开发环境搭建33-VMWare虚拟机安装Linux系统
CentOS(Community ENTerprise Operating System)是一个基于Linux的开源操作系统,它是由社区志愿者团队从Red Hat Enterprise Linux(RHEL)源代码重新编译而成。CentOS致力于提供一个稳定、可靠且免费的企业级Linux发行版,适用于服务器和工作站环境。
263 0
|
机器学习/深度学习 存储 算法
基于多模态融合与图神经网络的用户精准感知系统研究
基于多模态融合与图神经网络的用户精准感知系统研究
698 0
|
jenkins Shell 持续交付
Jenkins 入门
Jenkins 入门
164 0
|
搜索推荐 算法 Java
音乐偏好度推荐系统 毕业设计 JAVA+Vue+SpringBoot+MySQL(一)
音乐偏好度推荐系统 毕业设计 JAVA+Vue+SpringBoot+MySQL
304 0
|
测试技术 数据库连接 Python