Tôi có hơn 10 năm kinh nghiệm với Java (kể từ phiên bản 1.1, thực sự!) Và 7 năm kinh nghiệm với .NET (chủ yếu là C #).
Bạn có một quyết định rất khó khăn để đưa ra nhưng chủ yếu là bạn nên cố gắng chia thành một vài tình huống:
Ứng dụng máy tính để bàn
Nếu bạn đang phát triển một ứng dụng máy tính để bàn, bạn phải đi với nền tảng chính mà bạn sẽ làm việc. Nếu đó là một nền tảng của Microsoft sử dụng .NET, không có giải pháp nào tốt hơn nền tảng được phát triển bởi chính tàu mẹ. Nếu đó là kịch bản Linux hoặc Đa nền tảng, hãy xem xét Java hoặc chuyển sang một giải pháp dựa trên web.
Ứng dụng dựa trên web
Đây là một quyết định rất khó khăn để đưa ra bởi vì mỗi người có điểm mạnh và điểm yếu riêng. Đây là một vài:
C #
Sức mạnh: Hiện tại có nhiều động lực hơn để xây dựng các tính năng mới vào ngôn ngữ và nền tảng / khung. Tất cả mọi thứ đến từ một nhà cung cấp và chắc chắn đây là một lợi thế. Ví dụ, bạn cũng có thể sử dụng một số thành phần rất mạnh như DevExpress (Java thậm chí không tiến gần đến mức có gì đó giống như những gì nhóm DX đã kết hợp trong nhiều năm qua và điều này thể hiện sự tăng năng suất rất lớn).
Điểm yếu: Đối với ứng dụng doanh nghiệp .NET không trưởng thành như Java. Bạn không có nhiều nhà cung cấp xây dựng phần mềm doanh nghiệp bằng .NET như bạn có cho Java.
Java
Sức mạnh: Trưởng thành hơn (đã được giải thích) và có một cộng đồng lớn với một số dự án nguồn mở tuyệt vời có thể giúp đỡ. Một số .NET được gọi là các dự án nguồn mở thực sự chỉ là một bản sao của các dự án từ Java.
Điểm yếu: Oracle sở hữu Java (tôi biết, không phải JCP) và đó chắc chắn là một rủi ro cần được xem xét. Ý định của họ không rõ ràng lắm và cá nhân tôi không thích ngôn ngữ đang diễn ra ngay bây giờ (tôi biết rất nhiều nhà phát triển Java có mối quan tâm tương tự).
Ứng dụng phía máy chủ
Về cơ bản, đó là các đối số tương tự như các Ứng dụng dựa trên web nhưng vì bạn không phải lo lắng quá nhiều về việc UI Java trở nên mạnh mẽ hơn trong trường hợp này. Nhưng một lần nữa, nếu nền tảng chủ yếu là Windows .NET có thể là một lựa chọn tốt hơn.
Cân nhắc tổng thể
Nhìn chung, theo tôi, .NET có lợi thế chủ yếu là do sự tích hợp chặt chẽ của Visual Studio 2010 (đưa ra IDE tốt nhất hiện có), MS SQL, Entity Framework, IIS, v.v. Tất cả điều này đại diện cho một sự tăng năng suất rất lớn và tôi có rất nhiều kinh nghiệm chứng minh điều đó. Ngoài ra, tôi làm việc với hầu hết các nhà phát triển Java đã chuyển sang .NET và về cơ bản họ có cùng quan điểm.
Tôi nghĩ đó cũng là một điểm tốt khi Microsoft mạnh hơn bao giờ hết có nghĩa là .NET sẽ ở đó trong một thời gian. Vì vậy, khi nhìn về phía trước 10 - 15 năm tôi cảm thấy an toàn hơn với .NET so với Java.