Tất cả người dùng của tôi đều có Windows. Một số người trong số họ sử dụng Linux hoặc Mac, nhưng nếu họ thường có khả năng sử dụng thứ gì đó như Mono, Wine, Parallels hoặc dual-boot.
Nhóm phát triển của tôi (bao gồm cả bản thân tôi) có nhiều kinh nghiệm trong việc viết các ứng dụng Swing trong Java cũng như Windows Forms trong C #. "Mở rộng" có nghĩa là chúng tôi đã phát triển và chuyển giao hơn ba ứng dụng trên cả hai thời gian chạy. Các ứng dụng này là các ứng dụng phân tích kỹ thuật, rất nhẹ về tương tác cơ sở dữ liệu, nhưng nặng về giao diện người dùng và dữ liệu tùy chỉnh.
Chúng ta sẽ đến lúc chúng ta thực sự muốn đưa ra quyết định nên tập trung vào nền tảng nào kể từ bây giờ, vì nó trở thành gánh nặng để hỗ trợ cả hai (nếu bạn làm việc trong Swing trong nửa năm thì quá nhiều rắc rối để làm quen với Windows Forms một lần nữa và ngược lại) và chúng tôi muốn mọi người trong nhóm của chúng tôi có khả năng làm việc trên tất cả các ứng dụng của chúng tôi.
- Windows Forms thường mất ít công sức hơn để làm cho các ứng dụng Windows dễ nhận biết. Không có số lượng điều khiển lột da và tùy chỉnh nào trong Java đã giải quyết điều đó trong nhiều năm qua. Đồng thời, chúng tôi chưa bao giờ có một khách hàng không thể sử dụng các ứng dụng Swing.
- Java từng có một hệ sinh thái phong phú hơn nhiều về các thư viện và các công cụ xây dựng tự động, nhưng điều đó đang thay đổi nhanh chóng (Java sẽ không đi xuống, đó là điều mà .NET đang bắt kịp).
- Đối với trường hợp hiếm hoi mà đa nền tảng được ưa thích, Java đánh bại .NET. Mono là tuyệt vời, nhưng nó vẫn hoạt động nhiều hơn Java.
Nếu chúng tôi chọn .NET, chúng tôi có thể bắt đầu tập trung vào WPF, nhưng cũng bắt đầu sử dụng F #. Nếu chúng ta chọn Java, chúng ta có thể bắt đầu tập trung vào RCP, nhưng cũng bắt đầu sử dụng Scala.
Có ai đã phải đưa ra một quyết định tương tự? Nếu vậy, nó là gì và điều gì ảnh hưởng đến bạn nhất? Bất kỳ mối quan tâm hàng đầu nào tôi đang thiếu?
(Xin lưu ý: đã có một số câu hỏi tương tự trên Lập trình viên. Đã có, nhưng chúng không có tính xây dựng hoặc từ một góc độ khác.)