質問

オフィスの人員配置が一部変更されたため、C# の専門知識のレベルは急激に低下し、現在は Java 開発者が増えています。上層部は、C# で書かれた既存の .NET プロジェクトを Java の世界に移行することを検討するところまで来ています。

という明らかな問題とは別に、 完全にゼロから始める この会社がプロジェクトの開発を .NET C# から Java にうまく移行できる方法は何でしょうか?

役に立ちましたか?

解決

考慮すべき点は次のとおりです。

  • これは大きなプロジェクトですか?「はい」の場合は、C# を使い続けるようにしてください
  • このプロジェクトはコンポーネントを含む中規模のプロジェクトですか?「いいえ」の場合は、C# を使い続けるようにしてください
  • この小さなプロジェクトは Windows のみに展開することを目的としていますか?「はい」の場合は、C# を使い続けるようにしてください
  • これは古いソースコードですか?「はい」の場合は、C# を使い続けるようにしてください
  • Windows OS 固有の API を使用していますか?「はい」の場合は、C# を使い続けるようにしてください
  • Java に対応するサードパーティ API を使用していませんか?「はい」の場合は、C# を使い続けるようにしてください
  • .Net を「深い」部分 (データ バインディング、ユーザー コントロールなど) で使用しますか?「はい」の場合は、C# を使い続けるようにしてください
  • 移行時間は、新しい/変換された C# 担当者を取得するよりも許容可能ですか?「いいえ」の場合は、C# を使い続けるようにしてください
  • プレゼンテーションを変更する Java フレームワークを使用する場合、エンド ユーザーは変更を受け入れないと思いますか?「はい」の場合は、C# を使い続けるようにしてください
  • コマーシャルをチェックする

変換することにした場合:

  • コンポーネントごとに進む
  • レイヤーごとに進む
  • たくさんのテストを受けてください
  • 移行に役立つツールがあるかどうかを確認します (たとえ小さな支援であっても)

他のヒント

ただ、ブライアンとエリックの意見に追加し、私は、Java開発者のためのC#をピックアップすると、私の意見では簡単であるべきであると言うでしょう。彼らは、概念的に非常に似ている言語と私はあなたが移行プロセスの面倒に行くことを余儀なくされることはありませんので、いくつかのC#のスキルを得るために、あなたのJava開発者を訓練お勧めします。

私はジョエルの見解に同意します。 完全な書き直しはほとんどの場合間違いです. 。他のポスターは正しいです:C# と Java は非常に似ているため、有能な Java 開発者であれば、数週間または数か月で C# を使えるようになります。だからといって、彼らが専門家になるわけではありません。それには時間がかかりますが、プロセスをガイドできる C# 開発者がいる限り、問題ないはずです。

アプリケーションの詳細が分からない限り、このような移行が良いアイデアか悪いアイデアかについてコメントするのは困難です。サイズ、アプリケーションの種類、業界など。

私の謙虚な意見では、私はそのような切り替えには非常に消極的です。 C# は Java よりもはるかに現代的な言語になりました 私は 10 年以上 (1.0.2/1.1 の時代から) Java 開発者としてこれを言います。

Javaが悪いと言っているわけではありません。そうではありません。Sun には確かに雲が立ちこめており、近年プラットフォームを推進することに消極的または無力であることが示されています。

にかかわらず、関与の言語の、この会社の経営陣は、非常識に聞こえます。簡単なアプリケーション以外の場合は、どのようにちょうど右の言語でいくつかのスキルを持つ一人を雇うのではなく、最初からコードベース全体を書き換えるために、経済的に賢明なことができますか?これは、そのよく知られた問題で、ビジネスです:?!あまりにも多くの予備の現金

どのくらいの既存のコードが開発されてきましたか?それがやっと始まっいた場合、私はこれを理解することができました。それはリリースを見て、アクティブなユーザーがいるなら、それはのそれを捨てても意味がありません。あなたは適切なスキルを持つスタートアップにC#のコードを寄贈した場合、どのくらいの頭のは、彼らはあなたを持っているだろうと考え始める。

は、Javaに.NETプロジェクトの変換が完了する前に、変換プロジェクトの一部であったすべてのそれらのJava開発者は、C#を学んだだろう。だから、あなたはもう今では、JavaとC#の両方を行うことができます開発チームを持っているので、(とあなたが離れ変換で生産されたすべてのJavaコードを投げることができる)は、Javaに変換する必要はありません。問題が解決しました。 :D

すでに単離またはそれのいずれかがサービス指向アーキテクチャを使用しているすべてのコンポーネントがある場合は、

、あなたはおそらく(個々の構成要素はリライトある)一度に一つの成分を移行でき、まだ部品がお互いに話を持っています同じ相互運用可能なネットワークプロトコルを使用して。おそらく、私たちが話しているアプリの種類によって異なります。

あなたは少なくともそれを期待するところ、そのような移行はあなたを噛ましますので、あなたは、のテストののトンを持っていることを確認します。

あなたが生産の多くの.NETまたはそれ以上のJavaアプリケーションを持っています。あなたはすでにネットサーバーやアプリケーションにかなりの投資をしている場合、なぜ.NETに移動するには、Java開発者の間でボランティアを依頼しませんか?言語と構文は非常に似ているので、ハードの部分は、フレームワークを学ぶこととなり、彼らもフレームワークを学ぶUIの開発を行っているすべての自分の時間を費やすだろうしない限りではありません、ハードます。

私たちのオフィスでは、必要に応じてJavaと.NETの間で前後に移動し、非常に良い開発者の数を持っています。

経営に証明するために、あなたは常にROIと数字の面で話をする必要があります。あなたはこれらのアプリケーションを移動した場合、それは膨大な時間、QAリソースがかかりますし、それはいくつかの他のプロジェクトや新規開発取って重要性に起因する非優先してしまった場合、容易に後部座席を取ることができることを見せています。

私は彼らに関与タイムライン、ROI、関係の仕事、お金などを示したとき、私は成功していた。

だから今、私は、Java開発者は、彼らは、Microsoftのtechnolgiesに対するいくつかの基本的な精神的なブロックを持っていない限り、C#のをサポートすることができるだろうと思います、実際のポイントに来ています。

からコードを変換する際に支援するためにpuports Net2Java のを見て、持っていますJavaへのC#。私はそれが完璧になるだろう疑うが、その一つの方法は、外鉄に互換性のないフレームワークの呼び出しや言語機能のねじれであなたを残して、タスクから重労働の多くを削除します。

あなたはそれをやった後は、

、あなたのタスクは、他の大規模な移行プロジェクトのようなものです - 再度テスト、テストおよびテスト。ユニットテスト、システム統合テスト、そしてエンドユーザーテスト。あなたは離れてユニットテストから、彼らはまだ、関連するだろう、あなたは元のアプリケーションで使用する代わりに、すでにこれらのテストをhavewする必要があります。

それがこれを行うことを決めている場合は、

、あなたはそれが緩やかな移行の滝変換からシナリオを変更しますと、あなたは基本的に、同じアプリケーションでC#やJavaを混在させることができるハイブリッドなアプローチから、最も可能性が高い利益を得るであろう。ここで私は二つの可能性を知ってます:

あなたが実行できるように、

1)のiKVM( http://www.ikvm.net/する) .NETランタイムでJavaコード。これは、JavaコードはC#のコードとその逆を呼び出すことができます。そして、あなたがC#のコードの開発を凍結することができ、かつ機能的なアプリケーションを維持しながら、ゆっくりとJavaの部分に改訂された機能を追加します。

2)Mainsoft( http://dev.mainsoft.com/Default.aspxあなたはJavaバイトコードに.NET-バイトコードをコンパイルすることができます?tabid = 130 を)。彼らは、無料のエントリー版を持っています。私は、製品との経験がないが、彼らは唯一のJavaが利用できる持っている当社のプラットフォームに大きく宣伝しています。

私は Java の専門家ではありませんが、C# ファンでありながら Java コードを扱った経験から、考えられる頭痛の種として次のようなものがあります。

  • ジェネリックスは、Java と C# では異なる方法で実装されます。
  • ボックス化/ボックス化解除の動作は Java と C# で異なります
  • Java クラスの命名規則 + 多数の C# 生成コード
  • 文字列の処理 (つまり、Unicode/ASCII の問題) は、移植される Java/C# コードの品質によっては問題が発生する可能性があります。

個人的には、ゼロから書くことは決して悪い考えではないと思います。すでに動作するアーキテクチャがあるので。

私は誰もがさえ移行を拒否する考えを示唆したやや驚いています。

私は彼が(まあ、彼は多分銃で脅されていますしている場合)に言われたので、C#の開発者は、Java(またはその逆)に切り替えることを強制することができます信じていません。私は、少なくとも一つの技術スタックを習得するために多くの時間、運動や情熱を取ります。あなただけの新しい技術を用いて一晩開始し、同じ品質を提供することを期待することはできません。

私は個人的に移行を開始するように言われるまで気にしないだろう。その時点で私は、私は、.NET男だマネージャを伝えたいと、彼らはすることを決めたからといって、他の技術に切り替わりません。

技術的な側面としては、それは違いではなく、ライブラリとその機能言語構文ではありません。もちろん、.NET 3.5の場合、すべての最新の添えものは、言語の違いが本当の挑戦を提供します使用で広くなっている。

それはちょうどJavaへ.NETからアプリケーションを移行することを決定し、確かに面白い方法です。誰かが関係する手間のないアイデアを持っていない...

scroll top