Insider's Eye
.NET版Java言語「Visual J# .NET」オーバービュー(3)デジタルアドバンテージ 遠藤孝信 2001/10/16 |
Javaプログラムをコンパイル/コンバートしてみる
J#には既存のJavaのソース・コードをMSILにコンパイルするための「J#コンパイラ(jc.exe)」と、JavaのバイトコードによるコンポーネントをMSILに変換するための「Visual J# .NET Binary Converter(jbimp.exe)」がツールとして含まれている。またこれらに伴い、JDK 1.1.4互換のクラス・ライブラリが含まれる。これはVisual J++ 6.0がサポートしていたJDKと同じバージョンだ。これにはMicrosoftが独自に拡張した「J/Direct」や「Java-COM」が組み込まれているが、JNI(Java Native Interface)やRMI(Remote Method Invocation)、アプレットのサポートは含まれていない。
ここではJ2SE(Java 2 Platform, Standard Edition) V 1.3.1に付属している、基本的なコンポーネントのみを使用した簡単なサンプル・プログラムを利用して、J#に付属する各種ツールを試してみた。
ここで用いたサンプル・プログラムは、「CardTest」というコントロールのレイアウトに関するデモ・プログラムだ。
まず参考までに、このサンプルを通常のJavaプログラムとしてコンパイルし、実行してみる。これにはJDKに付属するコンパイラである“javacコマンド”により、ソース・ファイルである「CardTest.java」から、バイトコードである.classファイルを作成する(CardTestの場合には、CardPanel.classとCardTest.classの2つのファイルが出来上がる)。プログラムの実行には“javaコマンド”を使用する。
JDKによるJavaプログラムのコンパイルと実行 | |||||||||
|
次の画面はjavaコマンドにより実行されたCardTestプログラムだ。
javaコマンドにより実行されたCardTestプログラム |
このプログラムはコントロールのレイアウト機能に関するデモを行う。 |
それでは次に、上でjavacコマンドにより作成した.classファイルを、バイナリ・コンバータであるjbimp.exeによりMSILに変換してみる。
バイナリ・コンバータによるバイトコードからMSILへの変換 | |||||||||
|
これにより何の問題もなく「CardTest.exe」が生成された。これはMSILなので、実行には.NET Frameworkがインストールされた環境が必要である。MSIL変換後のCradTest.exeを実行したところが次の画面である。当然ながら、アプリケーションの動作はまったく同じだった。唯一異なるのは、ウィンドウのタイトルバーの左隅につく小さなアイコンが、「コーヒー・マーク」ではないところくらいだ。
バイナリ・コンバータにより出力されたexeファイルを実行した画面 |
当然ながらアプリケーションの動作はJavaのバイナリと全く同じ。唯一異なるのはウィンドウのタイトルバーの左隅につく小さなアイコンだ。 |
次にソース・ファイルであるCardTest.javaを、J#コンパイラでコンパイルしてみる。これにより直接、実行ファイルである「cardtest.exe」が出来上がる。実行して表示される画面は、バイナリ・コンバートした上記のものと同じだった。
J#コンパイラによるJavaプログラムのコンパイル | ||||||
|
J#の存在意義は何か?
今回は、発表されたVisual J#をインストールし、簡単なテスト・プログラムの作成とコンパイルを実行してみた。たったこれだけのテストで結論づけることはできないが、.NET Frameworkのプログラミング言語ラインアップとして、Javaが追加されたという以上のものではない。すでに.NETには、Javaを進化させたC#が用意されている。細かな部分を除けば、Javaを理解しているプログラマがC#に転向するのは比較的容易である。読者がJavaプログラマであっても、.NET Framework上で新規にプログラムを開発しようとするなら、C#を使うことにたいして違和感はないはずだ。いまさらJ#が登場したところで、さしてありがたみはないかもしれない。
一方、すでに開発済みのJavaコードを.NET環境に移行しようとする場合はどうだろうか。この場合には、J#で提供される各種ツールが役立つだろう。簡単に移行できるかどうかは、Javaプログラムから使用しているクラス・ライブラリ次第だが、標準的なライブラリを使用して開発されたコンポーネントの移行はそれほど困難ではないだろう。今回はこの点について詳しくご紹介できなかった。機会があればこの点についても掘り下げてみたい。
いったんはJavaと決別したと見えたMicrosoftが、ここに来て自分自身で再度サポートを表明する理由は何だろうか? いまやWebソリューション分野の標準開発言語になったといっても過言ではないJavaは、.NET戦略を進めるうえで、当初の予想を超える障害だったということだろうか? 真偽のほどは不明であるが、プログラマとしてはよけいな詮索はせず、単に.NET Frameworkの対応言語が1つ増えたと認識すればよさそうだ。
INDEX | ||
Insider's Eye | ||
.NET版Java言語「Visual J# .NET」オーバービュー(1) | ||
.NET版Java言語「Visual J# .NET」オーバービュー(2) | ||
.NET版Java言語「Visual J# .NET」オーバービュー(3) | ||
Insider's Eye |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|