2009-04-26 70 views
13

Xin lỗi trước cho chủ đề ngọn lửa có thể xảy ra, nhưng đó không phải là điều tôi sẽ làm.Sự khác nhau giữa Java và C# và .NET

Tôi đã từng thực hiện phát triển nghiêm túc trong Linux bằng cách sử dụng C và C++ và tôi đang tìm cách lao vào Windows. Tôi đã làm một số đọc và hỏi xung quanh, và có vẻ như với tôi rằng NET với C# là con đường để đi cho phát triển các ứng dụng kinh doanh hướng người dùng thương mại cho Windows.

Một cân nhắc lớn đối với tôi là tích hợp giao diện người dùng vào màn hình, vì đây là những gì người dùng cuối cùng tương tác với. Có thể tạo lại giao diện của Office 2007 GUI trong Java, ví dụ, hoặc là điều này chỉ có thể với .NET?

Tôi cũng lo ngại về tính di động. Trong tương lai, tôi có thể muốn chuyển ứng dụng sang Linux. Tôi biết về dự án mono, nhưng tôi tự hỏi liệu có tốt hơn không khi đi với Java.

Tóm lại, thương mại giữa Java và C# khi phát triển các ứng dụng thương mại, hướng đến người dùng chủ yếu dành cho Windows là gì?

+1

Không có ngọn lửa ở đây - đó là câu hỏi hoàn toàn hợp pháp và là lựa chọn quan trọng. –

Trả lời

16

Bit quan trọng nhất là "chủ yếu dành cho Windows".

Nếu bạn chỉ cần phải hoạt động trên Windows, C# có thể là đặt cược tốt hơn nhiều so với Java. Có một loạt các phong cách trực quan tốt hơn với Windows. Nó cũng làm cho việc tương tác với mã nguồn gốc (ví dụ: bit của thư viện Win32 API hoặc COM) dễ dàng hơn Java. Cá nhân tôi thích nó như một ngôn ngữ, nhưng đó là một vấn đề khác.

Nếu bạn cần chạy trên các nền tảng khác, tôi nghiêm túc xem xét Java. Trong khi Mono có khá nhiều động lượng, nó không có cùng mức độ tương thích với .NET như Java thực hiện trên các nền tảng khác nhau mà nó hỗ trợ.

Vì vậy, về cơ bản, cân nhắc khía cạnh "có thể muốn cổng" rất cẩn thận - đó là yếu tố thúc đẩy quyết định, theo quan điểm của tôi. Một khi bạn đã quyết định làm một cổng, nó không quan trọng nhiều nếu 90% khách hàng của bạn đang ở trên Windows - nó vẫn sẽ cần phải làm việc, và làm việc tốt, cho 10% còn lại.

+0

Mã hoạt động trong Mono OK hoạt động theo cách đó trên BẤT CỨ nền tảng. Vì vậy, tuyên bố của bạn về khả năng tương thích với nền tảng là WRONG. – Mash

+1

Khả năng tương thích là mối quan hệ hai chiều. Mã mono hoạt động trong Windows CLR chỉ bằng một nửa yêu cầu. Có rất nhiều tính năng mà Mono không hỗ trợ và vì vậy có rất nhiều mã .Net được viết trên Windows không hoạt động trên Mono. –

+0

.NET 2.0 BCL 100% được bảo vệ bởi Mono ngoại trừ một số thứ cụ thể của Microsoft Windows. Và có một công cụ rất hữu ích http://mono-project.com/MoMA để di chuyển từ .NET sang Mono. Hầu hết thời gian chỉ mất rất ít công sức để chạy các ứng dụng .NET dưới chế độ Mono. – Mash

0

Nếu ứng dụng chủ yếu dành cho Windows - hãy sử dụng .NET. Nếu bạn nghiêm túc về việc chuyển sau - tránh sử dụng các tính năng P/Invoke, .NET trên 2.0 và bộ công cụ của bên thứ ba với giao diện đồ họa phong phú (không chạy trên Mono) Có nền tảng .NET đẹp và thương mại. ứng dụng bao gồm thoải mái http://www.codicesoftware.com/xpfront.aspx plastic scm UI http://www.plasticscm.com/screenshots/gui27/visual/brexplorer04.png và nhiều người khác - http://www.mono-project.com/Companies_Using_Mono

Cũng nhiều nhà phát triển thích VS IDE trên Eclipse và C# trên Java. Nhưng nếu ứng dụng của bạn chủ yếu là Windows - tôi đặt cược nó tốt hơn để sử dụng .NET. ĐẶC BIỆT nếu tích hợp GUI là mối quan tâm chính, bởi vì làm cho các ứng dụng Java trông giống như Windows bản địa vẫn còn đau đớn. Dưới. NET có rất nhiều điều khiển cho giao diện Ribbon (inluding một bản địa). Hãy thử tìm cùng Java cho giao diện phù hợp và bạn sẽ hiểu ý tôi là gì:

Với Mono (nếu bạn giữ nguyên quy tắc chính), bạn sẽ không gặp vấn đề gì khi chuyển và nhúng Mono vào bên trong ứng dụng của bạn.

2

Vì bạn đã hết hạn với C++, bạn có thể đi với C++ cộng với Qt cho GUI. Đó là một thư viện GUI nền tảng tốt và bạn có thể biên dịch lại mã để làm việc trong Windows, Mac và Linux với giao diện nhất quán.

Chắc chắn bạn có thể tạo giao diện đẹp với nó, nhưng có lẽ không tuyệt vời như giao diện MS Office (Microsoft blend).

Bạn có thể coi đó là tùy chọn. http://www.qtsoftware.com/products/

Ví dụ http://www.qtsoftware.com/qt-in-use

+0

Bất kỳ dải băng Qt nào? – Mash

+0

Tôi không thể tìm thấy: S –

4

Trước hết, có hoặc không GUI của bạn sẽ trông tốt trên cửa sổ sẽ phụ thuộc nhiều vào kỹ năng của bạn với thiết kế giao diện hơn nó sẽ vào sự lựa chọn của bạn về ngôn ngữ hoặc công cụ này.

Biểu mẫu Windows không thực sự cung cấp cho bạn quyền truy cập đầy đủ vào chức năng GUI của Windows bằng API được ghi nhận. Bạn sẽ phải thực hiện cuộc gọi đến các hàm API gốc hoặc ít nhất là sử dụng các thông báo dành riêng cho windows để đạt được một số hiệu ứng. Ngoài ra, tôi không nghĩ rằng có một cách tích hợp để truy cập vào điều khiển ribbon kiểu Office 2007. Bạn sẽ cần một thành phần của bên thứ 3 cho điều đó.

Rất nhiều ứng dụng .Net dựa vào bộ tiện ích con của bên thứ 3 để đạt được giao diện đẹp mắt. Được cảnh báo rằng những điều này thường dựa vào P/Invoke hoặc các chức năng cụ thể của windows khác và do đó không hoạt động trên mono. Vì vậy, nếu bạn thực sự muốn có một GUI nền tảng chéo, .Net không phải là lựa chọn tốt nhất.

Bạn cũng có thể thực hiện .Net GUIs trong Windows Presentation Foundation, nhưng lại không được hỗ trợ trong đơn.

GTK # hoạt động tốt trên Unix và cửa sổ, mặc dù có vẻ hơi kém bản địa trên Windows.

Java Swing là nền tảng rất đa dạng và trông khá tốt với giao diện và cảm giác gốc của nền tảng. Bạn có thể tải xuống Netbeans để xem nó hoạt động.

SWT là bộ công cụ thay thế cho Java có khả năng tương thích nhiều nền tảng ít hơn Swing, nhưng vẫn phổ biến. Eclipse sử dụng bộ công cụ này, vì vậy hãy tải xuống bộ công cụ đó để sử dụng.

+0

+1 cho phần giới thiệu bộ công cụ GUI của bạn – DerMike

Các vấn đề liên quan