当前位置: 首页 > 面试题库 >

为什么Java类文件格式的前四个字节为CAFEBABE?

仉姚石
2023-03-14
问题内容

为什么Java类文件的前四个字节格式为 CAFEBABE ?谁命名的?

您的看法/猜测?

资料来源:IBM
Java编程动力学


问题答案:

Java编程语言之父James Gosling曾经解释如下:

据我所知,我是有罪的一方。我完全不知道NeXT连接。少量有趣的十六进制单词可能是匹配的来源。至于使用CAFEBABEJava
的派生,它有些circuit回:

我们曾经在一个叫St Michael’s
Alley的地方吃午餐。根据当地的传说,在黑暗的黑暗过去中,感恩之死曾经在在那里表演之前就在那里表演过。那是一个非常时髦的地方,绝对是一个感激的死金达地方。杰里(Jerry)死后,他们甚至竖起了一座佛教风格的神社。当我们过去去那里时,我们称这个地方为Cafe
Dead。

沿线的某个地方注意到这是一个十六进制数字。我正在重新整理一些文件格式代码,并且需要几个魔术数字:一个用于持久性目标文件,另一个用于类。我使用CAFEDEAD了目标文件格式,并在找到适合的4个字符的十六进制单词CAFE(这似乎是个不错的主题)BABE后使用grepping
并决定使用它。

那时,除了历史上的垃圾桶,它似乎没有什么特别重要或注定要去的任何地方。因此CAFEBABE成为类文件格式,并且CAFEDEAD成为持久对象格式。但是持久对象工具消失了,并且随之CAFEDEAD而来的使用-
最终被RMI取代。

资源:

  • 维基百科/类(文件格式)
  • Bill Bumgarner博客条目: 0xCAFEBABE & 0xFEEDFACE

相关链接

  • 十六进制单词和倒置单词


 类似资料:
  • 我有一个关于带有三元运算符的运算符的小代码: 输出(GCC): 但在这里, 三元运算符返回type和sizeoftype是C中的字节。 那么为什么会给出四个字节的输出呢?

  • 问题内容: 在我的一生中,我一直无法找到与我想做的事情相匹配的问题,因此在这里我将解释我的用例。如果您知道某个主题已涵盖此问题的答案,请随时将我引向该主题。:) 我有一段代码可以定期(每20秒)将文件上传到Amazon S3。该文件是由另一个进程写入的日志文件,因此此功能实际上是尾随日志的一种方式,以便某人可以半实时读取其内容,而不必直接访问日志所在的计算机。 。 直到最近,我只是一直使用S3 P

  • 问题内容: 我可以通过将L附加到值来创建文字。为什么我不能以类似的方式创建字面量的short或byte?为什么我需要在转换时使用int文字? 如果答案是“因为C中没有短文字”,那么为什么C中没有短文字? 这实际上并没有以任何有意义的方式影响我的生活;写(短)0而不是0S很简单。但是这种矛盾使我感到好奇。这是当您深夜起床时困扰您的事情之一。有人在某个时候做出了设计决定,使得可以为某些原始类型输入文字

  • 问题内容: Firefox为什么不支持仅Ogg格式的元素中的MP3文件播放的特定原因吗? 这是许可问题吗? 是否为将来可能的实施计划了? 是否有可能开发一个插件来支持元素中的MP3播放? 问题答案: 许可问题:[HTML5视频和H.264–历史告诉我们什么,为什么我们站在网络上,Mozilla捍卫Firefox仅对OggTheora视频提供HTML5支持(尽管它们的标题,他们俩都在谈论MP3许可,

  • 根据DEFLATE规范(RFC 1951),文字和长度字母组合在一起,以便使用一个哈夫曼树进行解码。文字和长度字母表都是256个大符号,但组合文字/长度字母表是286个长符号,其中一个符号是块结束字符。 在组合字母表中表示的可能的256个长度符号中,只有29个,在长度符号之后的压缩数据中包含额外的位,以便在解码时读取长度的全部值。这些额外的位不被压缩,被读取为文字机器整数。 为什么不在组合字母表中

  • 我正在建立一个自定义的文件创建与Android应用程序。我试图将Bytebuffer的内容(它是我创建的自定义类中的字符串成员)写入字节类型的文件。但是,每当我这样做时,我得到的是字符串格式的文件内容。我尝试了几种替代方法,例如使用get方法、BufferedOutputStream类、ByteArrayOutputStream类、DataOutputStream类、Filechannel类等。以