いや、まだだから

やまだの仮想庭園 ~ いつか実体の伴う日まで

目次

Blog 利用状況

記事カテゴリ

書庫

日記カテゴリ

リンク

2010年6月30日 #

【Java クラス (1)】 Magic とバージョン番号

久しぶりに某所に顔を出しました。「しらが、増えたねー」と言われました。

しらがさんは増殖しないっ。あと、人を呼び捨てにするのはどうかと思いますよ?

月末です。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 のクラスファイルであることもわかるし、どのバージョン用に作成されたかもわかる仕様になっています。

それなのに、というところで、時間もないので以降はまた別のエントリで。
#って、こんなのに興味持つ人がどれだけいるんだという話が。

posted @ 23:26 | Feedback (16)