JVM
SPECjvm06って何ですか?
私のマシンで Tomcat を Kaffe で起動すると1分以上かかるのに、Sun JDK で起動すると10数秒。理由を調べると GNU Classpath の java.util.ResourceBundle の読み込みが遅いようだ。ResourceBundle は getBundle() でロードしたバンドルを内部的にキャッシュ…
「Apache Strutsアプリケーション開発入門」(ASIN:4797327790)に添付のサンプルプログラムを Kaffe で動かそうとしても動かない。Tomcat の localhost_log にえらい長いスタックダンプが出ているのでスタックオーバーフローらしい。gnu.xml.pipeline.Validat…
知ってる人は知ってることだが知らないとソース読まなきゃわからんので書いておくが、最近の Kaffe(というか GNU Classpath)で日本語をまともに使うには gnu.classpath.nio.charset.provider.iconv プロパティをヌル値以外にしておく必要がある。Kaffe の…
IBMがVMインタフェースとかのソースをひっそりとcontributionしたらしい。それに加えてテスト用のJ9バイナリ(ソースではない)も一応公開。 http://www-128.ibm.com/developerworks/java/jdk/harmony/
http://www-128.ibm.com/developerworks/java/jdk/java5beta/
最近の harmony-dev のサマリーは http://planet.classpath.org/ の方に掲載されるので便利だ。
JMP は JVMPI を用いているが、最近の Kaffe も JVMPI を提供している。このエントリ http://gnu.wildebeest.org/diary/index.php?p=104 によると2005年7月中旬以降のバージョンで JMP が動くようになったらしい。
Java のメモリやその他のプロファイルをリアルタイムで見ることができる JMP (Java Memory Profiler) というツールを使ってみた。環境は Linux。Windowsでも動くらしいが、GTK+が必要。
SPECjvm98の_201_compressをC言語に移植して性能を測定した。移植したソースはここに載せるとマズいと思うので秘密。Javaで書かれたプログラムをCに移植する際に色々とやり方はあると思うが、とりあえずJavaのクラスは構造体とした。compressはオブジェクト…
SPECjvm98 の _201_compress で圧縮解凍してる tar ファイルの中身って SPECjvm98 自身だったんだ……。知らなかった。
そういえば、SPECjvm98のベンチマークプログラムの.classファイルって付属の.javaファイルをコンパイルして生成したものかと思いきや、実は微妙に違っていたりするのがタチが悪い。.javaファイルだけを見て最適化手法を考えているとハマったりする。例えば c…
仕事と趣味の関連で Java のベンチマークである compress のソースを読んだので自分用メモ。compress のソースが手元に無いと全く意味不明だろう。単に compress のアルゴリズムを知るだけなら http://www.dogma.net/markn/articles/lzw/lzw.htm が非常にわ…
As stefano says - "good ideas and bad code build communities, the other three combinations do not"....Let's build the community without waiting for the discussion to end on the mailing lists and let the committers/community decide on how b…
Harmonyのメーリングリストも面白いけど、Planet Classpathにある情報も役に立つに違いない。関係ないが、IBM東京基礎研のJITコンパイラ書いた人達にHarmonyのこと聞いたら誰も知らなかった。文化圏が違うもんな。
JVMについて語る国際的な場ができた、ということがこれまでのところのHarmonyの最大の貢献か。
結局のところ、このプロジェクトが何を目指しているのかが極めて不明瞭なのが一番の問題だろう。PROPOSAL*1によればこのプロジェクトの目的は Apache v2ライセンスの元でJ2SE 5完全互換な実装を作成する。 実行環境(VMとクラスライブラリ)の実装をモジュー…
Tomat 5のクラスタリング関連のコードがなぜかKaffeで動かなくなってしまった。 kaffe-bin: ../../../kaffe/kaffe/kaffevm/soft.c:254: soft_lookupinterfacemethod: Assertion `cls->state >= CSTATE_USABLE' が失敗しました.で落ちる。gdbで調べてみるとor…
FreeBSD 4.8の上のCVSバージョンのKaffeの上のTomcat 5.0.28が動かなかった直接の原因は、プロパティファイルが読めないことであった。なぜ読めないかを追求していくと、結局は"8859_1"というエンコーディングのバイト列を文字列に変換できていないことが原…
SSS-PCの上でTomcat 4.1.29/Kaffe 1.1.4が動作しているのだが、日本語がうまく取り扱えない……。KaffeのCVSバージョンを移植するしか。移植と言ってもconfigure.acとMakefile.amを書き換えるのが主な仕事だ。libcについてはUNIXと比較的高い互換性を持ってい…
Linuxの上では動いていたのだが、FreeBSDの上で動かそうとするとBootstrapでいきなりNullPointerExceptionが出て落ちる。プロパティが読めていないくさいが……。
クラスタリングにおけるセッション情報の動的複製がうまく動作しないのは、org.apache.catalina.cluster.tcp.ReplicationValve#invoke()の中で正規表現を用いてフィルタリングしている部分がKaffeで誤動作していることが直接の原因のようだ。フィルタリング…
Tomcat 5.0系列の最新版Tomcat-5.0.28はKaffe-1.1.4では正しく動かないが、KaffeをCVSから引っ張ってくれば動く。しかし、私にとっての問題はクラスタリング機能が正しく動作しないという点だ。起動時に他のマシンからセッション情報を全部取得する機能は動…