Microsoftは1997年にVisual J++1.1をリリースしましたが、
Java言語で記述したソースコードをWindows用のネイティブアプリケーションに変換する機能を持たせており、
これがJavaの「Write once, run anywhere」の精神に反するということで、Javaコミュニティから糾弾されました。
この問題は訴訟に発展し、翌98年には米連邦裁判所がMicrosoft に Java 互換ロゴ使用差し止め命令を下しています。
以後、MicrosoftはWindowsアプリケーション開発のためにJavaを模してC#を開発することになったわけですが、
今回、Javaとの互換性を維持しつつ、Windowsアプリケーションを開発できるVisual J
(ダブルシャープ)を発表しました。
Javaを動かす仕組み
仕組みとしては、.NET FrameworkのVM(仮想マシン)であるCLRをJavaのVM上で動かすことにより、
.NETにJavaを導入するというものです。
JavaからC#などの言語を呼び出すには、JavaSE 6.0から導入された
script APIを利用します。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Script {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("cs");
try {
engine.eval("System.Console.Out.WriteLine(\"Hello, world!\");");
} catch (ScriptException ex) {
ex.printStackTrace();
}
}
}
拡張子csを用いてScriptEngineオブジェクトを作成します。
あとは実行するソースコードをengine.eval()に渡すことで実行することができます。
上記例ではC#によるHelloWorldを呼び出しています。
また、JダブルシャープのVM技術により、Javaの動く環境下ではどこでもCLRを動かせるようになったため、
.NET開発者はWindowsに縛られることなく、Javaをサポートする多くのOS上でプログラムを動かすことができるようになります。
投稿日時 : 2008年4月1日 11:48