Java 클래스 파일을 열면 처음 네 바이트에 CAFE BABE라는 값이 나타난다.
자바 클래스 파일 포맷이라는데 처음 네 바이트의 정체는 Magic Number
라는 것을 알 수 있다. 이런 특별해보이는 값이 자바 클래스 파일을 식별하는데에 사용된 배경이 뭘까?
궁금증에 대한 답을 찾기 위해, Java 출시 때부터 애용하던
Java 사용자가 James Gosling에게 메일을 보내고 받은 답변이다 :
As far as I know, I'm the guilty party on this one. I was totally unaware of the NeXT connection. The small number of interesting HEX words is probably the source of the match. As for the derivation of the use of CAFEBABE in Java, it's somewhat circuitous:
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.
내용은 대충 다음과 같다 :
고슬링은 미국 락밴드 Graceful Dead 특유의 분위기를 뿜어내는 카페에 자주 갔다.
소문에 의하면, Graceful Dead가 무명이던 시절, 그 카페에서 공연도 했었다고 한다.
그러던 어느날 밴드 멤버가 사망하자, 카페에는 그를 기리기 위한 불교 예술상이 올려졌고,
고슬링은 그 장소를 Cafe Dead로 불렀다.
우연찮게 이는 16진수로 나타낼 수 있는 단어였고,
마침 16진수 매직넘버를 생각해오던 고슬링은 이를 매직넘버에 쓰기로 했다.
그래서 객체 파일 형식에는 CAFE DEAD를 사용하고 있다가,
CAFE 컨셉에 맞춰 클래스 파일 형식의 매직넘버를 고안해내기 위해
리눅스 grep 명령어를 활용했다(바이트코드에서 찾았다는건가?).
그래서 찾은게 CAFE BABE였고, CAFE DEAD와 같이 쓰였다.
그러나 객체 파일 형식은 사라지고 CAFE BABE만 남게 되었다는 내용이다.
고슬링과 같이, 개인적인 경험이 예상치 못한 방식으로 창의성에 영향을 미칠 수 있다.
CAFE BABE는 단순한 16진수 이상의 의미를 갖고 있다. 그 당시에는 별다른 중요성을 느끼지 못했지만,
오랜 시간이 지나도록 Java 프로그래밍 언어의 역사를 상징하고 있다.
사소한 것에 주의를 기울이고 언제 어디서 창의적인 아이디어가 튀어나올지 모르니,
개인적인 경험을 소중히 여겨야겠다.