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

目录
相关文章
|
存储 Java 程序员
【 class文件结构】
【 class文件结构】
|
存储 Java 编译器
jvm之.class文件解读(下)(二)
jvm之.class文件解读(下)(二)
|
存储 Java 编译器
jvm之.class文件解读(下)(一)
jvm之.class文件解读(下)
|
存储 Java 开发者
【Class文件结构】
【Class文件结构】
|
存储 NoSQL Java
class文件结构详解
写在最前:学习class文件结构不像学习JVM内存结构、垃圾收集器那样,可以对我们写代码时有很多帮助,学习了JVM内存结构,我们在配置虚拟机参数时就会有更全面的考虑,写代码时就可以注意到代码的的优化空间,学习了垃圾收集器,让我们可以根据服务器的配置,更好的选择出适合程序最大吞吐量的收集器,更好的根据服务器硬件配置出合适的参数,学习class呢,则更多的是为了让我们知其然,也知其所以然,让我们知道我们写出的代码在JVM里面到底是怎么运行的,这部分内容会相对枯燥,白话多一些,这里主要分两个部分来详细讲述class文件的机构[class文件结构、字节码指令]。
136 0
class文件结构详解
|
存储 Java 编译器
JVM虚拟机-Class文件之属性表集合
JVM虚拟机-Class文件之属性表集合
JVM虚拟机-Class文件之属性表集合
|
Java Scala Kotlin
深入学习和认识class文件内部结构
深入学习和认识class文件内部结构
134 0