特集:第2回 スタートアップ.NET――開発ソフトの現状と目的別使い方(前編)dev .NET(3/3 ページ)

» 2004年07月09日 13時55分 公開
[大澤文孝,ITmedia]
前のページへ 1|2|3       

言語形態がJavaに近い、Visual C#

 C#は、.NET Frameworkの登場に伴って生まれた新しい開発言語だ。C#という名前から、C++の後継というイメージもあるが、その実体は少し違い、どちらかというと言語体系としてJavaに近いものだ。C#はC++と違い、ポインタを使ってメモリに直接アクセスする操作を許されていない。また、多重継承もできないように構成されている。

 C#での開発は、VB.NETとほとんど同じである。おおまかに言ってしまえば、VB.NETとC#との違いは、言語仕様の違いだけだ。文法的に見れば、C#のほうが高度なことを簡潔に記述できるため、中上級者に好まれる傾向がある。

 また、C#はMSILとの相性がよく、効率の良くコードを書き出すという説もあるが、定かではない。確かに、C#はMSIL向けに作られたのも事実なため、効率の良いコードが生成される可能性はある。しかし、それでもVB.NETとC#で速度が大きく違ってくることはないだろう。少なくとも、従来のWin32アプリケーションのように、Visual Basic 6.0とVisual C++とで速度の差が数倍あるといったことは起こり得ない。


ただし、VB.NETで遅延バインディング(実行時にオブジェクトのクラスを決めること)を使うと、極端に遅くなる。VB.NETでは、遅延バインディングを禁止するために「Option Strict」という設定があるので、これをOnにするのが好ましい。デフォルトはOffであり、Offの状態だと相当遅くなる。

 VB.NETを使うかC#を使うかは、好みの問題であるが、上級者ほどC#を使う傾向がある。これは、上級者は、すでにC++やC、Javaなどの文法に慣れているというのが、理由のひとつだろう。VB.NETもC#も、どちらも機能や速度での違いはないので、もし、Visual Basicに慣れているのであれば、無理してC#に移行する必要はなく、VB.NETに移行すればよい。


もちろん、言語仕様の違いから、いくつかできないコーディングがあるのも事実だ。たとえば、C#では演算子のオーバーロードはサポートされるが、VB.NETではサポートされない。

 ただし、.NET Framework向けの技術ドキュメントやサンプルはC#で書かれていることも多いので、C#のプログラムは、書けなくても読めるという程度までは知っておかないと、後に苦労することになるかもしれない。

JDKクラスライブラリも利用できる、Visual J#

 Visual J#は、Javaを使った開発環境だ。そうとはいえ、Javaの仮想コードではなく、MSILのコードを書き出す。つまり、ソースファイルをJavaで書くというだけであり、最終的なバイナリはCLRで実行されることを前提とする。Visual J#で開発したプログラムは、Java仮想マシン(JavaVM)では動作しないわけだ(当然、Javaアプレットも開発できない)。

 Visual J#では、.NET Frameworkのクラスライブラリに加え、JDK 1.1.4互換の(Javaの)クラスライブラリを利用することができる。開発できるアプリケーションは、Windowsアプリケーション、Webアプリケーション、Webサービスなど、VB.NETやC#と同等だ。

 しかしVisual J#で開発したアプリケーションを実行するためには、.NET Frameworkに加えて、「Visual J# .NET再配布可能パッケージ」が必要となるなど、使いにくい面は否めない。そのため、Visual J#が使われる場面は、現在Javaのソースコードがあって、それを.NET Frameworkに移植したい場面に限られてくるだろう。Visual J#には、Visual J++ 6.0からVisual J#のプロジェクトに変換するための「Java Language Conversion Assistant」というユーティリティも付属している。

 また、.NET Framework SDKには、Javaのソースコードがなくても、Javaのバイナリ(.classファイル)からMSILのバイナリ(.exeファイル)に直接変換する「JbImp.exe」というツールがある。JbImp.exeを使えば、既存のJavaのクラスを.NET Frameworkのクラスに変換できる。変換後のクラスは、Visual J#に限らず、他の.NET Framework対応言語からも利用可能だ。ただし、JbImp.exeで変換できるのは、JDK 1.1.4レベルのクラスライブラリのみを使っているものに限られる。

 次回後編では、Visual C++やボーランドの開発環境、そして先ごろ発表された無償の開発環境などについて触れていく。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ