凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 46608
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

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[] argsthrows 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
コメント
  • # re: * Microsoft J#に代わる新しいJava互換言語
    myugaru
    Posted @ 2008/04/01 12:08
    Microsoftの「Delegate」について
    http://www.asahi-net.or.jp/~dp8h-izn/delegate.html
    前に
    http://blogs.wankuma.com/nagise/archive/2008/03/25/129534.aspx
    で言ってたsunがmicrosoftのdelegateを却下した話がわかりました。
    イベントモデルという限定した話ではなくてdelegate全体を却下したという話のようです。
    私の読んだ本は少し意訳されていたのかもしれません。

    それにしても凪瀬さんが書くと全部本当にしか思えないので困りますぉ><
  • # re: * Microsoft J#に代わる新しいJava互換言語
    じゃんぬねっと
    Posted @ 2008/04/01 12:20
    > 拡張子csを用いてScriptEngineオブジェクトを作成します。

    おいw
  • # re: * Microsoft J#に代わる新しいJava互換言語
    凪瀬
    Posted @ 2008/04/01 14:53
    嘘比率を少なめに書いていますんでw
    script APIのサンプルコードは本物です。
    現時点ではエンジンの実装がないのでC#の呼び出しはできませんけどもw
    エンジンの実装さえあれば、このコードで呼び出せるはずです。
  • # re: * Microsoft J#に代わる新しいJava互換言語
    裏口
    Posted @ 2008/04/01 21:09
    *が付いてなきゃマジネタだと思われ。

    # nagiseさんに最高の嘘つきの称号をさし上げますwww
タイトル
名前
Url
コメント