class文件魔数CAFEBABE的由来
Java中class文件的前四個字節(jié)為什么是 CAFEBABE? 是誰定義的?
Java編程語言之父,詹姆斯?高斯林(James Gosling),曾這樣說過:
關(guān)于這一點,我很抱歉。我以前并不知道有 NeXT connection。這些有趣的十六進制數(shù)(HEX words)可能是匹配的來源. 至于在Java中使用CAFEBABE作為魔數(shù)的過程, 說起來有些曲折:
我和小伙伴們經(jīng)常去一個叫圣米歇爾巷(St Michael’s Alley)的地方吃午餐。根據(jù)當(dāng)?shù)貍髡f, 在深暗的過去,感恩而死樂隊(Grateful Dead)在出名前曾在此地表演. 這絕對是一個因 Grateful Dead Kinda Place 而聞名的地方。杰瑞(Jerry)去世時, 他們進行了祭奠.我們經(jīng)常去那里, 稱這個地方為 死亡咖啡(Cafe Dead)。
可以看到,這是一個十六進制數(shù). 那時候我正好需要維護一些文件的編碼格式,需要用到兩個魔數(shù)(magic numbers): 一個用于對象持久化文件, 另一個用于類文件. 于是我就用 CAFEDEAD 作為對象持久化文件的魔數(shù), 當(dāng)然,這兩個魔數(shù)有著共同的前綴: 4個十六進制字符(CAFE, Java和咖啡有一段深沉的虐戀), 我選中了BABE(寶貝),于是不知道為什么洪荒之力就爆發(fā)了[鬼知道我都經(jīng)歷了些什么,>2016年8月17日<]。
當(dāng)時, 這個魔數(shù)并沒有什么特別的意義, 也看不出來有什么重要的, 或許很快就會消失在歷史中。所以 CAFEBABE 成為 class 文件的魔數(shù), CAFEDEAD 成為持久對象的魔數(shù). 但沒多久持久化對象(persistent object)技術(shù)真的消失了, 就如同魔數(shù) CAFEDEAD 所蘊含的一樣 —— 后來用的是RMI技術(shù)。
另請參見:
WIKI百科: Java_class_file
- 深入Java虛擬機之二:Class類文件結(jié)構(gòu)
翻譯人員: 鐵錨 http://blog.csdn.net/renfufei
總結(jié)
以上是生活随笔為你收集整理的class文件魔数CAFEBABE的由来的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sixth season seventh
- 下一篇: 图元变形lisp源码_修改图元图层lis