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 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -






