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アプリケーション
ボタンをクリックするとメッセージが表示される。
 

 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


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間