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

目录
相关文章
|
10月前
|
存储 Java 编译器
jvm之.class文件解读(下)(二)
jvm之.class文件解读(下)(二)
|
10月前
|
存储 Java 编译器
jvm之.class文件解读(下)(一)
jvm之.class文件解读(下)
JVM虚拟机-Class文件之访问标志
JVM虚拟机-Class文件之访问标志
JVM虚拟机-Class文件之访问标志
|
存储 Java 编译器
JVM虚拟机-Class文件之属性表集合
JVM虚拟机-Class文件之属性表集合
JVM虚拟机-Class文件之属性表集合
|
XML 存储 Java
JVM虚拟机-Class文件之魔数
JVM虚拟机-Class文件之魔数
158 0
JVM虚拟机-Class文件之魔数
|
Java Scala Kotlin
深入学习和认识class文件内部结构
深入学习和认识class文件内部结构
109 0
|
存储 Java 编译器
JVM之Class结构速记
JVM之Class结构速记
101 0
JVM之Class结构速记
|
索引
JVM14_Class文件结构细节、魔数、Class文件版本、常量池、访问标识(或标志)、类索引|父类索引|接口索引集合、字段|方法|属性表集合(七)
⑩. IDEA中集成jclasslib说明Class文件信息 ①. Class文件详解 ②. 方法表集合 ③. code属性 ④. LineNumberTable、LocalVariableTable ④. SourceFile属性
JVM14_Class文件结构细节、魔数、Class文件版本、常量池、访问标识(或标志)、类索引|父类索引|接口索引集合、字段|方法|属性表集合(七)