Berkeley DBに、Java Editionがあるそうです。OpenLDAPか何かをインストールするときに、Berkeley DBを初めて知りました。一応チェックです。
「Java」カテゴリーアーカイブ
NeoOffice/J
おもしろそう。MacOS X へ OpenOffice を移植するのが NeoOfficeプロジェクトらしいです。それをさらに Java へ移植しようというのが NeoOffice/J のようなので自分でコンパイルをしようとすると死ぬ程時間がかかりそうな雰囲気です。
Java Performance Tips
Java World をパラパラめくっていたら載っていたのでメモ。ちょっとした工夫で速くなるみたいです。不変オブジェクトの利用というのがちょっと意外かも。
import java.util.List;
public class ListNcopy {
public static void main(String[] args) {
//不変オブジェクトの空リスト作成 … 速い
List list = Collections.nCopies(10000, null);
//このままではlistは不変なので、これから
//可変オブジェクトの空リストを作成
List arrayList = new ArrayList();
arrayList.addAll(list);
//ListからListへのコピーには、コンストラクタを
//利用すると速い
List copiedList = new ArrayList(arrayList);
//配列をListへ変換するには、不変オブジェクトを
//asListメソッドで取得してからコンストラクタ利用
Integer[] iArray = new Integer[10000];
List iList = Arrays.asList(iArray);
List copiediList = new ArrayList(list);
}
}
Ginipad
Ginipadという初学者でも使える開発環境があるようだ。Eclipseが普及している中でこれを使う理由はあまりないかもしれないが、インストールサイズが小さい、機能が制限されていてわかりやすい、コード補完機能がある、といったあたりは魅力的といえば魅力的だ。日本語リソースがまだないようなので、誰かが作って紹介すれば少しは普及するかもしれないとふと感じた。
よくみたら、2002年6月が最後の更新だったのかな。GPLだから、だれかが引継をできると思うけど…
Spring Framework
izu@San Diegoで知りましたが、Springの日本語コミュニティがあるようです。
なんで2つあるのか?
[選択肢]
1. やっている人が違うから…
2. 一緒にやろうとおもっていないから…
3. おたがいに存在を知らないから…
正解は知りませんが、それぞれが競争するといいものができあがるかもしれません。
FindBugs
FindBugs第1回: コード品質を改善する
FindBugs, Part 2: Writing custom detectors
FindBugsの記事。
こういうツールはどんどん使って利用しないと損だよね。Antに組みこめるのは初めて知った。ビルドファイルを今度作ってみよう。も一度見ておいた方がいいはず。学生にも使わせたいところだけど、その前にまずはJavaの文法か…
IEEE 754 floating-point
IEEE 754 floating-point “double format” ビットレイアウトがどうなっているかを表示するプログラムを作成してみた。
符号部は正の数だと0で負の数だと1が入り、指数部に入っている値には1023が加算されているようだ。仮数部には小数部分が2進数で入っているので1を加算しないといけないようだ。とりあえず、1E1の値を知りたかったので、それと10の内部表現が一致していたことだけは確認したが、その他の事項についてはまだ未確認な点が多い。1.0, 2.0, 4.0, 0.5, 0.25あたりを試すと良さそうだ。指数部の値によって正規化数か非正規化数かが決まって、計算が変わるらしいことまではわかったが、眠くなったので詳細はまだみていない。なんとなく正規化数については対応できていそうだが非正規化数は駄目そう。まだまだつめが甘そうだ。
と思いながらJavaFAQを見ると、浮動小数の表記方法を示す IEEE754 とは何ですか?という質問と答が、ずばり載っていた。…素晴らしいですJavaFAQ… でも指数部で1023を引いていないバグと非正規化数の考慮がされていないのを発見。指摘しておくのがいいのだろうけど、活動停止しているからどうしよう…とりあえずMLには投稿しておいた。