久しぶりに某所に顔を出しました。「しらが、増えたねー」と言われました。
しらがさんは増殖しないっ。あと、人を呼び捨てにするのはどうかと思いますよ?
月末です。Rさんに対抗して○敵なやまだです。
ここで突然ですが問題です。
○の中に適当な文字を入れよ(20点)。1.素、2.無、3、不、4.索
ここで、前回と同じ画面を貼ってみたりする。
ここに Magic ってなものがあったりするわけですが、Windows 文化な方にはあまりなじみがなかったりする概念ではなかろーかなと。
Java のクラスファイルだと、この Magic に CAFEBABE ってのが格納されています。なんで CAFEBABE かというと、CAFE *1の子供だからですな。*2
*1 ジャワ島のコーヒーから転じて Java はコーヒーを意味する英単語として使われているとのこと。
*2 と、私は聞いておりますが、実際のところ、*1 記載内容含めて諸説があるようです。
あ、ちなみにこの Magic は文字列で書き込まれているわけではありません。16進数表記です。だから厳密には 0xcafebabe と書くべきなのかな。16進表記と言うことはアルファベットはaからfまでしか使えないわけで……まぁ、deadface でなかっただけましかなぁ、ということでw
Windows 環境だと、こういう目的には何かっていうと拡張子が使われているようで、バージョンが換わる都度、拡張子を変えていくワープロソフト、とか『お前はいくつ拡張子を食いつぶすつもりなんだよっ!』とツッコミを入れたくなることも多々あったり。せめて同じソフトの中では、バージョンの違いぐらい内部で判断するようにしたいもんです。
と、いうところでJava のバージョンなんですが、Java のクラスファイルにはしっかり格納されています。なので、Java のクラスファイルであるか否か、そのバージョンはいくつか、ということがわかるようになっています。
Java クラスファイルにおけるバージョン番号は、JDK1.x だったら (44+x).0 という公式になっています。ただし、JDK1.1までは特殊で、45.3 というマイナーバージョン(小数点以下)が入るケースもあったようです。
#最新仕様では、JDKのバージョンがあがる都度、クラスファイル上のメジャーバージョンも増えていく(マイナーバージョンは使われない)ようです。
なぜメジャーバージョンが 45 なんて大きな数から始まっているかというと……、私も理由はしりませんが、Java 前身のOak と名乗っていた頃にメジャーバージョンアップを繰り返していたからではないかと。
なので、Java のクラスファイルは拡張子とかが別物でも、そのファイルを見れば、Java のクラスファイルであることもわかるし、どのバージョン用に作成されたかもわかる仕様になっています。
それなのに、というところで、時間もないので以降はまた別のエントリで。
#って、こんなのに興味持つ人がどれだけいるんだという話が。