+39 328 4891193
[email protected]
  • Home
  • Chi Sono
  • Servizi
  • Blog
  • Contatti

Il CAFE nascosto in qualsiasi classe Java

4 anni fa
SystemIO - Andrea Scorza
Coding, Geek

C’è una piccola curiosità che vi porto dal mondo Java…

Tutte le classi Java iniziano con gli stessi 4 bytes, siano esse semplici classi per stampare “Hello World” o pezzi di codice per gestire l’autenticazione di una banca…questi 4 bytes se visti con un editor esadecimale mostrano queste parole:

CAFEBABE

Se volete potete anche provare:

Creare un file Hello.java

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

Compilate la classe Hello:

javac Hello.java

Otterrete un file Hello.class che se aperto con un editor esadecimale vi mostrerà questo:

 

Ok, ma perché???

Tecnicamente questa cosa si chiama Magic Number, una sorta di identificativo per vari scopi, principalmente capire che tipo di file è.

Ma perché CAFE BABE???

Il capo del team di sviluppatori Sun Microsystems che ha realizzato Java, James Gosling lo spiega così:

We used to go to lunch at a place called St Michael’s Alley. According to local legend, in the deep dark past, the Grateful Dead used to perform there before they made it big. It was a pretty funky place that was definitely a Grateful Dead Kinda Place. When Jerry died, they even put up a little Buddhist-esque shrine. When we used to go there, we referred to the place as Cafe Dead. Somewhere along the line it was noticed that this was a HEX number. I was re-vamping some file format code and needed a couple of magic numbers: one for the persistent object file, and one for classes. I used CAFEDEAD for the object file format, and in grepping for 4 character hex words that fit after “CAFE” (it seemed to be a good theme) I hit on BABE and decided to use it. At that time, it didn’t seem terribly important or destined to go anywhere but the trash-can of history. So CAFEBABE became the class file format, and CAFEDEAD was the persistent object format. But the persistent object facility went away, and along with it went the use of CAFEDEAD – it was eventually replaced by RMI.

 

Non a caso il logo di Java è una tazza di caffè:

Java Logo.svg

Ci sono altre congetture dietro questi 8 caratteri:

0xCAFEBABE convertito in decimale equivale a 340561582

Se si sommano tutte le cifre di 340561582 otterrete 43, che è un numero primo.

ma è anche uno più di 42 … che è un numero abbastanza famoso
(fonte Wikipedia)

Informatica

  • È il numero all’inizio di ogni archivio di immagine TIFF.
  • Il carattere ASCII corrispondente al valore decimale 42 è *.
  • Nel file system Reiser4 il numero 42 corrisponde all’inode della root.
  • La funzione memfrob delle glibc effettua uno XOR tra una struttura dati ed il pattern 00101010 (42 in binario).
  • Nella saga Guida galattica per gli autostoppisti il 42 è la risposta alla “domanda fondamentale sulla vita, l’universo e tutto quanto”.
  • Se si pone la domanda “Qual è il senso della vita?” a Siri, l’assistente vocale di Apple presente su iPhone e iPad, si otterrà la risposta 42; analogamente ponendo la stessa domanda a Cortana, l’assistente vocale di Windows (presente su Windows Phone 8.1 e su Windows 10) risponderà: “Ho sentito da una fonte molto attendibile che la risposta è 42”. Entrambe le citazioni di iPhone e di Windows Phone derivano dal romanzo Guida galattica per gli autostoppisti.
  • Ricercando la stringa “The answer to life the universe and everything” su Google la calcolatrice integrata risponde 42. Anche in questo caso si tratta di una chiara citazione alla saga di Adams.

Sport

  • È la distanza in chilometri di una maratona ufficiale (42 km e 195m, olimpiadi 1908 e dal 1924).

  • È il numero della maglia di Jackie Robinson, che fu il primo giocatore di Baseball afroamericano a esordire nella Major League moderna nel 1947, sfidando le consuetudini razziali di quel periodo (baseball color line) e dando il via al processo di eliminazione della barriera razziale nel baseball. In suo onore il numero 42 fu ritirato dai Dodgers nel 1972 e dall’intera Major League nel 1997.

Quindi uno più di tutto questo elencato qui sopra 🙂

Dedicato a chi vede la magia nell’IT

coding, fun, geek, java, sw
SystemIO - Andrea Scorza
Articolo precedente
Tracking aerei con Raspberry Pi 3
Articolo successivo
HTTP – passato, presente e futuro

Post correlati

Cambiare faccia ad un Access Point

26 Agosto 2019

Dove mi porterà il prossimo click ?

30 Ottobre 2020

ZipBomb – trappola per scanner

9 Novembre 2022

Articoli recenti

  • STARLINK! Soluzione definitiva per il Digital Divide?
  • SystemIO RAV – Rack Alarm Visualizator
  • Ci sono molti modi…per scrivere un IP
  • ZipBomb – trappola per scanner
  • Dominio senza posta? evita che venga usato per inviare mail false

Archivi

  • Dicembre 2022
  • Novembre 2022
  • Febbraio 2021
  • Dicembre 2020
  • Ottobre 2020
  • Aprile 2020
  • Gennaio 2020
  • Agosto 2019
  • Febbraio 2019
  • Ottobre 2018
  • Giugno 2018
  • Gennaio 2018
  • Novembre 2017
  • Ottobre 2017
  • Settembre 2017

Categorie

  • Coding
  • Geek
  • Network
  • Server
  • Tricks
  • Unix
  • Windows

Meta

  • Accedi
  • Feed dei contenuti
  • Feed dei commenti
  • WordPress.org

Recent Posts

STARLINK! Soluzione definitiva per il Digital Divide?

SystemIO RAV – Rack Alarm Visualizator

Ci sono molti modi…per scrivere un IP

ZipBomb – trappola per scanner

Dominio senza posta? evita che venga usato per inviare mail false

Indirizzi casuali Wi-Fi, privacy ed effetti collaterali…grattacapi (per network admins)

Dove mi porterà il prossimo click ?

Italy Welcomes AWS!

Cybersecurity e vita reale

Animali e software…

HTTP – passato, presente e futuro

Trovare connessioni e processi (Win)

Categorie

  • Coding (6)
  • Geek (18)
  • Network (8)
  • Server (5)
  • Tricks (14)
  • Unix (7)
  • Windows (6)

Tag

aws cloud coding computer vision datacenter digital divide dns fun geek ip java logos mac Milan Milano monitoring network privacy prtg rack random recensione region reputation security server shortner spacex spam spoof starlink sw ubiquiti unifi unix wi-fi wifi

© SystemIO di Andrea Scorza
P.IVA: IT02691970186 – CF: SCRNDR82A05F839M – REA: PV-294258
Privacy Policy/Cookie Policy