Insider's Eye
.NET版Java言語「Visual J# .NET」オーバービュー(2)
デジタルアドバンテージ 遠藤 孝信
2001/10/16 |
|
Visual Studio .NETでJ#を使用する
J#のインストール後、VS .NETを起動し新しいプロジェクトを開くと、プロジェクトの種類としてJ#の選択肢が追加されている。このときテンプレートとしては、C#と比較して「Windowsサービス」(バックグラウンドで実行されるサービス・プログラム)が不足しているだけで、WindowsアプリケーションやASP .NETによるWebアプリケーション、XML Webサービスなどを、C#と同様にJ#でもVS .NET上で作成可能となっている。
|
新規プロジェクトを作成するための[New Project]ダイアログ |
[Project Type]として[Visual J# Projects]が追加されていることが分かる。、「Windowsサービス」を除けば、C#と同じテンプレートを利用できる。 |
|
|
「Visual J# Projects」の項目が追加されている。 |
|
|
J#で選択できるテンプレートはC#とほぼ同様である。 |
|
ここでは試しに「Windowsアプリケーション」を選択してプロジェクトを作成してみた。次の画面は、作成したプロジェクトのフォームにラベル・コントロールとボタン・コントロールを配置したところである。このように、デザイン時の作業は、J#であっても、C#やVisual Basic .NETとまったく同様だ。
VS .NETの画面右上部分にあるソリューション・エクスプローラにあるように、VS .NETでは、J#のソース・コードの拡張子は「.jsl」となる。
|
J#で作成中のWindowsアプリケーション |
デザイン時の作業はC#やVisual Basic .NETとまったく同様に行える。
|
|
|
アプリケーションの実行画面となるフォームにコントロールを配置する。 |
|
|
J#のソース・コードの拡張子は「.jsl」となっている。 |
|
プログラム・コードの記述時においても、C#やVisual Basic .NETの場合と同様に、インテリセンス機能が働き、コード入力の手間を大幅に省くことができる。また、強力なデバッガも他の言語と同等に利用することができる。
さて、肝心のプログラム・コードの内容を知るために、簡単なサンプル・プログラムを作ってみた。以下は、ウィンドウ上のボタンをクリックすると、ラベルにメッセージを表示するアプリケーションである。ただし、手作業で追加したコードは、メッセージを表示するbutton1_Clickメソッド内の1行のみである。
package WindowsApplication1;
import System.Drawing.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.Windows.Forms.*;
import System.Data.*;
// Summary description for Form1.
public class Form1 extends System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
// Required designer variable.
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
// Clean up any resources being used.
protected void Dispose(boolean disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
super.Dispose(disposing);
}
#region Windows Form Designer generated code
// Required method for Designer support - do not modify
// the contents of this method with the code editor.
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// button1
//
this.button1.set_Location(new System.Drawing.Point(((int)208), ((int)232)));
this.button1.set_Name("button1");
this.button1.set_TabIndex(((int)0));
this.button1.set_Text("button1");
this.button1.add_Click( new System.EventHandler(this.button1_Click) );
//
// label1
//
this.label1.set_Location(new System.Drawing.Point(((int)8), ((int)16)));
this.label1.set_Name("label1");
this.label1.set_Size(new System.Drawing.Size(((int)280), ((int)48)));
this.label1.set_TabIndex(((int)1));
this.label1.set_Text("label1");
//
// Form1
//
this.set_AutoScaleBaseSize(new System.Drawing.Size(((int)5), ((int)13)));
this.set_ClientSize(new System.Drawing.Size(((int)292), ((int)266)));
this.get_Controls().AddRange(new System.Windows.Forms.Control[] {this.label1, this.button1});
this.set_Name("Form1");
this.set_Text("Form1");
this.ResumeLayout(false);
}
#endregion
// The main entry point for the application.
/** @attribute System.STAThreadAttribute() */
public static void main(String[] args)
{
Application.Run(new Form1());
}
private void button1_Click (System.Object sender, System.EventArgs e)
{
label1.set_Text("Hello Java World!");
}
} |
|
Visual Studio .NETを使用して記述したJ#のプログラム・コード |
button1_Clickメソッド内の1行以外はすべてVS .NETが生成したもの。 |
VS .NETが出力するWindowsアプリケーションのスケルトンは、一見するとC#で記述されているかのにように見えるが、見事にJava言語で記述されたWindows Formsアプリケーションになっている。文法はJava言語でありながら、使用するクラス・ライブラリは.NET Frameworkという、Javaプログラマにとっても、C#プログラマにとっても、違和感を感じずにいられないコードではある。
このプログラムで、C#のプログラムと目立って異なる点は、コントロールのプロパティ設定である。例えば、ボタンに表示されている文字列を設定する行を、C#とJ#の双方で記述する方法を比較すると次のようになる。
J# : this.button1.set_Text("button1");
C# : this.button1.Text = "button1"; |
このようにJ#では、ボタンのオブジェクトであるbutton1のset_Textメソッドに引数を渡して文字列を設定する形になっている。これに対してC#では、Textプロパティに代入する形で設定することができる。これは、Visual Basicなどで使われている仕様がC#に取り入れられたものだ。このようにC#では、代入により設定できたプロパティ(xxxプロパティ)は、J#ではすべてset_xxxメソッドの呼び出しとして記述されている(逆に、設定値を取り出す場合はget_xxxメソッドとなっている)。
ちなみに、このWindowsアプリケーションを実行し、ボタンをクリックしたときの画面は次のようになる。
|
J#を使用して作成したWindowsアプリケーション |
ボタンをクリックするとメッセージが表示される。
|
Insider.NET 記事ランキング
本日
月間