中が見えるHDD
思いっきりニッチだと思うんだけど、良く作ったなぁ。自作向けを見込んでいるんだろうけど、意外とメーカ製でもわざわざ外からHDDが見えるPCとか出すかもしれないな。何がウケるか分からないし。しかしATAも10000回転の時代か。
J2SE 1.4で、5.0のコードを動かす。
前にjsr14オプションの事を書いたけど、同様な事をAOPで実現するretroweaverをちょっと試してみた。
import java.util.*;
public class Test {
enum Cats {RUIMO, UNOKICHI}
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add(Cats.RUIMO.toString());
list.add(Cats.UNOKICHI.toString());
for (String name:list) {
System.out.println(name);
}
}
}
もちろん1.4では動かない。
$ d:/j2sdk1.4.2_08/bin/java -cp "retroweaver-rt.jar;." Test
Exception in thread "main" java.lang.UnsupportedClassVersionError: Test (Unsuppo
rted major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
...
retroweaverをダウンロード、jarを解凍して、releaseの下にある実行可能jarであるretroweaver-ex.jarを起動。

Source:にクラスファイルを置いたディレクトリを指定して、Version:にターゲットバージョンを指定(1.3とか1.2とかもあるけど、retroweaverのランタイムが1.4でコンパイルされているので動かなかった)。
$ d:/j2sdk1.4.2_08/bin/java -cp "retroweaver-rt.jar;." Test RUIMO UNOKICHI
おぉ、動く。enumも使えるじゃん。既存クラスの中に5.0からバラバラに追加されたメソッドはどうかな。
public class Foo {
public static void main(String[] args) {
Integer i = Integer.valueOf(0);
}
}
これも問題なく実行できた。weave後のバイトコードを見てみると、
public static void main(java.lang.String[]); Code: Stack=1, Locals=2, Args_size=1 0: iconst_0 1: invokestatic #26; //Method com/rc/retroweaver/runtime/Autobox.valueOf :(I)Ljava/lang/Integer; 4: astore_1 5: return
なるほどretroweaverのランタイム内のクラスを使用するように書き換えられているようだ。じゃprintfなんかも使えちゃうのか?
public class Bar {
public static void main(String[] args) {
System.out.printf("Hello %s%n", "World");
}
}
残念、これはだめだった。
$ d:/j2sdk1.4.2_08/bin/java -cp "retroweaver-rt.jar;." Bar
Exception in thread "main" java.lang.NoSuchMethodError: java.io.PrintStream.prin
tf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
at Bar.main(Bar.java:3)
まだ全部の5.0追加機能はサポートされていないようだ。なかなか面白い。でも仕事で使うのはちょっとリスキーかな。NoSuchMethodError爆弾を抱える事になるしね。
W-ZERO3
W-ZERO3レビュー。うまくまとめてるな〜。自分的にはLinux Zaurus(SL-C750)使い続けるつもり。Two Linkなら64kbpsだけど月額基本料が1k円で済むし、自宅にISDNルータを置いておけばプロバイダも不要だし。しかしARMはなかなかスピードが上がりませんな。やっぱり数が出なくて投資できないのかなぁ。





