2009-03-24 17 views
4

私は中規模(25k行のコード、25k行のテスト)のコードベースをjavaに収めており、CLVMとJVM上で実行するように移植したいと考えています。JavaをJに移植する際の問題

ファイルシステムまたはOSを何らかの方法で処理するのは、メインクラスと少数のテストユーティリティだけです。コードの残りの部分では、ジェネリックコレクションAPI、java.util.regex、java.net(URLまたはURLConnectionではなく)、java.ioのcharsetエンコード/デコード、Unicode正規化のためのjava.text、org.w3cが広く使用されています。 XML操作のためのdom。

ほとんどのコードベースをJ#とJavaの両方でコンパイルして、残りの部分を移植することは可能ですか?

もしそうなら、どのような落とし穴が起きるでしょうか?事前に

おかげで、 マイク

答えて

7

はIKVMをチェックアウト:http://www.ikvm.net/

それはあなたがネットCLRの内側(特別コンパイル)Javaコードを実行することができます。

私の大学の教員の中には、Javaコードベースが100万+コード行で成功している人もいます。

+0

ダン、どこにもっと速い;-) –

+0

Jon Skeetが答えを投稿する前であっても、これを探していました。しかし、私のGoogleのスキルは今日はごめんなさい。 ( "compile java to clr"を検索し、 "java to .net"に変更する。私は魔法の言葉を持っていない)。 –

+0

なぜ私はこれを考えなかったのですか? *なぜ* OPがCLRで実行したいのかによって、これはちょうどチケットかもしれません。 –

4

落とし穴:

  • このような何かが私のうちの一体をおびえさせます。起こるのを待っている本当に微妙なバグの数は膨大です。
  • J#はJava 1.1.4 AFAIKしかサポートしていません - さようじジェネリックスなど
  • Visual Studio 2008はJ#をサポートしていません。

私はあなたが実際にはC#で書き直す方が簡単だと思っています。他の.NET開発者にコードを使用させたい場合、 "純粋な"コードではもっと幸せになるでしょう。 NETプロジェクトをJ#を使用するプロジェクトよりも優先します。

欠点は、今後2つの場所で変更する必要があることです。そこには確かに痛みがありますが、私は本当にあなたが "普通の" .NETを使ってより良い経験を持つと思っています。

3

Jonが指摘したとおり、J#はかなり死んでいます。

IKVMを使用して(通常の)Javaコードを.NET上で実行することは、代わりに使用できます。

関連する問題