読者です 読者をやめる 読者になる 読者になる

JikesRVMで「Hello World」

JikesRVMでGC作り - I am Cruby!
えらい日本語の情報が少ないJikesRVMについてちょっとずつ調べながら説明するシリーズ。

JikesRVM とはなにか

http://jikesrvm.org/Home

 簡単にいえば「すごくいじりやすいVM」かな。
JikesRVMの、「RVM」は「Research Virtial Machine(研究用VM)」の略です。
名前からわかる通り、JikesRVMはVM自体を改良するためのいろいろなAPIが用意されています。
たとえば、GCJavaで書けちゃったりするらしい。
 
 なので、JikesRVMの目標は「閃いたアルゴリズムを簡単に実装させてやりたい!」なのではないかと。
「じーしーつくりたいけど、しーができないとだめとかありえない(白目」とはいわせませんよと。

インストール

http://jikesrvm.org/Care+and+Feeding を参考にすすめましょうね。

Jikes RVM download | SourceForge.net で最新のソースコードが落とせます。

 jikes_rvmのディレクトリに移動したら次はビルド。antが入ってればOKらしいです。だから、JDKもいるんじゃないかな。

 ビルドには .ant.properties というファイルを書く必要があります。私の環境では次の通り。

host.name=ia32-linux
config.name=development

host.name は自分の環境ですね。対応しているホストはbuild/hosts/内のファイルを見ればわかります。
config.name はproductionとかあるわけですけど、なんとなくdevelopmentにしました。
productionだと最大限最適化を効かせるらしいです。

 developmentだとcheckstyleのダウンロード辺りでURLがないという風にこけてしまうので以下のパッチを当てる(バグ報告はしておいた)。

diff --git a/build/components/checkstyle.xml b/build/components/checkstyle.xml
index 68b869b..2173927 100644
--- a/build/components/checkstyle.xml
+++ b/build/components/checkstyle.xml
@@ -19,7 +19,7 @@
   <property name="checkstyle.description" value="PMD"/>

   <property name="checkstyle.package.dir" value="${components.dir}/checkstyle/${checkstyle.version}"/>
-  <property name="checkstyle.dir" location="${checkstyle.package.dir}/checkstyle-${checkstyle.version}"/>
+  <property name="checkstyle.dir" location="${checkstyle.package.dir}/checkstyle"/>

   <target name="init-checkstyle-properties" depends="prepare-ant-tasks">
     <condition property="checkstyle.from-web" value="true">
@@ -36,7 +36,7 @@
     <property name="checkstyle.web-archive" value="checkstyle-${checkstyle.version}.tar.gz"/>
     <mkdir dir="${checkstyle.package.dir}"/>
     <cachedGet key="${checkstyle.web-archive}"
-         src="http://optusnet.dl.sourceforge.net/sourceforge/checkstyle/${checkstyle.web-archive}"
+         src="http://pkgs.fedoraproject.org/repo/pkgs/checkstyle/checkstyle-4.3.tar.gz/62764294906850647edf3c20ca3291c5/checkstyle-4.3.tar.gz"
          dest="${checkstyle.package.dir}/${checkstyle.web-archive}"/>
     <untar src="${checkstyle.package.dir}/${checkstyle.web-archive}" compression="gzip" dest="${checkstyle.package.dir}"/>
     <writeComponentConstants dir="${checkstyle.dir}"/>

 で、antでビルドしましょう。

$ sudo ant

権限周りでコケルのでとりあえずsudo付けておく(よいこは真似するな)。

実行

 dist の下に実行ファイル系が生成されている。

$ cd dist/development_ia32-linux

http://jikesrvm.org/Running+the+RVM を参考に実行しましょう。

 Hello Worldしてみましょう。

//HelloWorld.java
public class HelloWorld {
  public static void main (String[] args) {
    System.out.println("Hello World !!");
  }
}
$ javac /tmp/HelloWorld.java
$ cd /tmp
$ ~/path/to/dist/development_ia32-linux/rvm HelloWorld
Hello World !!

わーい。