Mac OS Xの多くのアプリケーションの先頭バイト列が「0xCAFEBABE」です。
ん? CafeBabeといえば、喫茶店のカワイコちゃん、Javaバイトコードのマジックナンバーじゃないの?と思うのですが、どうもそれだけではないようなのです。
Mac OS Xで、Fat Binary、複数のバイナリを含むファイル、を表すときにも先頭バイト列に0xCAFEBABEが入ってきます(Mach-Oの場合は0xFEEDFACEです)。次の4バイトが「いくつのバイナリがあるか」を表します。画像で挙げた/bin/shの場合であれば、0x00000002なので、二つのバイナリがあることを表しています。次がCPUタイプとCPUサブタイプ。0x00000007(0x07がi386+・0x12がPowerPC)と0x00000003(0x00がPowerPC・0x03がIntel)だそうです。
1994年後半からでしょうか、680x0からPowerPCに移行するときは、「FATバイナリをなんとかして小さくするんだ」ということで、68k命令セットを消し去ったりするアプリが作られていましたが、現在はハードディスク容量も大きくなって、それほど気にする人がいなくなったようです。「なんとしてもPowerPCコードを削って、i386コードにするんだ!」という雰囲気のアプリを見かけなくなりました。もしかしたら、CPU依存のコードよりも周辺のリソースのほうがデータ量が大きくなったからかもしれません。
さて、最古の?バイナリは2002年1月19日だとのこと。Javaに遅れること約10年なのか?