Java 클래스 파일은 왜 0xCAFEBABE로 시작할까?

4 days ago 11

Java 클래스 파일은 0xCAFEBABE라는 4바이트 식별값으로 시작하며, 1996년 이 값의 유래를 묻는 질문에 개발자들의 추측과 말장난이 이어짐 커피를 연상시키지만, 초기 개발팀에 따르면 언어에 Java라는 이름이 붙기 전에 정한 값으로 재미있고 기억하기 쉬운 숫자를 찾은 결과임 Patrick Naughton은 Peet’s Coffee의 바리스타들을 가리키는 표현이었다고 답했으며, 다른 후보로는 0xDEADBABE 가 있었음 댓글에 연결된 후일의 설명에서 James Gosling은 식당 별명인 ‘Cafe Dead’에서 CAFEDEAD를 만들고, CAFE 뒤에 붙일 단어를 찾다가 BABE를 골랐다고 밝힘 DEADBEEF, BADBADBADBAD, CAFEFEED처럼 16진수로도 읽을 수 있는 단어는 파일을 식별하거나 메모리 상태를 눈으로 알아보기 위한 값으로 사용돼 왔음 클래스 파일의 매직 넘버를 묻다 1996년 5월 Bill Venners는 JavaWorld의 두 번째 글인 「The Class File Lifestyle」 을 준비하다가 comp.lang.java에 0xCAFEBABE의 선정 이유를 질문함 모든 Java 클래스 파일은 0xCAFEBABE라는 4바이트 매직 넘버로 시작하며, 이를 통해 도구가 클래스 파일일 가능성이 있는 파일과 다른 파일을 빠르게 구별할 수 있음 처음에는 선정 이유를 예전에 들었지만 기록을 잃어버렸다는 반응과 함께, 16진수로 쓸 수 있는 단어를 바탕으로 한 추측들이 이어짐 커피와 16진수 말장난이라는 추측 Rolf Howarth는 16진수의 문자 A~F만으로 Java나 커피와 관련된 단어를 만드는 데 선택지가 많지 않았을 것이라고 추측함 Alastair Mayer는 0xCAFEBABE가 십진수로 3405691582이며, 32비트 값은 다루기 쉽고 다른 값과 겹칠 가능성도 낮아서 선택했을 것이라고 추측함 16진수에는 J나 V가 없으므로 Java와 커피의 연결을 살리려면 CAFE가 들어간 값을 골랐을 수 있다고 봄 대안으로 A FAB CAFE, CAFE FACE, CAFE A FAD, A BAD CAFE를 들며 CAFE BABE가 더 매력적인 표현이었을 것이라는 농담을 덧붙임 후속 답변에서는 숫자 0을 문자 O로 읽으면 0xC0FFEE 를 만들 수 있다는 대안도 나옴 십진수로는 12648430이며, 32비트 전체를 쓰면 0x00C0FFEE가 됨 앞의 00을 OO로 읽어 객체 지향...

Read Entire Article