このWikiは、OSDNの管理グループが運営しています。
OSDNを利用している開発者の方に、月ごとにインタビューを行っています。
Mysaifu JVM は Windows Mobile上で動作するJava仮想マシンです。クラスライブラリとしてGNU Classpathを使用しています。
Pocket PC 2003 SEおよびWindows Mobile上で動作するJava仮想マシンです。モバイル端末上で一般的なJava ME (Java Micro Edition)ではなく、デスクトップやサーバで利用されているJava SE (Java Standard Edition)をサポートしていることが特徴です。
2004年9月に、東芝のe830を購入したのがきっかけです。CPUクロックは520Mhz、メインメモリが128MBもあり、さらに解像度はVGAでした。 「これだけの性能があれば、デスクトップPCとほぼ同じことができるのでは」と考え、いろいろなプログラムを入れて遊んでいました。 Javaプログラムも動かしてみたくなったのですが、JavaSE (Java Standard Edition)の実行環境がSunから提供されていなかったので、自分でJava仮想マシンを作ってみようと思い立ちました。
Java Virtual Machine Specification (Second Edition)を読みながら、クラスファイルの解析、バイトコードの実行、ガベージコレクタの作成、複数スレッドの並列実行・・・と少しずつ作っていき、2004年12月頃にJava仮想マシン自体は動くようになってきました。
2005年4月15日に最初のバージョンである Version 0.0.1 を公開した後、バージョンアップを繰り返してきました。15回目のリリースである Version 0.1.5から現在に至るまで、ずっと!Sourceforge.JPのサービスを利用させていただいています。
一番の大きな変化は、JDKのオープンソース化です。プロジェクトを開始した2004年当時、SunはJDKのオープンソース化には反対で、FSFのGNU Classpathプロジェクトが独自にオープンなJavaの開発を行っていました。2006年11月にJDKのソースが公開され、 これで様々なプラットフォームへJava実行環境が移植され、Mysaifu JVMは不要になると思いました。 しかし、現時点でもまだWindows Mobile端末上でJava SEをサポートするJVMは公開されていないようなので、Mysaifu JVMの開発を続けています。
ターゲットは特に考えていなかったのですが、ソフトウェア開発者の方や、情報処理を専攻している学生の方からよくメールを頂きます。また、業務用システムで使おうとしている勇気ある方もいらっしゃるようです。
ダウンロード数が大体40万ぐらいで、バージョンアップを40回程していますので、非常に大雑把ですが5,000人から1万人ぐらいの方が使っているのではないかと思います。
機能を追加して、今まで動かなかったプログラムを動作させることができたときです。最初に「SwingとJava3Dが動いたらすごいよな」と漠然と考えていたので、特にこの二つが実際に動いたときは非常にうれしかったです。
問い合わせメールやバグ報告をよく頂くのですが、そのほとんどが海外の方から寄せられることです。海外ではかなりWindows Mobile端末ユーザが多いことが分かりました。
性能が全然出ないことです。デスクトップPC上のJVMと比べると、3桁以上多くの実行時間が必要となっています。インタプリタ方式なので遅いかな、とは思っていたのですが、実際に動かしてみてここまで遅いとは思いませんでした。いろいろ工夫しているのですが、効果が出ていません。また、Java2Dの機能も多くが未実装のままになっています。1週間に2~3時間ぐらいしか開発する時間がないので、なかなか進みません。 また、海外の方からたくさんのメールをいただくのですが、英語が苦手なのでなかなか返事が書けず、どんどんたまってしまっています。返事ができていないものの中には「開発に協力しようか」というものも含まれていますので、もったいない状態になっています。
最終的な目標は、Java SEを完全にサポートするJava仮想マシンを作ることです。これは作り始めたときから変わっていません。デスクトップPCやサーバ上で動いているプログラムを、そのままWindows Mobile上で実行できるようにしたいです。 まだまだ機能も足りませんが、地道に作っていくつもりです。
様々なご要望を頂きますが、中でも多いのは「性能を上げてくれ」「Java2D関連機能を全部実装してくれ」というものです。
Windows Mobile上でJava SEをサポートする数少ないJava仮想マシンという点です。 また、いろいろなライブラリをWindows Mobileに移植しています。クラスライブラリであるGNU Classpathを始め、libxml, libiconv等を移植しています。JVM本体の開発に一番重宝しているのがkmmallocというライブラリです。これはヒープのエラーチェックを行ってくれるメモリ管理ライブラリで、Mysaifu JVMではmalloc()/free()をkmmallocで置き換えています。確保した領域を超えた部分にデータを書き込んでしまうような厄介なバグは、該当箇所をなかなか見つけにくいのですが、kmmallocはすぐに検知してくれます。
Mysaifu JVMは様々なオープンソースライブラリを組み合わせて作っていますが、Java VM本体はスクラッチで作りました。もし今からプロジェクトをはじめるとしたら、Java VM本体もOpenJDKやphoneME等のオープンソース実装をベースにしたほうが良いと思います。その方が互換性が高く、かつ高速に動作するJVMが作れると思います。
システムインテグレーション会社の研究開発部門で働いています。ただ、Windows MobileやJavaとは全く関係ない仕事をやっています。
JVM本体とネイティブライブラリのビルドにはVisual Studio2005を、Javaライブラリの開発は秀丸とJDKを使って開発しています。 全てWindows XPが載っているPC上で開発しています。
Mysaifu JVM上で様々なプログラムを動かしてみて、その結果をお知らせいただけるとうれしいです。 また、インタプリタの高速化方法やJava2D実装について協力していただけるとさらにうれしいです。
以前はCVSリポジトリに悩まされていたのですが、SVNに移行してから快適に使わせていただいています。ひとつ要望を上げさせていただくとすれば、SourceForge.netとユーザ情報を共有できるようにしていただけるとうれしいです。
今月のプロジェクトに戻る
[ページ情報]
更新日時: 2009-02-23 12:46:23, 更新者: morihide
[ライセンス]
GNU Free Documentation License
[権限]
表示:無制限, 編集:メンバー, 削除/設定:メンバー