パフォーマンス -偶数
両方のプラットフォームは、ほぼすべてのアプリケーションで非常に優れたパフォーマンスを発揮します。
私の主観的な経験では、Javaは長時間実行されるアプリケーションに対してわずかな優位性を持っているのに対し、.Netはアプリケーションの起動時間を短縮します。
利用可能なツール(サードパーティのツールも含む) -議論の余地あり
必要なツールと使い慣れているものに依存します。
.Netには、Microsoftが提供する優れたツールがいくつかあります。一方、Javaの世界には、EclipseやIntelliJ環境のNetbeansなど、同等の優れたツールがあります。
クロスプラットフォームの互換性 -Java win
.Netは、基本的にMicrosoftプラットフォーム(Windows、Xboxなど)に関連付けられています。完全な実装は、Microsoft以外のプラットフォームでは利用できません。
Monoは素晴らしいですが、すべての.Netライブラリをサポートしていないため、実際には完全なクロスプラットフォーム機能を提供しません(たとえば、すべてのWindows GUIが正しく動作することは期待できません。 GTK#などのクロスプラットフォームツールキットでは、異なるプラットフォームでアプリを実行できません)
Javaは完全に移植可能です。言語だけでなく、はるかに重要なことは、すべてのJavaライブラリが移植可能であることです。純粋なJavaライブラリ(たとえば、Swing for GUI)に固執すると、Javaランタイム環境があればどこでもコードが実行されます。
ライブラリ(特にサードパーティのライブラリ) -Java win
おそらくJavaプラットフォームの最大の強みは、ライブラリ、特にオープンソースライブラリの広大なエコシステムです。いくつかの例:
- すべてのApacheライブラリとツール
- 広大なEclipseエコシステムのすべてのライブラリ
- Googleが寄稿/保守しているすべてのライブラリ
- JBossおよびRed Hatが管理するすべての関連エンタープライズツール
コスト(オラクルはJavaを収益化しようとしているようです) -オープンソースにすればJavaが勝ち、そうでなければ偶数になります。
100%オープンソースのJavaスタックを使用できます。これは無料であり、特定の専用プラットフォームに縛られることはありません。これは100%無料です。
または、IntelliJ IDEAを購入し、WindowsでJavaを実行し、独自のデータベースを使用することもできます。この場合、通常のMicrosoft .NETスタックとほぼ同じコストです。
開発プロセス(最も簡単/最も速い) -議論の余地あり
これはおそらく、プラットフォームの特定の属性ではなく、各プラットフォームでの開発者の経験に依存します。
.Netには確かに、Windows上のシンプルなGUIアプリの生産性を高めることができる優れたツールがいくつかあります。これは.Net開発の「スイートスポット」であるため、驚くことではありません。
その一方で、サーバー側の開発にはJavaスタックを好みます。Mavenなどのツールとすべての継続的な展開/統合機能を使用すると、堅牢なサーバー側アプリの非常に効果的な開発プロセスを確立できます。
言語に関するC#には、Javaよりも生産性の面でいくつかの利点があります。しかし一方で、現在Javaプラットフォームで開発している場合は、Java自体を使用するのではなく、Scala、Groovy、Clojureなどの新しいJVM言語の1つを使用する傾向があります。 C#またはJavaよりも。