私はJavaで10年以上の経験があり(バージョン1.1以降)、. NETで7年の経験があります(主にC#)。
非常に決定を下しますが、ほとんどの場合、いくつかのシナリオに分解する必要があります。
デスクトップアプリケーション
デスクトップアプリケーションを開発している場合は、使用する主要なプラットフォームを使用する必要があります。.NETを使用するMicrosoftプラットフォームの場合、母船自体が開発したプラットフォームほど優れたソリューションはありません。Linuxまたはマルチプラットフォームのシナリオの場合は、JavaまたはWebベースのソリューションへの移行を検討してください。
Webベースのアプリケーション
それぞれが独自の長所と短所を持っているため、これは非常に難しい決定です。ここにいくつかあります:
C#
強さ:現在、言語とプラットフォーム/フレームワークに新しい機能を組み込む勢いがあります。すべてが1つのベンダーから提供されており、これは間違いなく利点です。たとえば、DevExpressなどの非常に強力なコンポーネントを使用することもできます(Javaは、DXチームが長年にわたって構築してきたものに近づくことさえできず、これは生産性を大幅に向上させます)。
弱点:エンタープライズアプリケーションの場合、.NETはJavaほど成熟していません。Javaのように.NETでエンタープライズソフトウェアを構築しているベンダーはそれほど多くありません。
Java
強み:より成熟し(既に説明済み)、役立つことができるいくつかの素晴らしいオープンソースプロジェクトがある大きなコミュニティを持っています。いわゆるオープンソースプロジェクトと呼ばれるいくつかの.NETは、実際にはJavaのプロジェクトの単なるコピー猫です。
弱点: OracleはJava(JCPではなく知っている)を所有しており、それは間違いなく考慮すべきリスクです。彼らの意図はあまり明確ではなく、私は個人的に言語が今どこに向かっているのが好きではありません(多くのJava開発者が同様の懸念を持っていることを知っています)。
サーバー側のアプリケーション
基本的にはWebベースのアプリケーションと同じ引数ですが、この場合UI UIが強くなることをあまり心配する必要がないためです。ただし、プラットフォームの大部分がWindows .NETである場合は、より良い選択かもしれません。
全体的な考慮事項
全体として、私の意見では、.NETには、Visual Studio 2010(最高のIDEを継承)、MS SQL、Entity Framework、IISなどが緊密に統合されているため、主に利点があります。これはすべて、生産性の大幅な向上を意味し、私はそれを証明する豊富な経験を持っています。また、ほとんどが.NETに移行したJava開発者と仕事をしており、基本的に同じ意見を共有しています。
また、Microsoftがこれまで以上に強力であることも良い点だと思います。したがって、10〜15年先を見ると、Javaよりも.NETの方が安全だと感じています。