Java vs. C # - Perspektywa produktywności [zamknięte]

34

Jeśli masz wieloletnie doświadczenie w pracy z Javą i wieloletnie doświadczenie w pracy z C # i .NET, byłbym wdzięczny za twoją opinię na temat różnic w wydajności tworzenia oprogramowania między tymi dwoma środowiskami. Jeden z naszych klientów rozważa wymianę istniejącego oprogramowania. Ponieważ wymiana będzie wymagać ok. 10-15 lat pracy, wybór dla Java lub .NET, oparty na różnicach wydajności między nimi, może znacząco wpłynąć na wymaganą inwestycję i czas wprowadzenia produktu na rynek.

Czy byłbyś w stanie dostarczyć nam informację o różnicach w wydajności oprogramowania między Javą a C # / .NET? Wolałbym otrzymać odpowiedź w następujący sposób:

Moje doświadczenie opiera się na X-letnim doświadczeniu w pracy z Javą i X-letnim doświadczeniu w pracy z C # / .NET. Java jest X% wydajniejsza niż C # .NET lub C # /. NET jest X% bardziej wydajna niż Java, jeśli weźmiesz pod uwagę następujące kwestie.

Edin Dazdarevic
źródło
24
Myślę, że jedną ważną rzeczą jest także to, co robicie. .NET może być lepszy dla niektórych typów projektów, a Java dla innych.
Øyvind Knobloch-Bråthen
4
Co to za projekt? Wiele zależy od bibliotek dostępnych do tego, co próbujesz zrobić. Jeśli chodzi o język, zdecydowanie wolę C #, ale nie twierdzę, że .net jest lepszy niż Java dla wszystkich rodzajów projektów.
CodesInChaos
7
IMO ma bardzo ważną strategiczną decyzję i nie powinna w ogóle opierać się na wydajności programisty. Jeśli chcesz mieć całkiem niezły, nowoczesny interfejs GUI dla systemu Windows, nie możesz wybrać Java, nawet jeśli statystyki twierdzą, że była o 7% wydajniejsza. Jeśli potrzebujesz prawdziwego wieloplatformowego produktu bez ograniczeń Mono, Java jest Twoim dzieckiem, nawet jeśli C # ma ładniejszą składnię.
user281377,
2
@Edin: „Aplikacja korporacyjna” nie opisuje zbytnio, jaki to rodzaj aplikacji ... Czy dotyczy tylko komputerów stacjonarnych, konfiguracji klient / serwer, usług internetowych, stron internetowych, możliwych aplikacji satelitarnych na urządzeniach mobilnych itp.?
awe
3
To „Java”, a nie „JAVA”
Mahmoud Hossam,

Odpowiedzi:

17

Moje doświadczenie opiera się na 10-letnim doświadczeniu w pracy z Javą i 3-letnim doświadczeniu w pracy z C # / .NET. Java jest o 0% wydajniejsza niż C # .NET. Polega to na pisaniu aplikacji opartych na usługach zaplecza.
C # /. NET jest może o 5% bardziej produktywny niż Java do pisania aplikacji użytkownika. Ale potem nie robiłem tego od prawie 5 lat w Javie, a nowy edytor interfejsu Netbeans mógł zamknąć tę lukę.

Chcesz zwiększyć wydajność? CI (najlepiej dostawa ciągła) i testy automatyczne. Wydajność uzyskana dzięki wyborowi języka / platformy / IDE na dowolnym głównym języku / platformie / IDE jest dość mała.

mlk
źródło
Czy miałeś na myśli 0% dla Javy? Czy masz na myśli 0% wyższą produktywność aplikacji opartych na usługach zaplecza lub ogólnie Java? Tylko sprawdzam.
Jon Onstott,
Jeśli poprosisz mnie o napisanie aplikacji zaplecza (niektóre reguły, dostęp do bazy danych i co masz), to oszacowanie będzie identyczne zarówno dla C #, jak i Java. Gdybyś poprosił o aplikację użytkownika końcowego dla systemu Windows, zwiększyłbym moje oszacowanie dla Java nieco więcej niż C # (WPF / XAML i jego obsługa MVVM przez wiązanie, myślę, że jest nieco bardziej produktywne niż bardziej ręczne wiązanie i budowanie interfejsu użytkownika w Javie (jako wyłączone 5 lat temu)).
mlk
+1 za „Wydajność uzyskana dzięki wyborowi języka / platformy / IDE na dowolnym głównym języku / platformie / IDE jest dość mała”.
Adam Jaskiewicz,
3
-1 dla ostatniego zdania. Dla każdej klasy problemów (rzeczywistej) możesz wybrać dwa języki wysokiego poziomu ogólnego przeznaczenia, w których wzrost wydajności z jednego do drugiego przekracza 100%. Jeśli wybierzesz między C # a Javą, nie znajdziesz różnicy (chociaż twierdzę, że C # okaże się znacznie bardziej produktywny w obszarach odpowiednich do programowania funkcjonalnego). Jeśli wybór jest pomiędzy C i OCaml, różnica spogląda na ciebie.
back2dos
42

Od 5 lat pracuję nad projektami zarówno na studiach, jak i w Real World ™, używając Java i C #.

Bez wątpienia lubię używać C # więcej ze względu na jego zwięzłość i użycie cukru składniowego. Rzadko znajdziesz Factory.GetFactory(OfFactory.GetFactory(Factory));kod w C #. Łatwiej jest go czytać i śledzić, ponieważ składnia jest mniejsza i bardziej zwięzła.

Z którym będziesz bardziej produktywny? To zależy od rodzaju projektu.

Czy projektujesz aplikację komputerową dla systemu Windows? Zatem C # jest najlepszym wyborem ze względu na potężne IDE Visual Studio, a .NET Framework sprawia, że ​​tworzenie GUI jest bardzo proste.

Szczerze mówiąc, cieszę się, że nie używam już Javy (minął już ponad rok), ponieważ pamiętam, jak okropnie gadatliwy musiał być kod. Szybki przykład to obsługa wyjątków. Jeśli Twój kod może zgłosić wyjątek, musisz uwzględnić każdy możliwy wyjątek. To szybko zmienia trywialny kod w 20-liniowy + potworność.

C # nie jest tak trzymanie ręki, jeśli zdecydujesz się pozostawić swój kod otwarty, który jako programista decydujesz.

W ciągu roku C # wprowadził wiele dodatków, które sprawiają, że korzystanie z niego jest przyjemnością. Lambdas, delegaci, anonimowa funkcja (a la Ruby), wiele dobrych drobiazgów, które znajdziesz w miarę postępów.


źródło
3
Pamiętam, że w Javie z uni, o czym chętnie zapominam. Wymuszona obsługa wyjątków. tak, to miało cel, ale dokumentacja kodu może powiedzieć, czy metody generują wyjątki i daje wybór, co należy zrobić.
JonWillis,
5
haha, jestem programistą Java, ale podobał mi się twój przykładowy kod.
Chuck Stephanski
6
If your code can throw an exception you must account for every single exception possible.Nie widzę wady tego, przynajmniej to podnosi świadomość problemów ... choć może to tylko ja.
Bobby
4
Zaznaczone wyjątki oznaczają, że piszesz kod obsługi błędów jako część głównej implementacji, zamiast go zamykać na później. Oznacza to całkiem sporo czynności konserwacyjnych.
Myślę, że to tylko spór co do tego, co oznaczają wyjątki - można się spodziewać okoliczności (plik nie istnieje) lub nieoczekiwanych błędów (podzielić przez 0). Java zdecydowała, że ​​wyjątki powinny reprezentować oba, a więc sprawdziła i odznaczyła wyjątki. Jest to zaskakująco kontrowersyjna funkcja.
Tikhon Jelvis
23

Pracowałem intensywnie zarówno z Javą (od 1996 r.), Jak i .Net (od 2002 r.), Aw 2010 r. Podjąłem decyzję o zastosowaniu Java w mojej firmie na podstawie tego, że będzie to najbardziej produktywne środowisko .

Należy pamiętać, że produktywność oprogramowania definiuję w kategoriach wartości biznesowej wytworzonej na jednostkę kosztu / zasobu, na zasadzie kompleksowej (tj. Należy przyjrzeć się wydajności całego cyklu życia oprogramowania, w tym wdrożeniu i konserwacji, a nie tylko wstępne kodowanie !!).

Oto kluczowe elementy mojego rozumowania:

  • Składnia ma niewielki wpływ na produktywność - podczas gdy Java jest z pewnością pełna i wolę składnię C #, po prostu nie ma to większego znaczenia. Niezależnie od tego, czy Twoi programiści piszą object.getSomeProperty()vs. object.SomePropertyczy używają anonimowej klasy wewnętrznej vs. lambda, po prostu nie zrobi istotnej różnicy w przewadze konkurencyjnej Twojej firmy ...
  • Ekosystem biblioteczny ma kluczowe znaczenie - opracowując nowoczesny produkt programowy, nie chcesz tworzyć wielu typowych komponentów od zera. Ekosystem Java ma wyraźną przewagę pod względem liczby i jakości bibliotek open source (szczególnie tych opracowanych przez Apache, Google, Eclipse Foundation i RedHat / JBoss)
  • Przenośność / elastyczność wdrażania - wiem, że mogę wdrożyć maszynę JVM na prawie każdej platformie, w tym dużych tanich klastrach Linux. Dzięki .Net jesteś ograniczony do środowisk Windows. Dzięki postępom w zakresie opcji hostingu w chmurze uznałem, że jest to dość ważna zaleta.
  • Scala i Clojure to realne opcje rozwoju w JVM, jeśli potrzebujesz zaawansowanych funkcji językowych. Jest to realistyczna opcja programowania w Javie, ale pozostań otwarta, aby z czasem przejść do Scali lub Clojure. W pewnym stopniu są to języki „nowej generacji”, które moim zdaniem wyprzedzają zarówno Java, jak i C #, więc uspokoiło mnie to, że platforma Java ma dobrą przyszłość pod względem innowacji językowych. (Java 7 i 8 wyglądały obiecująco, ale nie do końca wstrzymywałem oddech ...)
  • Koszty utrzymania faktycznie wydawały się być całkiem korzystne dla Javy. Java ma prostszą składnię niż C #, co oznacza większą gadatliwość, ale z drugiej strony oznacza, że ​​ludzie mają tendencję do pisania łatwiejszego do utrzymania kodu - po prostu trudniej jest napisać „sprytny kod”. Ponadto świat Java kładzie większy nacisk na kompatybilność wsteczną niż świat .Net, który będzie korzystny pod względem kosztów utrzymania przez wiele lat.
  • Niezależność od dostawców - widziałem, jak firmy płonęły w przeszłości przez blokadę dostawców. Czułem, że korzystniej jest korzystać z relatywnie bardziej otwartego ekosystemu Java niż w świecie .Net zdominowanym przez Microsoft. Na przykład wolałbym mieć wybór baz danych, zamiast być zmuszanym do korzystania z SQL Server (a wypychanie jest dość silne, zarówno dzięki obsłudze narzędzi, jak i typowemu zestawowi umiejętności programistów .Net). Moim zdaniem utrzymywanie niezależności dostawcy inwestycji w główny produkt jest moim zdaniem mądrym długoterminowym posunięciem. Oceniłem (jak się okazuje), że OpenJDK będzie przyszłością Javy, więc efektywnie będę budował na platformie open source.
  • Talent - jest to oczywiście subiektywne, ale bardziej byłem pod wrażeniem umiejętności technicznych programistów w świecie Java niż w świecie .Net. Moje wrażenie było średnio takie, że programiści .Net mieli tendencję do robienia wszystkiego, co Microsoft zapewniał dla łatwych narzędzi lub szablonów, podczas gdy programiści Java bardziej dbali o znalezienie odpowiedniego rozwiązania z perspektywy inżynierii oprogramowania. Jest to całkowicie subiektywne i bez wątpienia zależy od konkretnej lokalizacji / rynku i było wyraźnie wiele osób, które nie pasowały do ​​tego wzorca, więc YMMV oczywiście.
  • Narzędzia były na poziomie. Microsoft ma wiele świetnych, łatwych w użyciu narzędzi, które byłyby szczególnie atrakcyjne przy programowaniu w systemie Windows. Jednak pracuję przede wszystkim nad rozwojem po stronie serwera, gdzie argumentowałbym, że narzędzia Java mają przewagę. W szczególności Maven okazało się niezwykle potężnym narzędziem w ekosystemie Java, które wciąż nie wydaje mi się, by miało przyzwoity odpowiednik w świecie .Net.

Tak więc, chociaż było wiele skomplikowanych rozważań, ogólnie jestem bardzo zadowolony z wyboru Java, i dokonałbym tego samego wyboru dzisiaj (na początku 2012 r.).

Prawdopodobnie jedynym przypadkiem, w którym teraz bym poszedł z .Net, byłbym, gdybym rozwijał aplikację komputerową przeznaczoną tylko dla systemu Windows (gdzie przewaga .Net jest wyraźnie ogromna).

mikera
źródło
9
+1: Świetna odpowiedź! Podsumowuje wiele kwestii, które należy wziąć pod uwagę przy ocenie wydajności jako całości. Niektóre cukry składniowe mogą sprawić, że język będzie wyglądał fajnie i bardziej „nowocześnie”, ale są też inne ważne czynniki, które wpływają na wydajność.
Giorgio
3
+1 za znacznie bardziej kompleksową odpowiedź niż poprzednie.
NlightNFotis
1
Ponieważ wspomniałeś o Scali i Clojure, równie dobrze możesz wspomnieć o F # ...
Mauricio Scheffer,
2
Świetny! Dokładna analiza. Właśnie tego szukałem. :)
xebo
9

Mam: Java 10 lat, C # 8 lat

Głosuję na Javę

  1. Brak blokady dostawcy (możesz zmienić serwery aplikacji / sieci z Linuksa na Windowsa na Unixa)
  2. Interoperacyjność / wymienne pakiety stron trzecich, takie jak JasperReports JFreeChart, JSF lub Spring
  3. Większość innowacji pochodzi stąd (Log4j, Ant, Spring, Hibernacja i tak dalej)
  4. Działa na wielu serwerach aplikacji (coś w rodzaju A). Takich jak JBoss, Tomcat, WebSphere, GlassFish, WebLogic
poklepać
źródło
23
Jakie „innowacje” mogą być w języku bez lambdas?
SK-logic
6
Były inne frameworki MVC przed ASP MVC (np. MonoRail) ...
EricSchaefer
2
Oh BTW: Lambdas / Closures to funkcja językowa, mówisz o frameworkach.
EricSchaefer
5
@ SK-logic, nie potrzebujesz lambdas do napisania warstwy O / R.
2
@Giorgio, lambdas idealnie pasują do każdego języka dzięki GC. Oczywiście nie ma dla nich miejsca w C ++ i C.
SK-logic,
6

Java: 5 lat (nieciągłe)
C #: 7 lat

Nie sądzę, że można w ten sposób oszacować wydajność. To w dużej mierze zależy od indywidualnego dewelopera i projektu. Wykorzystaj to, co wiedzą Twoi programiści.

Edycja:
Zdefiniujmy „typową aplikację korporacyjną” jako:

  • wielopoziomowy
  • klient / serwer
  • Kopia zapasowa DB

Zarówno Java, jak i C # mogą to zrobić. To nie tyle kwestia języka, co frameworka / środowiska uruchomieniowego. Ponownie użyj tego, co wiedzą twoi programiści. Mogą nauczyć się nowego języka i nowego frameworka, ale zajmie to trochę czasu. Byłoby to prawdą w przypadku aplikacji komputerowej. Oba języki mogą być używane z wieloma zestawami narzędzi / bibliotekami GUI, ale wszystkie mają różne podejścia i filozofie.

EricSchaefer
źródło
3
„To w dużej mierze zależy od indywidualnego dewelopera”… i właśnie dlatego chciał opinii od ludzi, którzy mają doświadczenie w obu światach… ”i projektu”. ... które powinny wymagać odpowiedzi wskazującej, jakie projekty skorzystają z różnych technologii.
awe
4
Nie zależy to od tego dewelopera (aka mnie), ale od twórców, którzy mają zbudować projekt. Byłoby również łatwiej, gdyby powiedział, jaki projekt zamierza zrealizować ...
EricSchaefer
@eric to typowa aplikacja dla przedsiębiorstw
Edin Dazdarevic,
@Edin, Java ma wersję JavaEE z wbudowanymi funkcjami dla przedsiębiorstw. Za pomocą tego frameworka możesz szybko tworzyć aplikacje. Jakkolwiek robi wiele rzeczy przez Magic, musisz przestrzegać jego zasad. A jeśli coś się zepsuje, nie oczekuj, że komunikaty wyjątku będą przydatne, ponieważ stacktrace jest ogromny. Dostęp do bazy danych z niepoprawną nazwą lub bazą danych jest wyłączony, ślad stosu jest tak duży, że nie można zobaczyć, co spowodowało problem początkowy.
JonWillis,
5
Pewnie, że istnieje „typowa aplikacja dla przedsiębiorstw”, weź te dane z punktu a, pozwól użytkownikowi zepsuć je, a następnie umieść w punkcie b. ;)
mezmo,
6

Mam ponad 10 lat doświadczenia w Javie (od wersji 1.1, naprawdę!) I 7 lat doświadczenia w .NET (głównie C #).

Podejmujesz bardzo przemyślaną decyzję, ale przede wszystkim powinieneś spróbować rozbić się na kilka scenariuszy:

Aplikacja pulpitu

Jeśli tworzysz aplikację komputerową, musisz korzystać z głównej platformy, z którą będziesz pracować. Jeśli jest to platforma Microsoft .NET, nie ma lepszego rozwiązania niż platforma opracowana przez sam statek macierzysty. Jeśli jest to scenariusz dotyczący systemu Linux lub wieloplatformowego, rozważ Java lub przejście na rozwiązanie internetowe.

Aplikacja internetowa

Jest to bardzo trudna decyzja, ponieważ każda z nich ma swoją siłę i słabość. Oto kilka:

DO#

Siła: Obecnie ma większy rozmach, budując nowe funkcje w języku i platformie / frameworku. Wszystko pochodzi od jednego dostawcy i na pewno jest to zaleta. Możesz także użyć niektórych bardzo potężnych komponentów, takich jak na przykład DevExpress (Java nawet się nie zbliża, aby mieć coś takiego, jak zespół DX-a przez lata, co stanowi ogromny wzrost wydajności).

Słabość: w przypadku aplikacji korporacyjnych .NET nie jest tak dojrzały jak Java. Nie masz tylu dostawców budujących oprogramowanie dla przedsiębiorstw w .NET, jak dla Javy.

Jawa

Siła: Bardziej dojrzała (już wyjaśniona) i ma dużą społeczność z kilkoma świetnymi projektami open source, które mogą pomóc. Kilka tzw. Projektów open source .NET to tak naprawdę kopia projektów Java.

Słabość: Oracle jest właścicielem Java (wiem, nie JCP) i jest to z pewnością ryzyko, które należy wziąć pod uwagę. Ich intencje nie są bardzo jasne i osobiście nie podoba mi się, gdzie teraz zmierza język (wiem, że wielu programistów Java ma podobne obawy).

Aplikacja po stronie serwera

Zasadniczo są to te same argumenty co aplikacje internetowe, ale ponieważ nie musisz się zbytnio przejmować interfejsem użytkownika, Java w tym przypadku staje się silniejsza. Ale znowu, jeśli platformą jest głównie Windows .NET może być lepszym wyborem.

Ogólne uwagi

Ogólnie rzecz biorąc, moim zdaniem .NET ma tę przewagę głównie ze względu na ścisłą integrację Visual Studio 2010 (bez najlepszych IDE), MS SQL, Entity Framework, IIS i tak dalej. Wszystko to stanowi ogromny wzrost wydajności i mam na to mnóstwo doświadczenia. Pracuję również z programistami Java, którzy przeszli na platformę .NET i dzielą się w zasadzie tą samą opinią.

Myślę, że to dobrze, że Microsoft jest silniejszy niż kiedykolwiek, co oznacza, że ​​.NET będzie tam przez jakiś czas. Więc patrząc 10-15 lat do przodu, czuję się bezpieczniej z .NET niż Java.

Alex
źródło
4

Jestem niedawno absolwentem uniwersytetu, ale mam doświadczenie handlowe w obu językach, co daje w sumie około 3 lata java i 4 lata C # .Net (uwaga .net oznacza, że ​​możesz używać C #, VB.net, C ++ CLI, oraz J # i F #).

Powiem teraz, że ogólnie preferuję język C # w stosunku do Java, podczas gdy oba mają podobną składnię. Podoba mi się moc frameworku .Net w porównaniu z kompatybilnością Java między różnymi systemami operacyjnymi. Musisz mocno rozważyć, co musisz zbudować? Czy to tylko aplikacja komputerowa? Czy potrzebujesz łączności z innymi klientami, a więc z innymi komputerami stacjonarnymi, telefonami komórkowymi, stronami internetowymi?

** Dyskusja na temat IDE została utracona, ponieważ pytanie w Stackoverflow zostało zamknięte. Ostatecznie, Java ma wiele darmowych IDE, ale moim zdaniem nie porównują one mocy i dodatków studia wizualnego. Pamiętaj jednak, że koszt Visual Studio kosztuje ponad licencję.

Musisz sprawdzić, jakie umiejętności ma już Twój zespół programistów, ponieważ będzie to miało początkowy wpływ. To, co jest szybsze, nie jest tutaj ani tam, gdzie doświadczony użytkownik w dowolnym języku / frameworku. Wydaje mi się, że nie można brać pod uwagę języka, ponieważ jest to tylko składnia, ale narzędzia i struktura, z której korzysta język.

JonWillis
źródło
11
1000 £ za licencję na VS? Jeśli otrzymujesz subskrypcje MSDN, otrzymasz znacznie więcej oprogramowania i narzędzi dostępnych za tę opłatą. Naprawdę wątpię, czy ktokolwiek płaci detaliczną cenę półki VS2010.
James Love
6
@Michael, nigdy nie próbowałem wrtie rozszerzeń VS. Jednak używam lub wypróbowałem różne wtyczki do Visual Studio. Należą do nich Resharper, CodeRush, Gallio, VisualSVN, AnkhSVN, testDriven.Net i wiele innych.
JonWillis,
2
@JonWillis zgodził się, istnieje wiele rozszerzeń. Oprócz tej listy używam również (na co dzień) narzędzi zwiększających wydajność, CKS: Dev dla SharePoint i WSPBuilder. Galeria (na visualstudiogallery.msdn.microsoft.com ) ma tam kilka tysięcy, więc napisanie większej liczby rozszerzeń dla VS nie może być trudne (w rzeczywistości jest to możliwe dzięki pełnej platformie i istnieje duże wsparcie społeczności) .
James Love
1
W przypadku projektu planowanego na 10-15 lat pracy początkowy koszt licencji VS to orzeszki ziemne.
awe
1
Visual Studio 2010 Professional bez MSDN kosztuje 550 USD.
Borys Jankow
3

Dzięki podobieństwu w składni i narzędziach, zyski na produktywności z C # lub Java nie są rzędu wielkości, które mogłyby znacząco wpłynąć na twój projekt pracy trwający 10-15 lat. Przyjrzałbym się bliżej takim kwestiom, jak:

  1. Jakie są wymagania projektu i jakie możliwości językowe spełniają te wymagania (np. Wieloplatformowy kontra bogaty klient Windows).
  2. Co mogę zastosować jako podejście / metodologię projektową, która pozwoli mojemu zespołowi produktywnie pracować.
  3. Co mogę zrobić ze środowiskiem pracy, aby upewnić się, że zatrudniam, utrzymuję i w pełni wykorzystuję najlepszy zespół do realizacji znaczącego projektu.

Sugerowałbym, że moim zdaniem przesłanka stojąca za pytaniem, że „różnice produktywności między (C # i Java) mogą znacząco wpłynąć na wymaganą inwestycję i czas wprowadzenia produktu na rynek” nie jest prawdą. Nie wątpię, że będzie jakaś różnica, ale nie będzie ona znacząca.

AlexC
źródło
3

Przerzucałem się między Javą a .NET, poczynając od Java 1.2 do 1.6 i .NET 1 do 4.0, przez około 10 lat doświadczenia zawodowego (wcześniej programista C / C ++).

Kiedyś, podobnie jak .NET 2.0, powiedziałbym, że Java i C # byłyby mniej więcej takie same, szczególnie w przypadku back-endu. Konstrukcje językowe były nadal bardzo podobne. .NET prawdopodobnie zyskałby przewagę w programowaniu interfejsu użytkownika na pulpicie, ze względu na projektanta WinForms w Visual Studio, a Java miałaby przewagę w aplikacjach Web / Server, głównie dlatego, że nie utknąłeś z IIS.

Teraz, gdy przechodzę do .NET 3.5 i 4, daję przewagę produktywności .NET. Moim zdaniem jest to przede wszystkim spowodowane tym, że .NET jest językiem znacznie szybciej ewoluującym, ponieważ stwardnienie rozsiane może podejmować decyzje językowe stosunkowo szybko, w przeciwieństwie do wprowadzania zmian w polityce JCP. Wielkie ulepszenia są varkluczowe, całość LINQ Extension Methods, operatora Null-koalescencyjny ??, dynamici prawdopodobnie dużo bardziej wielkie rzeczy, które naprawdę zwiększa produktywność.

To powiedziawszy, „najbardziej produktywny” język dla projektu jest prawie zawsze tym, z którego najbardziej programiści są najbardziej komfortowi i doświadczeni. Krzywa uczenia się jest zawsze największym zabójcą produktywności.

rajd25rs
źródło
3

Jedną z rzeczy, które zauważyłem, jest wiele sklepów w języku C # /. NET ma postawę „nie wymyślono tutaj” i blokuje wszystkie biblioteki stron trzecich / bibliotek open source, podczas gdy wiele sklepów Java chętniej korzysta z bibliotek open source. Wydaje się również, że dostępnych jest więcej bibliotek dla Java. Nawet jeśli spojrzysz na fajne biblioteki stron trzecich w .NET, np. NHibernate, NPOI, Spring.NET itp., Są to porty bibliotek Java i dlatego są za nimi. Z pewnością wydaje się, że wiele z tych innowacji pojawiło się najpierw w Javie, a po pewnym czasie powstał port .NET. Z perspektywy biblioteki wydaje się, że Java wygrywa pod względem nowych innowacyjnych odkryć.

Mimo to Microsoft tworzy oficjalne biblioteki, np. ASP MVC, LINQ itp. Ale często tak jak w przypadku bibliotek stron trzecich ASP MVC, takich jak Struts, Spring MVC itp., Były już dostępne dla Javy, a Microsoft spóźniał się na paradygmat sieci kontrolera widoku modelu.

Oczywiście wiele z tych bibliotek oszczędza mnóstwo czasu i zwiększa produktywność. Język podstawowy na język podstawowy C # i Java nie różnią się tak bardzo i dla mnie jest zbyt blisko, aby zadzwonić. Rzuć w armię bibliotek stron trzecich, a skala z pewnością przechyla się w kierunku Javy. Wciąż przy otwartym sklepie wiele z tego przechyla się. To tylko wiele sklepów .NET nie ma tutaj wymyślonego podejścia, podczas gdy wiele sklepów Java jest wystarczających do wykonania pracy ... Jest to nawet prawdą w firmie, w której pracuję, zespół .NET nie dostaje dużo (ze względu na zarządzanie), podczas gdy zespół Java ma wiele zatwierdzonych bibliotek / narzędzi stron trzecich. Również w .NET wiele dobrych rzeczy nie jest za darmo (np. Przed NPOI, jeśli chcesz pracować z dokumentami biurowymi Microsoft, większość rozwiązań [nie licząc automatyzacji biura] nie była darmowa.

Cervo
źródło
"Nie wynaleziony tutaj". W oparciu o jakie podstawy? Pracuję w połączeniu między C # i Javą i wydaje mi się, że bardziej nadużywają mnie ludzie z Javy, np. Tworząc IConverter i implementując logikę do konwersji łańcucha na podwójne i odwrotnie.
George Silva,
Z kilku powodów wolę C # niż Java, jednak wolę „migrowane” biblioteki Java To C # niż natywne C #, zwykle lepiej zaprojektowane, przetestowane i zastosowane w świecie rzeczywistym.
umlcat
0

Często zadawałem sobie to pytanie: co jest lepsze? C # czy Java?

Dam ci radę, a ta rada jest wnioskiem z moich badań: żaden z nich nie jest lepszy, tylko język, który znasz dobrze i możesz wykonywać wiele fascynujących aplikacji jest najlepszy.

Naucz się programować, a następnie dużo trenować w jednym języku, a kiedy osiągniesz perfekcję w pisaniu kodu, pomyśl o innych językach i uwierz mi, nauczysz się innych języków jak bułka z masłem.

Salah
źródło