デベロッパーズコーナー:Javaプログラミングを極める「Visual J#」(3)
2004年01月20日作成
Javaプログラミングを極める
第9回:Visual J# を使ってみる
(株)日本ユニテック
太田 純
<この記事はDigital Xpress 2002 Vol.15(6-7月号)に掲載されたものです>
| Microsoft 社は、.NET Framework 用のJava 言語による開発ツールとしてVisual J# をWeb 上で配布しており、Visual Studio .NET 2003 にも含められています。今回は普段とは少し趣向を変え、Visual J# について調べてみましょう。 |
<<前ページ「Visual J# のプロジェクト作成」
既存のJava ファイルを利用する
既存のJava ファイルをプロジェクトに追加するには、まず追加したいファイルをエディタウィンドウ上に開いてから、右クリックメニューを表示させると、いちばん下に「ファイル名
をプロジェクトに移動」というメニュー項目が現れます(図2)。

【図2:Java ファイルをプロジェクトに移動】
ここで追加先のプロジェクトを選択するとJava ファイルをプロジェクトに追加することができます。
既存のJava ファイルだけでプロジェクトを作る場合は、最初に「空のプロジェクト」を作成してから、前記と同じ手順でプロジェクトにファイルを追加すればよいわけです(図3)。

【図3:空のプロジェクトの作成】
では、実際にJava のコードをVisual J# に読み込ませてみましょう。
ユーザインターフェイスクラス
ユーザインターフェイスについては、AWT はサポートされますが、Swing はサポート外です。ここで、AWT
だけを利用する短いコードを書いてみました(リスト2)。
import java.awt.*;
import java.awt.event.*;
public class AwtSample {
static public void main(String[] args) {
Frame frame = new Frame("Awt Sample");
frame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
frame.setLayout(new FlowLayout(FlowLayout.LEFT));
Label label = new Label(
" 該当するものを選択してください。");
Checkbox cb1 = new Checkbox(" 綿棒が好き");
Checkbox cb2 = new Checkbox(" もう一度あなたに会いたい");
frame.add(label);
frame.add(cb1);
frame.add(cb2);
frame.setSize(220, 180);
frame.setVisible(true);
}
} |
【リスト2: AwtSample.java】
このプログラムを実行した表示結果を図4 に示します。通常通りjava コマンドによって実行した場合(図5)と比べてみてください。

【図4:Visual J# によるAwtSample 実行結果】
【図5:java コマンドによるAwtSample 実行結果】
ほぼ同じ表示を得られていることが判ります。ただし、場合によってはウィンドウおよびコントロールのサイズや位置の調整が必要となる場合もあります。
java.util パッケージのコレクションクラス
Visual J# のプロジェクトでjava.util パッケージに含まれるコレクションクラスを利用することができます。これは、JDK
1.1.4 に含まれないクラスが利用できる例外的な部分となっています。たとえば、リスト3 のプログラムはArrayList を作成し、Iterator でたどりながら、System.out.println
によってコンソールに表示します。
import java.util.*;
public class ArrayListSample {
public static void main(String[] agrs) {
ArrayList al = new ArrayList();
al.add(" 梅");
al.add(" チェリー");
al.add(" ピーチッチ");
Iterator it = al.iterator();
for(int i = 1; it.hasNext(); i++) {
System.out.println(i + ":" + (String)it.next());
}
System.out.println("end");
}
} |
【リスト3: ArrayListSample.java】
このプログラムは正しくコンパイルされて期待通りに動作し、以下のような出力が得られます。
.NET Framework アプリケーションをどう開発するか
最後に、Java プログラマが.NET Framework アプリケーションを開発しようとする場合に考慮すべき点をまとめておきましょう。
C# に移行するか
Visual J# では、C# でサポートされているいくつかの機能が利用できません。たとえば以下のものがあります。
● オペレータのオーバーロード
● 列挙型
そのほかの差異についてはVisual J# のドキュメントで確認してください。C# はJava の利点の多くを取り入れた言語であり、非常によく似た文法を使うため、Java
プログラマがC# を学習するのは比較的容易です。新しい言語を学習する時間的余裕があるならば、C# を利用するほうがより柔軟なプログラミングが可能になるでしょう。
それに加えて、Visual Studio .NET に付属している「Java Language Conversion
Assistant」を使うと、Java 言語で記述されたプログラムソースをC# のプロジェクトに変換できます。多くのJava
ソースを.NET Framework に移行する場合、同ツールを利用して変換したC# ソースを使っていくことになるでしょう。
とはいえ、.NET Framework のプログラミングを行う上で、どうしてもC# を使う必要がある場面は多くありません。開発メンバーが使いやすい言語で開発することができるでしょう。
ライブラリの移行
JDK のクラスにおいては、JDBC への対応が十分ではないため、データベースアクセスは通常.NET
Framework のクラスを利用するコードに書き換える必要があります。また、JDK のクラスによるセキュリティ関連機能がサポートされていないことも問題となります。
XML 関連機能のサポートについても問題となります。Xerces2 などの最新のXML パーサのソースをVisual
J# で使うことは容易ではありません。通常開発者が触れない部分のソースに修正を加える必要がでてくるからです。さらに、Visual
J# がサポートする範囲のライブラリを利用したXML パーサを入手して利用する方法もありますが、.NET
Framework を利用している場合はすでにメモリ上にロードされている.NET Framework のXML
サポート機能を使うほうがパフォーマンス上有利と考えられます。
JDK のクラスだけで.NET Framework 用のプログラムを記述していくのは非常に困難です。本稿で紹介したAWT
のユーザインターフェイスやコレクションクラスを利用するプログラ
ムで、実際に稼働しているものを移行する場合以外は、.NET Framework のクラスを学習して利用していくことは必須だといえるでしょう。
※1
Visual Studio .NET 2003 は、執筆時点ではMSDN 会員向けダウンロードリリースのみが開始されています。本誌がお手元に届くのと前後して店頭に並ぶことでしょう。
関連サービス
IT技術およびIT製品の可用性調査・検証業務