En mai 1996, Bill Venners préparait son deuxième article pour JavaWorld, The Class File Lifestyle. Il a lancé une discussion sur comp.lang.java pour savoir pourquoi les quatre premiers octets de chaque fichier de classe Java valent 0xCAFEBABE. Ce nombre magique permet aux outils de reconnaître rapidement des données qui ressemblent à un fichier de classe.
Les premières réponses ont porté sur les mots que l’on peut former en hexadécimal. Rolf Howarth a observé que les lettres A à F offrent peu de possibilités liées à Java ou au café. Alastair Mayer a donné la valeur décimale 3405691582 et estimé qu’un nombre sur 32 bits serait pratique et suffisamment distinctif. Il a comparé CAFE BABE à des variantes comme A FAB CAFE, CAFE FACE, CAFE A FAD et A BAD CAFE. Mayer a aussi rappelé que le Burroughs B6700 remplissait sa mémoire non initialisée de 48 bits avec 0xBADBADBADBAD. Il a ensuite proposé 0xC0FFEE, ou 0x00C0FFEE pour occuper les 32 bits. En lisant les zéros comme des O, on obtient OO COFFEE, avec un clin d’œil à la programmation orientée objet.
La discussion a rassemblé d’autres exemples de valeurs hexadécimales lisibles. David N. Smith a raconté qu’un dump mémoire de S/360 avait révélé une valeur flottante hors limites commençant par 0xBAD. Paul Snively a cité 0xDEADBEEF comme valeur factice connue, mentionnée dans The New Hacker’s Dictionary. Il a aussi décrit une pratique de débogage sur Macintosh utilisant l’adresse 0, NIL! et 0x50FFC001. Vivian Man Cheng se souvenait de 0xCAFEBABE dans les fat binaries de NeXTSTEP, qui réunissaient des binaires pour plusieurs processeurs. David Harvey-George associait 0xFEEDFACE à Motorola et 0xCAFEBABE à Intel. James Lynn a évoqué une possible inspiration venue d’un café et les formes CAFEBEEF et DEADCAFE. Lee Crocker a rappelé l’usage de 0xDEADBEEF sur d’anciens systèmes IBM. William Halchin a signalé que AIX sur RS6000 employait 0xdeadbeaf pour le stockage non initialisé.
Patrick Naughton a donné la réponse le 26 mai 1996. La valeur avait été choisie avant l’emploi du nom Java pour le langage. L’équipe cherchait quelque chose de ludique, unique et facile à mémoriser. 0xdeadbabe était arrivé en deuxième position. Le rapprochement avec le café de Peet’s Coffee était une simple coïncidence. D’autres réponses ont précisé que les fichiers d’arène d’IRIX utilisaient 0xdeadbabe et qu’un noyau Solaris de débogage plaçait 0xCAFEFEED dans les blocs libérés par kmemfree().




Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.