仮想マシンが不要なJava処理系picoJavaについて
JVMについて調べていたら興味深いブログがあった。
JVMのバイトコードを直接実行できるCPUが過去に開発されていたようだ Wikipediaの記事があったが日本語版がなかった。
短かかったので訳してみようと思う。
picoJavaとは?
picoJavaはJavaバイトコードをインタプリタ、JITコンパイラなしにネイティブ実行するマイクロプロセッサ仕様である。 通常のIntel CPUよりも20倍以上早く動作することが狙いである。
picoJavaベースのマイクロプロセッサーはC/C++をRISC並みの効率性で動作させることが可能である。
GNUComplier Collectionでは2.9から3.2.3、GNU Binutilsは2.28までマシン定義として'pj'を利用可能であった。GNU Debbugerも一度実装されたが、コードはおそらく紛失されている。 SunはGDB、SCSL*1で動作する命令セットシュミレータをオープンソースで提供した。
結果的に省メモリ・ハイパフォーマンスで動作するJava以外の言語で書かれた最初の実行環境となった。
picoJava仕様はメモリやI/Oインターフェースの仕様を定めていないため、開発者が独自のロジックをカスタマイズ可能である
プロダクト
picoJavaの元々、家電製品でJavaアプリケーションを使用するために設計されている。
Sunはこの技術に基づく製品をリリースすることはなかったが、富士通、NEC、Siemens等の会社にライセンスした。VerilogのpicoJavaコードがSCSLライセンスの元リリースされたが、現在ダウンロードページは利用できなくなっている。*2
2000年に富士通がpicoJavaアーキテクチャプロセッサ向けの開発システムであるJ-Starter Kitをリリースした。
FPGAで実装されたオープンソースのpicoJavaがある。*3
感想
FPGAのpicoJavaの論文をちょろっと読んだけどガベージコレクションは配布に含まれないから動かすためにしように合わせて実装した?みたいなこと書いてあるけど大変そうだと思いました(小並感)*4
Other parts, such as a garbage collector and the standard class library, are not part of the distribution and have to be written in order to accomplish a compliant implementation of the JVM.
*1:なんだこれ?見たことないなと思ったけどSun Community Source Licenseの略らしい。java2のライセンスもこれだとか
*2:多分これかなhttp://yangchangwoo.com/podongii_X2/html/pds/HDL/picoJava-II/README.html