Java so với C # - Phối cảnh năng suất [đóng]


34

Nếu bạn có một số năm kinh nghiệm làm việc với Java và một số năm kinh nghiệm làm việc với C # và .NET, tôi sẽ đánh giá cao ý kiến ​​của bạn về sự khác biệt về năng suất phát triển phần mềm giữa hai môi trường này. Một trong những khách hàng của chúng tôi đang xem xét thay thế giải pháp phần mềm hiện có của họ. Khi thay thế sẽ yêu cầu khoảng. 10 - 15 năm làm việc, một sự lựa chọn cho Java hoặc .NET, dựa trên sự khác biệt về năng suất giữa chúng, có thể ảnh hưởng đáng kể đến đầu tư cần thiết và thời gian tiếp thị.

Bạn có thể cung cấp cho chúng tôi, một dấu hiệu cho thấy sự khác biệt về năng suất phát triển phần mềm giữa Java và C # /. NET không? Tôi muốn nhận được một câu trả lời như sau:

Kinh nghiệm của tôi dựa trên kinh nghiệm X năm làm việc với Java và kinh nghiệm X năm làm việc với C # /. NET. Java có năng suất cao hơn X% thì C # .NET hoặc C # /. NET có năng suất cao hơn X% so với Java nếu bạn tính đến những điều sau đây.


24
Tôi đoán một điều quan trọng ở đây cũng là những gì bạn đang làm. .NET có thể tốt hơn cho một số loại dự án và Java cho các dự án khác.
Øyvind Knobloch-Bråthen

4
Đó là loại dự án gì? Rất nhiều phụ thuộc vào các thư viện có sẵn cho những gì bạn đang cố gắng làm. Ngôn ngữ khôn ngoan Tôi rất thích C #, nhưng tôi không khẳng định rằng .net tốt hơn java cho tất cả các loại dự án.
CodeInChaos

7
IMO có một quyết định chiến lược rất quan trọng và không nên dựa vào năng suất của lập trình viên. Nếu bạn muốn có một GUI Windows hiện đại hoàn hảo, bạn không thể chọn Java ngay cả khi số liệu thống kê cho rằng nó hiệu quả hơn 7%. Nếu bạn cần một sản phẩm đa dạng thực sự mà không có các hạn chế mà Mono đi kèm, Java là con của bạn, ngay cả khi C # có cú pháp đẹp hơn.
user281377

2
@Edin: "Ứng dụng doanh nghiệp" không mô tả rõ về loại ứng dụng này ... Chỉ dành cho máy tính để bàn, cấu hình máy khách / máy chủ, dịch vụ web, trang web, ứng dụng vệ tinh có thể trên thiết bị di động, v.v.?
kinh hoàng

3
Đó là "Java" chứ không phải "JAVA"
Mahmoud Hossam

Câu trả lời:


17

Kinh nghiệm của tôi dựa trên 10 năm kinh nghiệm làm việc với Java và 3 năm kinh nghiệm làm việc với C # /. NET. Java có năng suất cao hơn 0% so với C # .NET. Điều này dựa trên việc viết các ứng dụng dựa trên dịch vụ back-end.
C # /. NET có thể hiệu quả hơn 5% so với Java để viết các ứng dụng người dùng. Nhưng sau đó tôi đã không làm điều này trong gần 5 năm bằng Java và trình soạn thảo UI Netbeans mới có thể đã thu hẹp khoảng cách.

Bạn muốn tăng năng suất? CI (lý tưởng giao hàng liên tục) và kiểm tra tự động. Năng suất đạt được nhờ lựa chọn ngôn ngữ / nền tảng / IDE trên bất kỳ ngôn ngữ / nền tảng / IDE chính nào là khá nhỏ.


Ý của bạn là nói 0% cho Java? Bạn có nghĩa là 0% năng suất cao hơn cho các ứng dụng dựa trên dịch vụ back-end hoặc Java nói chung? Chỉ cần kiểm tra.
Jon Onstott

Nếu bạn yêu cầu tôi viết một ứng dụng back end (một số quy tắc, truy cập db và những gì có) thì ước tính sẽ giống hệt nhau cho cả C # và Java. Nếu bạn yêu cầu ứng dụng người dùng cuối windows, tôi sẽ ước tính Java của tôi lớn hơn một chút so với C # (WPF / XAML và MVVM hỗ trợ của nó thông qua liên kết, tôi nghĩ rằng sẽ hiệu quả hơn một chút so với xây dựng UI và ràng buộc thủ công trong Java (như tắt 5 năm trước)).
mlk

+1 cho "Năng suất đạt được do lựa chọn ngôn ngữ / nền tảng / IDE trên bất kỳ ngôn ngữ / nền tảng / IDE chính nào là khá nhỏ."
Adam Jaskiewicz

3
-1 cho câu cuối cùng. Đối với mọi lớp vấn đề (thế giới thực), bạn có thể chọn hai ngôn ngữ cấp cao có mục đích chung, trong đó mức tăng năng suất từ ​​một đến các ngôn ngữ khác vượt quá 100%. Nếu bạn chọn giữa C # và Java, bạn sẽ tìm thấy một chút khác biệt (mặc dù tôi cho rằng C # sẽ chứng minh năng suất cao hơn đáng kể trong các lĩnh vực phù hợp với lập trình chức năng). Nếu sự lựa chọn là giữa C và OCaml, sự khác biệt sẽ xuất hiện ở bạn.
back2dos

42

Tôi đã làm việc trên các dự án cả ở trường đại học và trong Thế giới thực ™ bằng cách sử dụng Java và C # trong 5 năm nay.

Tôi rất thích sử dụng C # hơn vì nó ngắn gọn và sử dụng cú pháp đường. Bạn sẽ hiếm khi tìm thấy một Factory.GetFactory(OfFactory.GetFactory(Factory));mã trong C #. Nó dễ đọc và dễ theo hơn vì cú pháp nhỏ hơn và cô đọng hơn.

Cái nào bạn sẽ làm việc hiệu quả hơn? Điều đó phụ thuộc vào loại dự án.

Bạn đang thiết kế một ứng dụng máy tính để bàn cho Windows? Thì C # là lựa chọn tốt nhất vì IDE Visual Studio mạnh mẽ và .NET Framework giúp việc tạo GUI rất đơn giản.

Thành thật mà nói, tôi rất vui vì tôi không sử dụng Java nữa (đã hơn một năm rồi) bởi vì tôi nhớ mã này phải dài đến mức nào. Một ví dụ nhanh là xử lý ngoại lệ. Nếu mã của bạn có thể đưa ra một ngoại lệ, bạn phải tính đến mọi ngoại lệ duy nhất có thể. Điều này nhanh chóng biến mã tầm thường thành 20 dòng + quái dị.

C # không phải là nắm tay, nếu bạn chọn để mã mở, điều đó sẽ do bạn là nhà phát triển quyết định.

C # cũng đã thực hiện rất nhiều bổ sung trong năm qua làm cho nó một niềm vui để sử dụng. Lambdas, đại biểu, chức năng ẩn danh (a la Ruby), rất nhiều điều tốt đẹp nhỏ bạn sẽ tìm thấy khi bạn đi cùng.


3
Tôi nhớ rằng trong Java từ uni, một điểm tôi rất vui khi quên. Xử lý ngoại lệ cưỡng bức. vâng, nó có một mục đích, nhưng tài liệu mã có thể cho bạn biết nếu các phương thức đưa ra ngoại lệ và nó cho bạn lựa chọn phải làm gì.
JonWillis

5
haha, tôi là một lập trình viên java nhưng tôi thích mã ví dụ của bạn.
Chuck Stephanski

6
If your code can throw an exception you must account for every single exception possible.Tôi không thấy nhược điểm của việc này, ít nhất điều này làm tăng nhận thức về các vấn đề ... mặc dù, có thể chỉ là tôi.
Bobby

4
Các ngoại lệ được kiểm tra có nghĩa là bạn viết mã xử lý lỗi như là một phần của việc triển khai chính, thay vào đó là bắt đầu lại như một suy nghĩ sau. Điều này có nghĩa là khá nhiều bảo trì.

Tôi nghĩ đó chỉ là sự bất đồng về ý nghĩa của các ngoại lệ - chúng có thể là trường hợp dự kiến ​​(tệp không tồn tại) hoặc lỗi không mong muốn (chia cho 0). Java đã quyết định rằng các ngoại lệ phải đại diện cho cả hai và vì vậy có cả ngoại lệ được kiểm tra và không được kiểm tra. Đây là một tính năng gây tranh cãi đáng ngạc nhiên.
Tikhon Jelvis

23

Tôi đã làm việc rộng rãi với cả Java (từ năm 1996) và .Net (từ năm 2002) và năm 2010 đã đưa ra quyết định đồng hành cùng Java trong công ty của tôi trên cơ sở rằng đó sẽ là môi trường năng suất cao nhất nói chung .

Lưu ý rằng tôi xác định năng suất phát triển phần mềm theo giá trị doanh nghiệp được tạo trên mỗi đơn vị chi phí / tài nguyên, trên cơ sở từ đầu đến cuối (nghĩa là bạn phải xem năng suất của toàn bộ vòng đời phần mềm bao gồm triển khai và bảo trì, không chỉ là mã hóa ban đầu !!).

Dưới đây là các yếu tố chính trong lý luận của tôi:

  • Cú pháp là một yếu tố nhỏ trong năng suất - trong khi Java chắc chắn dài dòng và tôi thích cú pháp của C #, đơn giản là nó không quan trọng lắm. Cho dù nhà phát triển của bạn gõ object.getSomeProperty()so với object.SomePropertyhoặc sử dụng lớp bên trong ẩn danh so với lambda đơn giản là sẽ không tạo ra bất kỳ sự khác biệt đáng kể nào cho lợi thế cạnh tranh của công ty bạn ....
  • Hệ sinh thái thư viện rất quan trọng - phát triển một sản phẩm phần mềm hiện đại, bạn không muốn phát triển nhiều thành phần phổ biến từ đầu. Hệ sinh thái Java có lợi thế rõ ràng về số lượng và chất lượng của các thư viện nguồn mở (đặc biệt là các thư viện được phát triển bởi Apache, Google, Quỹ Eclipse và RedHat / JBoss)
  • Tính linh hoạt / khả năng triển khai - Tôi biết rằng tôi có thể triển khai JVM trên hầu hết mọi nền tảng, bao gồm các cụm Linux lớn giá rẻ. Với .Net, bạn bị giới hạn trong môi trường Windows. Với những tiến bộ trong tùy chọn lưu trữ đám mây, tôi đánh giá đây là một lợi thế khá quan trọng.
  • Scala và Clojure đều là các tùy chọn khả thi để phát triển trên JVM nếu bạn muốn các tính năng ngôn ngữ nâng cao. Đây là một tùy chọn thực tế để phát triển trong Java nhưng hãy mở tùy chọn để chuyển sang Scala hoặc Clojure theo thời gian. Ở một mức độ nào đó, đây là những ngôn ngữ "thế hệ tiếp theo" mà tôi nghĩ là đi trước cả Java và C #, vì vậy điều này trấn an tôi rằng nền tảng Java có một tương lai tốt về mặt đổi mới ngôn ngữ. (Java 7 và 8 có vẻ đầy hứa hẹn, nhưng tôi không thực sự nín thở ....)
  • Chi phí bảo trì thực sự có vẻ khá thuận lợi đối với Java. Java có cú pháp đơn giản hơn C # có nghĩa là có độ chi tiết cao hơn nhưng trên flipside có nghĩa là mọi người có xu hướng viết mã dễ bảo trì hơn - đơn giản là khó viết "mã thông minh". Ngoài ra, thế giới Java đặt trọng số lớn hơn nhiều vào khả năng tương thích ngược so với thế giới .Net, đây sẽ là lợi thế về chi phí bảo trì trong nhiều năm.
  • Sự độc lập của nhà cung cấp - đã từng thấy các công ty bị đốt cháy bởi khóa nhà cung cấp trong quá khứ, tôi cảm thấy đó là một lợi thế khi đi với hệ sinh thái Java tương đối cởi mở hơn là thế giới .Net do Microsoft thống trị. Ví dụ: tôi muốn có sự lựa chọn cơ sở dữ liệu hơn là bị đẩy vào sử dụng SQL Server (và lực đẩy khá mạnh, thông qua cả hỗ trợ công cụ và kỹ năng điển hình của các nhà phát triển .Net). Giữ cho nhà cung cấp đầu tư sản phẩm cốt lõi của bạn độc lập là, theo quan điểm của tôi là một bước đi dài hạn thông minh. Tôi đã đánh giá (chính xác là nó bật ra) rằng OpenJDK sẽ là tương lai của Java vì vậy tôi sẽ xây dựng một nền tảng nguồn mở một cách hiệu quả.
  • Tài năng - tất nhiên đây là chủ quan, nhưng tôi ấn tượng với khả năng kỹ thuật của các nhà phát triển trong thế giới Java hơn là trong thế giới .Net. Ấn tượng của tôi về trung bình là các nhà phát triển .Net có xu hướng làm bất cứ điều gì Microsoft cung cấp các công cụ hoặc mẫu dễ dàng cho, trong khi các nhà phát triển Java có xu hướng quan tâm nhiều hơn đến việc tìm giải pháp phù hợp từ quan điểm kỹ thuật phần mềm. Điều này là hoàn toàn chủ quan và không nghi ngờ gì phụ thuộc vào địa phương / thị trường cụ thể và rõ ràng có nhiều cá nhân không phù hợp với mô hình này, vì vậy YMMV tất nhiên.
  • Công cụ là về mức độ. Microsoft có rất nhiều công cụ tuyệt vời, dễ sử dụng, đặc biệt hấp dẫn để phát triển trên Windows. Tuy nhiên, tôi đang làm việc chủ yếu về phát triển phía máy chủ, nơi tôi cho rằng các công cụ Java có lợi thế. Đặc biệt, Maven đã được chứng minh là một công cụ cực kỳ mạnh mẽ trong hệ sinh thái Java mà tôi vẫn không nghĩ rằng có một sự tương đương khá trong thế giới .Net.

Vì vậy, trong khi có rất nhiều cân nhắc phức tạp, nhìn chung, tôi khá hài lòng với lựa chọn đi cùng với Java và sẽ đưa ra lựa chọn tương tự ngày hôm nay (Tính đến đầu năm 2012).

Có lẽ trường hợp duy nhất bây giờ tôi đi với .Net sẽ là nếu tôi đang phát triển một ứng dụng máy tính để bàn chỉ dành cho Windows (trong đó lợi thế .Net rõ ràng là rất lớn).


9
+1: Câu trả lời tuyệt vời! Nó tóm tắt nhiều vấn đề cần được xem xét khi đánh giá năng suất nói chung. Một số đường cú pháp có thể làm cho một ngôn ngữ trông mát mẻ và "hiện đại" hơn nhưng cũng có những yếu tố quan trọng khác ảnh hưởng đến năng suất.
Giorgio

3
+1 cho cách trả lời toàn diện hơn so với câu trả lời trước.
NlightNFotis

1
Kể từ khi bạn đề cập đến Scala và Clojure, bạn cũng có thể đề cập đến F # nữa ...
Mauricio Scheffer

2
Tuyệt quá! Phân tích kỹ lưỡng. Chỉ cần những gì tôi đang tìm kiếm. :)
xebo

9

Tôi có: Java 10 năm, C # 8 năm

Tôi bỏ phiếu cho Java

  1. Không có nhà cung cấp khóa (bạn có thể thay đổi ứng dụng / máy chủ web từ linux sang windows sang Unix)
  2. Khả năng tương tác / Có thể hoán đổi cho các gói của bên thứ ba, chẳng hạn như JasperReports JFreeChart, JSF hoặc Spring
  3. Hầu hết sự đổi mới đến từ đây (Log4j, Ant, Spring, Hibernate, và trên và trên)
  4. Hoạt động trên nhiều máy chủ ứng dụng (giống như A). Chẳng hạn như JBoss, Tomcat, WebSphere, GlassFish, WebLogic

23
Những loại "đổi mới" nào có thể có trong một ngôn ngữ không có lambdas?
SK-logic

6
Có các khung MVC khác trước ASP MVC (ví dụ MonoRail) ...
EricSchaefer

2
Oh BTW: Lambdas / Closures là một tính năng ngôn ngữ, bạn đang nói về các khung công tác.
EricSchaefer

5
@ SK-logic, bạn không yêu cầu lambdas viết một lớp O / R.

2
@Giorgio, lambdas hoàn toàn phù hợp với bất kỳ ngôn ngữ nào với GC. Không có chỗ cho họ trong C ++ và C, tất nhiên.
SK-logic

6

Java: 5 năm (không liên tục)
C #: 7 năm

Tôi không tin rằng bạn có thể định lượng năng suất theo cách đó. Điều đó phụ thuộc rất nhiều vào từng nhà phát triển và dự án. Sử dụng những gì nhà phát triển của bạn biết.

Chỉnh sửa:
Hãy xác định "ứng dụng doanh nghiệp điển hình" là:

  • nhiều tầng
  • khách hàng / máy chủ
  • DB ủng hộ

Cả Java và C # đều có thể làm điều đó. Đó không phải là vấn đề của ngôn ngữ, mà là về khung / thời gian chạy. Một lần nữa, sử dụng những gì nhà phát triển của bạn biết. Họ có thể học một ngôn ngữ mới và một khuôn khổ mới, nhưng cần có thời gian để mò mẫm nó. Điều này sẽ đúng với một ứng dụng máy tính để bàn. Cả hai ngôn ngữ có thể được sử dụng với nhiều bộ công cụ / lib GUI, nhưng tất cả chúng đều có cách tiếp cận và triết lý khác nhau.


3
"Điều đó phụ thuộc nhiều vào nhà phát triển cá nhân" ... đó chính xác là lý do tại sao anh ta muốn có ý kiến ​​từ những người có kinh nghiệm ở cả hai thế giới ... "và dự án." ... Cần có câu trả lời chỉ ra loại dự án nào sẽ được hưởng lợi từ các công nghệ khác nhau.
kinh ngạc

4
Nó không phụ thuộc vào nhà phát triển này (còn gọi là tôi), mà phụ thuộc vào các nhà phát triển có nhiệm vụ xây dựng dự án. Sẽ dễ dàng hơn nếu anh ta tuyên bố loại dự án nào anh ta sẽ xây dựng ...
EricSchaefer

@eric đó là ứng dụng doanh nghiệp điển hình
Edin Dazdarevic

@Edin, Java có phiên bản JavaEE với các tính năng doanh nghiệp sẵn có. Bạn có thể nhanh chóng phát triển các ứng dụng với khung này. Tuy nhiên, nó có rất nhiều thứ bằng Magic, bạn phải tuân thủ các quy tắc của nó. Và nếu mọi thứ bị phá vỡ, đừng hy vọng các thông báo ngoại lệ sẽ hữu ích vì stacktrace là rất lớn. Truy cập DB với tên sai hoặc DB bị tắt, stacktrace lớn đến mức bạn không thể thấy nguyên nhân gây ra sự cố ban đầu.
JonWillis

5
Chắc chắn có một "ứng dụng doanh nghiệp điển hình", lấy dữ liệu này từ điểm a, cho phép người dùng làm hỏng nó, sau đó đặt nó vào điểm b. ;)
mezmo

6

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.


4

Tôi là một sinh viên mới tốt nghiệp đại học, nhưng đã có kinh nghiệm thương mại với cả hai ngôn ngữ, tổng cộng khoảng 3 năm java và 4 năm C # .Net (lưu ý .net có nghĩa là bạn có thể sử dụng C #, VB.net, C ++ CLI, và J # và F #).

Bây giờ tôi sẽ nói rằng sở thích chung của tôi là C # trên Java, trong khi cả hai đều có cú pháp tương tự tôi thích sức mạnh của khung .Net so với khả năng tương thích chéo của hệ điều hành Java. Bạn phải cân nhắc mạnh mẽ, những gì bạn cần xây dựng? Đây chỉ là một ứng dụng máy tính để bàn? Bạn có cần kết nối với các khách hàng khác, vì vậy các máy tính để bàn, điện thoại di động, trang web khác?

** Thảo luận về IDE bị mất khi câu hỏi tại Stackoverflow đã bị đóng. Kết cục cuối cùng của nó là Java có nhiều IDE miễn phí nhưng theo ý kiến ​​của tôi thì không so sánh được với sức mạnh và bổ trợ của studio hình ảnh. Nhưng lưu ý chi phí phòng thu Visual trên mỗi giấy phép.

Bạn cần xem xét những kỹ năng mà nhóm phát triển của bạn đã có, vì điều này sẽ có tác động ban đầu. Cái nào nhanh hơn ở đây và cũng không có người dùng có kinh nghiệm về ngôn ngữ / khung. Mà tôi đoán mang đến điểm mà bạn không được xem xét ngôn ngữ, vì ngôn ngữ chỉ là cú pháp, mà là các công cụ và khung mà ngôn ngữ đang sử dụng.


11
1000 bảng mỗi giấy phép cho VS? Nếu bạn nhận được đăng ký MSDN, bạn sẽ nhận được nhiều phần mềm và công cụ hơn với chi phí. Tôi thực sự nghi ngờ bất cứ ai trả giá bán lẻ của VS2010.
James Yêu

6
@Michael, tôi chưa bao giờ thử vặn các phần mở rộng VS. Tuy nhiên tôi có sử dụng hoặc đã thử nhiều plugin cho Visual studio. Chúng bao gồm Resharper, CodeRush, Gallio, VisualSVN, AnkhSVN, testDriven.Net, và nhiều hơn nữa.
JonWillis

2
@JonWillis đồng ý, có rất nhiều phần mở rộng ra khỏi đó. Ngoài danh sách đó, tôi cũng sử dụng (trên cơ sở hàng ngày) Công cụ năng suất năng suất, CKS: Dev cho SharePoint và WSPBuilder. Thư viện (tại visualstudiogallery.msdn.microsoft.com ) có một vài ngàn ở đó, vì vậy không khó để viết thêm các tiện ích mở rộng cho VS (khung đầy đủ thực sự được cung cấp để làm như vậy và có sự hỗ trợ cộng đồng rộng rãi) .
James Yêu

1
Đối với một dự án được lên kế hoạch là 10 - 15 năm làm việc, chi phí ban đầu cho giấy phép VS là đậu phộng.
kinh ngạc

1
Visual Studio 2010 Professional không có MSDN là $ 550.
Boris Yankov

3

Với sự tương đồng về cú pháp và công cụ, mức tăng năng suất từ ​​C # hoặc java không phải là một thứ tự lớn để tạo ra sự khác biệt đáng kể cho dự án làm việc 10 - 15 năm của bạn. Tôi sẽ xem xét kỹ hơn các vấn đề như:

  1. Các yêu cầu của dự án là gì và khả năng ngôn ngữ nào đáp ứng các yêu cầu đó (ví dụ: đa nền tảng so với máy khách Windows phong phú).
  2. Những gì tôi có thể đưa ra như một phương pháp / phương pháp dự án sẽ cho phép nhóm của tôi làm việc hiệu quả.
  3. Tôi có thể làm gì về môi trường làm việc để đảm bảo tôi sử dụng, giữ lại và sử dụng đầy đủ đội ngũ tốt nhất có thể cho một dự án quan trọng.

Tôi cho rằng, theo tôi, tiền đề đằng sau câu hỏi, rằng "sự khác biệt về năng suất giữa (C # và Java) có thể ảnh hưởng đáng kể đến đầu tư cần thiết và thời gian tiếp thị" là không đúng. Tôi không nghi ngờ sẽ có một số khác biệt nhưng nó sẽ không đáng kể.


3

Tôi đã lật qua lật lại giữa Java và .NET, bắt đầu với Java 1.2 lên tới 1.6 và .NET 1 lên 4.0, hơn 10 năm kinh nghiệm làm việc chuyên nghiệp (là lập trình viên C / C ++ trước đó).

Tại một thời điểm, như .NET 2.0, tôi sẽ nói rằng Java và C # sẽ giống nhau, đặc biệt là cho công việc back-end. Các cấu trúc ngôn ngữ vẫn rất giống nhau. .NET có thể đã đạt được lợi thế trong lập trình giao diện người dùng máy tính để bàn, vì nhà thiết kế WinForms trong Visual Studio và Java sẽ có lợi thế trong công cụ Web / Server, chủ yếu là do bạn không bị mắc kẹt với IIS.

Bây giờ chuyển sang .NET 3.5 và 4, tôi cung cấp cạnh năng suất cho .NET, thực tế. Theo tôi, điều này chủ yếu là vì .NET là ngôn ngữ phát triển nhanh hơn nhiều, vì MS có thể đưa ra quyết định ngôn ngữ tương đối nhanh chóng, trái ngược với việc thúc đẩy thay đổi thông qua chính trị của JCP. Những cải tiến lớn là vartừ khóa, toàn bộ Linq, Phương thức mở rộng, toán tử kết hợp Null ??,dynamic , và có lẽ rất nhiều thứ tuyệt vời mà thực sự làm tăng năng suất.

Bây giờ, điều đó nói rằng, ngôn ngữ "năng suất cao nhất" cho một dự án hầu như luôn là ngôn ngữ mà các nhà phát triển nhất cảm thấy thoải mái và có kinh nghiệm nhất. Các đường cong học tập luôn là kẻ giết người năng suất lớn nhất.


3

Một điều mà tôi nhận thấy là nhiều cửa hàng C # /. NET có thái độ "không được phát minh ở đây" và cấm tất cả các thư viện nguồn mở / bên thứ ba trong khi nhiều cửa hàng Java sẵn sàng sử dụng các thư viện nguồn mở. Ngoài ra, dường như có nhiều thư viện có sẵn cho Java. Ngay cả khi bạn xem một số thư viện bên thứ ba thú vị trong .NET, ví dụ NHibernate, NPOI, Spring.NET, v.v., chúng là các cổng của thư viện Java và do đó đứng sau chúng. Có vẻ như nhiều sự đổi mới này xuất hiện đầu tiên trên Java và sau một thời gian, một cổng .NET đã được tạo. Từ góc độ thư viện, có vẻ như Java chiến thắng về những khám phá sáng tạo mới.

Tuy nhiên, Microsoft vẫn tạo ra một số thư viện chính thức, ví dụ như ASP MVC, LINQ, v.v. Nhưng thường như với các thư viện bên thứ ba của ASP MVC như Struts, Spring MVC, v.v. đã ra mắt cho Java và Microsoft đã chậm trễ trong mô hình web của trình điều khiển xem mô hình.

Tất nhiên, nhiều thư viện trong số này tiết kiệm rất nhiều thời gian và giúp bạn làm việc hiệu quả hơn. Ngôn ngữ cốt lõi với ngôn ngữ cốt lõi C # và Java không khác nhau và đối với tôi nó quá gần để gọi. Ném vào đội quân của các thư viện bên thứ ba và quy mô chắc chắn nghiêng về phía Java. Vẫn với một cửa hàng mở rất nhiều sự cân bằng nghiêng ra. Chỉ có rất nhiều cửa hàng .NET không được phát minh ở đây trong khi rất nhiều cửa hàng Java là bất cứ điều gì cần thiết để hoàn thành công việc ... Điều này thậm chí đúng trong công ty tôi làm việc, nhóm .NET không nhận được nhiều (do quản lý) trong khi nhóm Java có nhiều thư viện / tiện ích bên thứ ba được phê duyệt. Ngoài ra với .NET, nhiều thứ tốt hơn không phải là miễn phí (ví dụ trước NPOI nếu bạn muốn làm việc với các tài liệu văn phòng của Microsoft, hầu hết các giải pháp [không tính tự động hóa văn phòng] đều không miễn phí.


"Không được phát minh ở đây". Dựa vào căn cứ nào? Tôi làm việc trong một sự pha trộn giữa C # và Java và tôi dường như lạm dụng nhiều hơn từ những người Java, ví dụ: tạo IConverter và triển khai logic để chuyển đổi một chuỗi thành gấp đôi và ngược lại.
George Silva

Tuy nhiên, vì nhiều lý do tôi thích C # hơn Java, tôi thích các thư viện Java "C di chuyển" hơn C # gốc, thông thường, được thiết kế tốt hơn, được thử nghiệm và áp dụng trong thế giới thực.
umlcat

0

Tôi đã tự hỏi mình câu hỏi này rất nhiều: cái nào tốt hơn? C # hay Java?

Tôi sẽ cho bạn một lời khuyên và lời khuyên này là kết luận cho nghiên cứu của tôi: Không ai trong số họ tốt hơn, chỉ có ngôn ngữ bạn biết rõ và bạn có thể thực hiện nhiều ứng dụng hấp dẫn là tốt nhất.

Học cách lập trình và sau đó rèn luyện bản thân rất nhiều bằng một ngôn ngữ và khi bạn trở nên hoàn hảo trong việc viết mã với nó, hãy nghĩ về các ngôn ngữ khác và tin tôi, bạn sẽ học các ngôn ngữ khác như một miếng bánh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.