「Tiger」ことJ2SE 5.0が互換性を分断する?

ココより。
微妙。やだなぁ、きちんと5.0なコードを書ける自信が無い。
いかんせん、Cを書いてて、標準出力にSystem.out.printlnと何度書いたか。ますます頭がグチャグチャになるのでわ?
RMIインタフェース生成が楽になっている様でこちらも興味あり。

有名な話。

結構有名な話だが、最近のJ2SDKでも有効なのか試してみた。

public class test1{
 public static void main(String args[]){
  for(int i=0; i<10; i++){
  }
 }
}

見たまんまの意です。
コンパイルして、できたクラスファイルを逆コンパイルすると以下の様になる。
メイン関数の呼び出しの部分のみ抜粋。

0 iconst_0
1 istore_1
2 goto 8
5 iinc 1 1
8 iload_1
9 bipush 10
11 if_icmplt 5
14 return
合計命令8セット。

次に、同じ意味を成すコードを以下の用に書いてみた。

public class test1{
 public static void main(Strin args[]){
  for(int i=9; i>=0; i--){
  }
 }
}

上記をコンパイルし、逆コンパイルした結果がコレ。
上と同様にメイン関数の呼び出しの部分のみ抜粋。

0 bipush 9
2 istore_1
3 goto 9
6 iinc 1 -1
9 iload_1
10 ifge 6
13 return
合計命令7セット。

命令セット数を1つ削減できる。・・・けど何故?
数の大きいループだと効果ありそうです。
もっとも中でループ変数を使うと命令セット数が代わるのかも知れませんが。

eclipse2.1.1

やっと新しいeclipse導入。
前は微妙に日本語化パッチのバージョンが適用バージョンと異なっていたらしく、一部全然日本語だったりしたのですが、今回は本に付属のCDを使ったというのもあるし、国際化対応バージョンのeclipseだったということもあって、日本語化ばっちり。動作ばっちり。*1
今、個人的に書いているプログラムを書くのにちょっとだけ使ってみたが非常に良い。
もっと早くから使っておけばよかった。。。

*1:J2SDK1.5.0なので微妙に不安でしたが今のところ問題ないみたいです

HPROF

プロファイルを出す方法を一回見つけて覚えていたのだが、ド忘れしてそのままだったのでここにメモメモ・・・。

java -Xrunhprof:heap=sites,file=sites.txt [クラス名]

これで忘れないに違いない。

ド忘れ。

あれ、基本型の配列を引数で渡して、その引数にメソッドの中で使った基本型の配列をコピーする。
で、その引数の基本型の引数の中の状態は、メソッド実行後、変更されている・・・されていない!?
お昼ごはん食べてるときに気づきました。大ポカでした。f

IBMがSunにJavaのオープンソース化要求

ココより。
Javaの仕様をSunがコントロールして、ボランティアのコミュニティとか、一般企業がJava VMに対する改良または、オープンソースJavaを開発できるようになる。ということらしいのですが。
IBMeclipseとか、オープンソースコミュニティーに積極的に関わることによって成功している代表企業なので、こういった提案をSunにしているのでしょうが。。。
Netbeanseclipseの統合なんていう話もちょっと前に出ていましたが、これも結局うまくいかなかったので、この話が前進するか謎ですが、非常に興味のあるところです。