Java, Mac, Python

Java屋が触る C# / その1 – Visual Studio Express で Hello World

・ Java 屋が触る C# / その1 – Visual Studio Express で Hello World
Java屋が触る C# / その2 – コマンドラインでコンパイル・実行
その3 – Mono のインストール・実行

C# は Microsoft が主導して規格制定している Java によく似た言語です。
コンパイルされたクラスは Windows ネイティブではなく、.NetFramework 上で動作するための中間コードになります。
最近では Windows 以外の環境で .Net のコードを動作させる環境 – Mono が盛り上がっており、マルチプラットフォームのアプリケーションを開発する基盤として Java に次ぐ選択肢となり得ます。
それどころか Mono の上で Java や Python, Ruby を動かすこともできるようです。
言語に依存しない実行環境である .NetFramework の特徴をうまく利用していますね。
http://www.mono-project.com/Languages

Mono の上で Eclipse を動かしているというスクリーンショットもあります。Java との互換性は相当進んでいるのではないでしょうか。

Mono を使ったマルチプラットフォームアプリケーションとしてはimeemがあります。
これは “Social Media” を謳うアプリケーションで、基本は Yahoo! Messenger、Windows Live Messenger、AIM といった各プロトコルに対応するチャットクライアントです。
面白いのはチャットクライアントをベースに写真や動画を共有することができたり、友達の友達、といった形で辿ったりすることができる新しいコンセプトのツールです。
もともと Windows 用に作ったアプリケーションですが、Mac 版を1から作らなくて済むよう Mono を利用してコードの大幅な共通化を図っているとのことです。
ダウンロードして動かしてみれば分かりますが、Cocoa のネイティブアプリケーションと変わらないルック&フィールで自然に動きます。

Mac OS X 上で動く imeem

というわけで、個人的に注目していたのですが、なかなか手がつけられないでいました。
そんなところ、ちょうど最近仕事で C# の API を触る機会があり、さらに Paralles Desktop 上で Windows XP が快適に動くという状況なので C# プログラミングを楽しんでみることにしました。
Java エンジニアの視点で、今回はひとまず Hello World を実行するところまでやってみたいと思います。

・Visual Studio Express のインストール
Visual Stuidio Express は Microsoft が提供する無償のプログラミング環境で、商用利用もできるそうです。

まず、ダウンロードしたのは CD イメージ。
– Visual Studio 2005 Express Edition – CD イメージからのインストール方法

上記ページには CD イメージを焼かずに Windows で直接マウントする方法が書かれていますが、今回は Mac 側に iso イメージをダウンロードして Parallels Desktop で指定してマウントしました。
インストール自体は特に迷うことなく簡単にできました。

・Hello World の作成
とりあえず Hello World を作ります。GUIを持たないアプリケーションを作るには[ファイル>新しいプロジェクト>コンソール アプリケーション] を選択します。
すると、以下のようなアプリケーションの雛形が作成されました。

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
 class Program
 {
  static void Main(string[] args)
  {
  }
 }
}

Java との大きな違いは import が using に、package が namespace に、クラス名だけじゃなくメソッド名も大文字になっているといったところでしょうか。
Hello World とコンソールに表示させるのは簡単。
以下のメソッドを Main メソッドに追加するだけです。
System.Console.WriteLine(“Hello World”);
太古の昔にどこかの雑誌で読んだ記事の記憶を頼りに、特にリファレンスを見ることなく書けてしまいました。

実行ボタンを押すと・・・一瞬コマンドプロンプトが表示されたかと思うとすぐ消えてしまいますが、一応動いているようです。
あまりに一瞬なのでスクリーンショットは撮れませんでした。

Visual Studio で Hello World

とりあえず C# に触れることが出来ました。
最後に比較のため、C# と Java の同等のコードを載せます。

– C# のコード: Program.cs

namespace ConsoleApplication1
{
 class Program
 {
  static void Main(string[] args)
  {
   System.Console.WriteLine(“Hello World”);
  }
 }
}

デフォルトで宣言されていた using System; は省略してもコンパイルできました。
Java でいう java.lang.* のパッケージと同じく暗黙的に使えるようになっているようです。

– Java のコード: Program.java

package ConsoleApplication1;

 class Program
 {
  public static void main(String[] args)
  {
   System.out.println(“Hello World”);
  }
 }
}

なぜだかよく分かりませんが C# は Main メソッドは public でなくても良いようです。

次回はたぶんコマンドプロンプトからコンパイル・実行する方法を調べてみます。