Insider's Eye

Microsoft、JavaからC#へのソースコード・コンバータを発表

―― Javaプログラマを.NETに呼び寄せる「呼び水」となるか? ――

デジタルアドバンテージ
2002/02/08

「開発環境にご不満のJavaプログラマの方はこちらへどうぞ」

 米Microsoftは、Javaプログラマを.NETに振り向かせるためのカードをまた1枚きった。これはJava Language Conversion Assistant(以下JLCA)と呼ばれる開発サポート・ツールで、このJLCAを使えば、Javaで記述されたプログラムを、C#のソース・コードに変換することができる(実際にはVisual J++ 6.0のプロジェクトを、C#を使用したVisual Studio .NETのプロジェクトに変換する)。この際には、言語仕様の違いだけでなく、ライブラリ呼び出しの部分もJavaのクラス・ライブラリから.NET Frameworkに変換してくれるというから心強い。

 すでにMicrosoftは、Visual Studio .NETに対応した開発言語として、Visual J#を発表している(VJ#の詳細については別稿「Insider’s Eys:.NET版Java言語「Visual J# .NET」オーバービュー」「J#の真実:Javaプログラマに.NETの世界を開く」、「JavaからJ#へ:プログラム移植の実際」を参照)。今回のJLCAは、このVJ#に続くJavaプログラマ向けのアプローチで、これにより、同社が約1年前から進めていた「Java User Migration Path to Microsoft .NET(JUMP to .NET)」(Javaユーザーが.NETに容易に移行できるようにするための移行パス)の戦略が完成することになる。

 2002年2月5日付けでニュース・リリースが発表されると同時に、JLCAのベータ版がインターネットからダウンロード可能にされた(JLCAベータ1のダウンロード・ページ)。このJLCAは、将来的にはVS .NETに標準で組み込まれる予定だという。つまり将来は、Microsoftご自慢の開発環境の中で、JLCAを使った既存のJavaプログラムからC#への移行や、VJ#を使ったJavaプログラムからMSILへの直接のコンパイルを含め、インターネット時代の新しいプログラミングをVS .NETの中で完結できるようになるわけだ。「JLCAはJavaプログラマに対し、.NET Frameworkを通じてXML Webサービスを開発するためのさらに別の選択肢を与えることになる」と米Microsoft社 Developer Marketing and Enterprise Tools担当副社長のトム・バットン氏は語る。

 JLCAはMicrosoftが開発したものではない(VJ#はMicrosoftの開発)。JLCAを開発したのはArtinSoft社というソフト会社で、ArtinSoft社は、VB 6からVB .NETへのアップグレード・ウィザードを開発したところでもある。同社はこのとき培った.NET Frameworkのノウハウを生かし、今回のJLCAを開発したという。

 ArtinSoft社は、JLCA Enterprise Edition(JLCA EE)と呼ばれる、今回公開されたJLCAのスーパーセットとなるJava→C#コンバータの製品化を進めている(つまり、JLCAはJLCA EEのサブセットという位置付けになる。ArtinSoft社のJLCA EEのニュース・リリース)。JLCAは、基本的にJDK 1.1.4ースのVisual J++のソース・コード・コンバータであるのに対し、JLCA EEはJava 2EEの言語拡張やJava Beans、EJB(Enterprise Java Beans)、Swing、XML、RMI(Remete Method Invocation)に対応している。ArtinSoft社の説明によれば、JLCA EEを使えば、既存のJavaソース・コードの99%は自動的にC#に移行可能だとしている。「既存のJavaアプリケーションを手作業で書き直して.NETプラットフォーム対応にするより、20倍作業時間を短縮できる」とはArtinSoft社のCEO、カルロス・アラヤ(Carlos Araya)氏の弁。JLCA EEの正式版は2002年後半に発表予定で、ArtinSoft社では、これと同時期にJavaからC#へのコンバートに関するコンサルティング・サービスを開始する予定だ。

 最後になったが、試しに次のようなJavaで記述した簡単なサンプル・コードを含むVisual J++ 6.0のプロジェクトをJLCAで変換してみた。

 1: import java.io.*;
 2:
 3: public class Test  {
 4:   public static void main(String[] args) {
 5:     try {
 6:       File file = new File("Test.java");
 7:       FileReader fr = new FileReader(file);
 8:       BufferedReader br = new BufferedReader(fr);
 9:       String str = "";
10:       while ((str = br.readLine()) != null) {
11:         System.out.println(str);
12:       }
13:       fr.close();
14:     } catch(FileNotFoundException e) {
15:       System.out.println(e);
16:     } catch(IOException e) {
17:       System.out.println(e);
18:     }
19:   }
20: }
Javaで記述したサンプル・コード

 変換されたVisual Studio .NETのプロジェクトに含まれるC#のコードは次のようなものになった。

 1: using System;
 2:
 3: public class Test
 4: {
 5:   [STAThread]
 6:   public static void  Main(System.String[] args)
 7:   {
 8:     try
 9:     {
10:       System.IO.FileInfo file = new System.IO.FileInfo("Test.java");
11:       System.IO.StreamReader fr = new System.IO.StreamReader(file.FullName);
12:       System.IO.StreamReader br = new System.IO.StreamReader(fr.BaseStream);
13:       System.String str = "";
14:       while ((str = br.ReadLine()) != null)
15:       {
16:         System.Console.Out.WriteLine(str);
17:       }
18:       fr.Close();
19:     }
20:     catch (System.IO.FileNotFoundException e)
21:     {
22:       System.Console.Out.WriteLine(e);
23:     }
24:     catch (System.IO.IOException e)
25:     {
26:       System.Console.Out.WriteLine(e);
27:     }
28:   }
29: }
JLCAにより出力されたC#のコード

 若干無駄なコードが含まれているものの、正しく動作はする。サポートされていないクラスの呼び出しなどがソース・コードに含まれる場合は、コメント付きでC#のコードにコピーされるようだ。今回リリースされたバージョン(ベータ1)では、JDK 1.1.4に含まれるクラスのうち約20%をサポートしており、今後増やしていく予定とされている。

 Javaプログラマを振り向かせるための開発ツール体制はこれで整った。彼らに対し、VS .NETや.NET Frameworkは「こっちの水は甘い」とアピールできるかどうか。Javaプログラマの厳しい目によって、VS .NETや.NET Frameworkの真価が問われるときがやってきたようだ。End of Article

関連記事(Insider.NET内)
.NET版Java言語「Visual J# .NET」オーバービュー
特集
J#の真実 Part1:Javaプログラマに.NETの世界を開く
特集
J#の真実 Part2:JavaからJ#へ プログラム移植の実際
 
関連リンク
Java Language Conversion Assistantに関するニュース・リリース
JLCAベータ1のダウンロード・ページ
JLCA EEのニュース・リリース
 
 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 記事ランキング

本日 月間