質問
Java で中規模 (コード 25,000 行、テスト 25,000 行) のコードベースを持っており、それを JVM だけでなく CLR 上でも実行できるように移植したいと考えています。
何らかの方法でファイル システムまたは OS を扱うのは、メイン クラスといくつかのテスト ユーティリティのみです。コードの残りの部分では、汎用コレクション API、java.util.regex、java.net (ただし、URL または URLConnection は使用しない)、文字セットのエンコード/デコード用の java.io、Unicode 正規化用の java.text、および org.w3c を広範囲に使用します。 XML操作用のdom。
コードベースの大部分を J# と Java の両方でコンパイルして取得し、残りを移植することは可能ですか?
もしそうなら、どのような落とし穴に遭遇する可能性がありますか?
よろしくお願いします、マイク
解決
IKVMをチェックアウト: http://www.ikvm.net/する
それはあなたがネットCLRの内側(特別コンパイル)Javaコードを実行することができます。
私のcolleagesのいくつかは、コードの100万+行のJavaのコードベースで正常にそれを使用している。
他のヒント
落とし穴:
- このようなことはすべて私を怖がらせます。本当に微妙なバグが膨大な数で発生を待っています。
- J# は、私の知る限り Java 1.1.4 のみをサポートしています - ジェネリクスなどはさようなら。
- Visual Studio 2008 は J# をサポートしていません。基本的に、これは無効なプロジェクトです。
実際には、C# で書き直すほうが簡単だと思われるでしょう (まだ C# を知らない場合は、C# を学習することも含めて、それは楽しいことです)。関連する場合は、この方法でも、より慣用的に .NET に似たライブラリが作成されます。別の .NET 開発者にコードを使用してもらいたい場合、彼らは J# を使用するプロジェクトよりも「純粋な」 .NET プロジェクトのほうがはるかに満足する可能性があります。
欠点は、今後は変更を 2 か所で行う必要があることです。確かに苦痛はありますが、「通常の」 .NET を使用したほうがより良いエクスペリエンスが得られると思います。
Jonが指摘したように:J#はかなり死んでいる。
。しかし」、 IKVM のかもしれない代替手段を使用して、.NET上の(通常の)Javaコードを実行します。