「IKVM.NET」の版間の差分
imported>Administrator 編集の要約なし |
imported>Fallout New Tokyo 編集の要約なし |
||
| (3人の利用者による、間の10版が非表示) | |||
| 1行目: | 1行目: | ||
'''IKVM.NET'''とは、[[オープンソース]]により開発が行われている[[Mono]]及び[[.NET Framework]] | '''IKVM.NET'''とは、[[オープンソース]]により開発が行われている[[Mono]]及び[[.NET Framework]]上で実装された[[Java仮想マシン]](Java VM)を含む[[Java]]の実装である。 | ||
== 概要 == | |||
IKVM.NETは過去に[[マイクロソフト]]が提供していた[[J Sharp|J#]]のような[[Java]]類似言語ではなく、[[OpenJDK]]をベースとした純粋な[[Java]]の[[仮想マシン]]([[Java VM]])が[[.NET]]の[[仮想マシン]]([[共通言語ランタイム]])上で動作するというものである。 | |||
IKVM.NETはあくまで実行環境のみであり、[[プログラミング言語]]としての[[コンパイラ]](javacコマンド)に相当するものは含まれていないため、[[プログラム]]自体の[[開発]]には[[Oracle]]などが提供する各種[[JDK]]を用いて行う必要がある。 | |||
なお、IKVM.NETには[[Java]]の[[バイトコード]]([[classファイル]]および[[jarファイル]])を[[.NET]]の[[マネージコード]]([[dllファイル]])に変換するツールは含まれている。そのほかにもIKVM.NET独自のJavaクラスライブラリなども含まれている。 | |||
== メリットとデメリット == | == メリットとデメリット == | ||
| 11行目: | 12行目: | ||
どの程度の差があるかは調査していないので何とも言えない。 | どの程度の差があるかは調査していないので何とも言えない。 | ||
一方で、[[C Sharp|C#]]や[[F Sharp|F#]]、[[Phalanger]]などと同様に、. | 一方で、[[C Sharp|C#]]や[[F Sharp|F#]]、[[Phalanger]]などと同様に、[[.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 === | === IKVM.NET 7.0 === | ||
OpenJDK 7 b147 ベース。 | [[OpenJDK]] 7 b147 ベース。 | ||
== インストール == | == インストール == | ||
| 22行目: | 32行目: | ||
== 使い方 == | == 使い方 == | ||
単純な[[Java]] | 単純な[[Java]]実装として使う場合は、IKVMを展開したディレクトリ内のbinディレクトリに[[Java]]のjavaコマンドに相当するikvm.exeコマンドがいるのでこれを叩くだけである。 | ||
<source lang="bash"> | <source lang="bash"> | ||
$ cd bin | $ cd bin | ||
| 33行目: | 43行目: | ||
</source> | </source> | ||
[[Mono]] | [[Mono]]で用いる場合は[[シェルスクリプト]]による[[ショートカット]]を用意しておくと便利。 | ||
パスを指定している部分は各自の環境にあわせ書き換えること。 | |||
<source lang="bash"> | <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 | $ echo '#!/bin/sh'$'\nexec mono $MONO_OPTIONS "/opt/ikvm-7.0.4335.0/bin/ikvm.exe" "$@"' > /opt/ikvm-7.0.4335.0/bin/ikvm | ||
| 42行目: | 53行目: | ||
* [[Mono]] - IKVM.NETとの統合が進められている。 | * [[Mono]] - IKVM.NETとの統合が進められている。 | ||
* [[MonoDevelop]] - IKVM.NET公式の統合開発環境 | * [[MonoDevelop]] - IKVM.NET公式の統合開発環境 | ||
== 外部リンク == | == 外部リンク == | ||
* http://www.ikvm.net/ | * http://www.ikvm.net/ | ||
== 参考文献 == | |||
{{reflist}} | |||
{{stub}} | {{stub}} | ||