差分
IKVM.NET
,編集の要約なし
'''IKVM.NET'''とは、オープンソースにより開発が行われているとは、[[オープンソース]]により開発が行われている[[Mono]]及び[[.NET Framework]]上で実装されたJava仮想マシンを含む上で実装された[[Java仮想マシン]](Java VM)を含む[[Java]]の実装である。
== メリットとデメリット ==
[[.NETとJavaの2重の仮想化が行われるため速度面では不利ではある。NET]]と[[Java]]の2重の仮想化が行われるため速度面では不利だと言われている。どの程度の差があるかは調査していないので何とも言えない。
一方で、[[C Sharp|C#]]や[[F Sharp|F#]]、[[Phalanger]]などと同様に、[[.NETおよびJavaのライブラリなどをプログラミング言語レベルで一切意識せずに相互利用できる。NET]]および[[Java]]の[[ライブラリ]]などを[[プログラミング言語]]レベルで一切意識せずに相互利用できる。 == 主な利用方法 ==== Javaバイトコードを.NETマネージドコードに変換する ==IKVM.NETに含まれる「ikvmc」コマンドを用いて[[Javaバイトコード]]を[[マネージドコード]]に変換できる。 == Javaバイトコードをネイティブコード化に変換する ==IKVM.NET自体の機能ではないが、IKVM.NETを用いて[[Javaバイトコード]]を[[マネージドコード]]に変換したのち、[[Mono]]の[[AOTコンパイラ]]を用いて[[マネージドコード]]を[[ネイティブコード]]に変換することができる。 なお、[[Mono]]の[[AOTコンパイラ]]で[[コンパイル]]すると、[[プログラム]]起動用の[[マネージドコード]]な[[exeファイル]]と、そこから呼ばれる[[ネイティブコード]]で出来た[[ダイナミックリンクライブラリ]](dllファイル)および[[共有ライブラリ]](soファイル)が生成される。[[プログラム]]の起動には[[Mono]]を必要とし、そこで実行環境を自動判別することでネイティブコードなのに[[Windows]]と[[Linux]]の切り替えを考える必要がないという構造になっている。
== 歴史 ==
=== IKVM.NET 7.0 ===
[[OpenJDK ]] 7 b147 ベース。
== インストール ==
== 使い方 ==
単純な[[Java]]実装として使う場合は、IKVMを展開したディレクトリ内のbinディレクトリにJavaのjavaコマンドに相当するikvm実装として使う場合は、IKVMを展開したディレクトリ内のbinディレクトリに[[Java]]のjavaコマンドに相当するikvm.exeコマンドがいるのでこれを叩くだけである。
<source lang="bash">
$ cd bin
</source>
[[Mono]]で用いる場合はシェルスクリプトによるショートカットを用意しておくと便利。で用いる場合は[[シェルスクリプト]]による[[ショートカット]]を用意しておくと便利。パスを指定している部分は各自の環境にあわせ書き換えること。
<source lang="bash">
$ echo '#!/bin/sh'$'\nexec mono $MONO_OPTIONS "/opt/ikvm-7.0.4335.0/bin/ikvm.exe" "$@"' > /opt/ikvm-7.0.4335.0/bin/ikvm
* [[Mono]] - IKVM.NETとの統合が進められている。
* [[MonoDevelop]] - IKVM.NET公式の統合開発環境
== 外部リンク ==
* http://www.ikvm.net/
== 参考文献 ==
{{reflist}}
{{stub}}