Java vs. C # - Verimlilik perspektifi [kapalı]


34

Java ile çalışma konusunda birkaç yıllık deneyime ve C # ve .NET ile çalışma konusunda birkaç yıllık deneyime sahipseniz, bu iki ortam arasındaki yazılım geliştirme verimlilik farkları hakkındaki görüşünüze değer veririm. Müşterilerimizden biri mevcut yazılım çözümlerini değiştirmeyi düşünüyor. Değiştirme yakl. 10 - 15 adam arası çalışma, aralarındaki verimlilik farklılıklarına dayanarak Java veya .NET için bir seçimdir, gereken yatırımı ve pazara çıkış süresini önemli ölçüde etkileyebilir.

Java ile C # /. NET arasındaki yazılım geliştirme verimlilik farklılıklarının bir göstergesi olarak bize bilgi verebilir misiniz? Aşağıdaki gibi bir cevap almayı tercih ederim:

Tecrübelerim Java ile çalışan X yıllık tecrübeye ve C # /. NET ile çalışan X yıllık tecrübeye dayanıyor. Aşağıdakileri hesaba katarsanız, Java% X'ten daha üretken, C # .NET veya C # /. NET, Java'dan% X daha üretkendir.


24
Sanırım burada önemli bir şey de ne yaptığınız. .NET, bazı projeler için ve diğerleri için Java ile daha iyi olabilir.
Øyvind Knobloch-Bråthen

4
Ne tür bir proje bu? Çok şey, yapmaya çalıştığınız şey için mevcut olan kütüphanelere bağlıdır. Dil bilge C # 'yi şiddetle tercih ederim, ama her türlü proje için .net' in java 'dan daha iyi olduğunu iddia etmiyorum.
CodesInChaos

7
IMO çok önemli bir stratejik karar var ve programcı verimliliğine dayanmamalıdır. Mükemmel bir teknoloji harikası Windows GUI istiyorsanız, istatistikler% 7 daha verimli olduğunu iddia etse de Java'yı seçemezsiniz. Mono'nun getirdiği kısıtlamalar olmadan gerçek bir çapraz platform ürününe ihtiyacınız varsa, C # daha güzel sözdizimine sahip olsa bile Java bebeğinizdir.
user281377

2
@Edin: "Kurumsal uygulama" ne tür bir uygulamanın ne olduğunu çok açıklayıcı değil.
korku

3
"Java" değil "JAVA" değil
Mahmoud Hossam

Yanıtlar:


17

Benim deneyimim, Java ile çalışan 10 yıllık deneyime ve C # /. NET ile çalışan 3 yıllık tecrübeye dayanmaktadır. Java, C #. NET'ten% 0 daha üretkendir. Bu, arka uç servis tabanlı uygulamalar yazmaya dayanır.
C # /. NET, kullanıcı uygulamaları yazmak için Java'dan% 5 daha üretken olabilir. Ama o zaman Java'da neredeyse 5 yıl boyunca bunu yapmadım ve yeni Netbeans kullanıcı arayüzü editörü açığı kapatabilirdi.

Verimliliği artırmak mı istiyorsunuz? CI (ideal Sürekli Teslimat) ve otomatikleştirilmiş testler. Herhangi bir ana dilde / platformda / IDE'de dil / platform / IDE seçimiyle elde edilen verimlilik oldukça düşüktür.


Java için% 0 demek istediniz mi? Arka uç servis tabanlı uygulamalar veya genel olarak Java için% 0 daha üretken mi demek istiyorsunuz? Sadece kontrol.
Jon Onstott

Benden bir arka uç uygulaması (bazı kurallar, db erişimi ve sana sahip olanlar) yazmamı istemeniz durumunda, tahmin hem C # hem de Java için aynı olacaktır. Bir Windows son kullanıcı uygulaması için sorarsanız, Java için tahminimi C # (WPF / XAML ve MVVM desteği ile bağlamadan biraz daha büyük yapardım) sanırım Java'daki daha fazla elle bağlama ve kullanıcı arayüzü oluşturma işleminden biraz daha üretken olduğunu düşünüyorum. 5 yıl önce)).
mlk

+1 "Herhangi bir ana dilde / platformda / IDE'de dil / platform / IDE seçimiyle kazanılan verimlilik oldukça küçük."
Adam Jaskiewicz

3
Son cümle için -1. Her (gerçek dünya) problem sınıfı için, üretkenlik artışının birinden diğerine% 100'ü aştığı iki genel amaçlı yüksek seviye dil seçebilirsiniz. C # ve Java arasında seçim yaparsanız, çok az fark bulacaksınız (her ne kadar C # 'nın işlevsel programlama için uygun alanlarda daha verimli olduğunu kanıtlayacağımı iddia ediyorum). Seçim C ve OCaml arasındaysa, fark sizde belirir.
back2dos

42

5 yıl boyunca hem kolejde hem de Real World ™ de Java ve C # kullanarak projeler üzerinde çalıştım.

Eller aşağı, C #'yı özlü olması ve sözdizimi şekeri kullanımı nedeniyle daha çok seviyorum. Nadiren bulacaksınızFactory.GetFactory(OfFactory.GetFactory(Factory));C # ' kod . Okumak ve takip etmek daha kolaydır çünkü sözdizimi daha küçük ve daha özlüdür.

Hangisiyle daha üretken olacaksınız? Bu proje türüne bağlıdır.

Windows için bir masaüstü uygulaması mı tasarlıyorsunuz? Sonra C #, güçlü IDE Visual Studio'dan dolayı en iyi seçimdir ve .NET Framework, GUI oluşturmayı çok kolaylaştırır.

Açıkçası, artık Java kullanmamaya sevindim (artık bir yıldan fazla oldu) çünkü kodun ne kadar korkunç olması gerektiğini hatırlıyorum. Hızlı bir örnek istisna işlemedir. Kodunuz varsa olabilir bir istisna sen gerekir olası her bir istisna oluşturmaktadır. Bu hızlı bir şekilde önemsiz kodu 20 satır + canavarlığa dönüştürür.

C #, elde tutma kadar değildir; kodunuzu açık bırakmayı seçerseniz, karar vermeniz gereken bir geliştirici olarak size açıktır.

C # ayrıca yıl boyunca kullanımı zevkli hale getiren pek çok ekleme yaptı. Lambdalar, delegeler, anonim işlev (la Ruby), ilerledikçe bulacağınız pek çok güzel şey.


3
Uni'den Java'da unutmaktan memnuniyet duyduğum bir nokta olduğunu hatırlıyorum. Zorla istisna işleme. Evet, bir amacı vardı, ancak kod belgeleri size yöntemlerin istisnalar atıp atmayacağını size söyleyebilir ve size ne yapılması gerektiği konusunda bir seçenek sunar.
JonWillis

5
haha, ben bir java programcısıyım ama örnek kodunuzu beğendim.
Chuck Stephanski

6
If your code can throw an exception you must account for every single exception possible.Bunun dezavantajını görmüyorum, en azından bu sorunların farkındalığını artırıyor ... ama yine de ben olabilirim.
Bobby

4
İşaretli istisnalar, ana uygulamaların bir parçası olarak hata işleme kodunu yazdığınızı, bunun yerine bir sonradan cıvata attığını belirtir. Bu, çok bakımdan çok anlamına gelir.

Bunun istisnaların ne anlama geldiğiyle ilgili bir anlaşmazlık olduğunu düşünüyorum - beklenen koşullar (dosya yok) veya beklenmeyen hatalar (0'a bölün) olabilir. Java, istisnaların ikisini de temsil etmesi gerektiğine karar verdi ve bu yüzden hem istisnaları hem de kontrol edilmeyen istisnaları kontrol etti. Bu şaşırtıcı bir şekilde tartışmalı bir özelliktir.
Tikhon Jelvis

23

Hem Java (1996’dan beri) hem de .Net’te (2002’den beri) yoğun olarak çalıştım ve 2010’da şirketimde Java ile genel olarak en verimli ortam olacağına karar verdim .

Yazılım geliştirme verimliliğini, her bir maliyet / kaynak birimi için yaratılan iş değeri olarak baştan sona tanımladığımı belirtin (yani, dağıtım ve bakım dahil tüm yazılım yaşam döngüsünün verimliliğine bakmak zorundasınız). ilk kodlama !!).

İşte mantığımın temel unsurları:

  • Sözdizimi üretkenlikte küçük bir faktördür - Java kesinlikle ayrıntılı olsa ve ben C # sözdizimini tercih ediyorum, sadece önemli değil. Geliştiricilerinizin bir lambda'ya karşı anonim bir iç sınıf object.getSomeProperty()yazması object.SomePropertyveya kullanması veya kullanılması, şirketinizin rekabet avantajı için kayda değer bir fark yaratmayacaktır.
  • Kütüphane ekosistemi kritiktir - modern bir yazılım ürünü geliştirmek, sıfırdan çok sayıda ortak bileşen geliştirmek istemezsiniz. Java ekosistemi, açık kaynak kitaplıkların sayısı ve kalitesi (özellikle Apache, Google, Eclipse Vakfı ve RedHat / JBoss tarafından geliştirilenler) açısından açık bir avantaja sahiptir.
  • Taşınabilirlik / dağıtım esnekliği - JVM'yi büyük ucuz Linux kümeleri dahil hemen hemen her platformda dağıtabileceğimi biliyorum. .Net ile Windows ortamları ile sınırlandırılırsınız. Bulut barındırma seçeneklerinde kaydedilen ilerlemelerle bunu oldukça önemli bir avantaj olarak değerlendirdim.
  • Scala ve Clojure , gelişmiş dil özellikleri istiyorsanız, JVM'de geliştirme için uygun seçeneklerdir. Java'da geliştirmek için gerçekçi bir seçenek ancak zaman içinde Scala veya Clojure'a geçme seçeneğini açık tutun. Bir dereceye kadar bunlar, hem Java hem de C # 'dan önde olduğunu düşündüğüm "gelecek nesil" dillerdir, bu yüzden bu, Java platformunun dil yeniliği açısından iyi bir geleceğe sahip olduğunu söyledi. (Java 7 ve 8 umut verici görünüyordu, ama nefesimi tam olarak tutmuyordum ....)
  • Bakım maliyetleri aslında Java için oldukça uygun görünüyordu. Java, C # 'dan daha basit bir sözdizimine sahiptir, bu da daha fazla ayrıntı anlamına gelir ancak diğer tarafında insanların daha fazla bakım yapılabilir kod yazma eğiliminde olduğu anlamına gelir - "akıllı kod" yazmak daha zordur. Ek olarak, Java dünyası, birkaç yıl boyunca bakım maliyetleri açısından avantaj sağlayacak olan Net dünyasından geriye dönük uyumluluğa çok daha fazla ağırlık veriyor.
  • Satıcı bağımsızlığı - Geçmişte satıcıların kilitlendiğini gösteren şirketler gördüm, Microsoft'un hakim olduğu Net dünyadan ziyade nispeten daha açık Java ekosistemiyle devam etmenin bir avantaj olduğunu hissettim. Örneğin, SQL Server'ı kullanmaya zorlanmak yerine veritabanlarını tercih etmeyi tercih ederim (ve itme, hem .NET desteği hem de araç desteği ve tipik becerilerinden dolayı oldukça güçlüdür). Çekirdek ürün yatırım satıcınızı bağımsız tutmak, bence akıllı ve uzun vadeli bir hareket. OpenJDK'nin Java'nın geleceği olacağına (doğru şekilde çıktığı) doğru karar verdim, böylece etkin bir şekilde açık kaynaklı bir platform üzerine inşa edeceğim.
  • Yetenek - tabii ki bu öznel, ama Java dünyasındaki geliştiricilerin teknik yeteneklerinden .Net dünyasından çok daha fazla etkilendim. Ortalama olarak benim izlenimim. Net geliştiricilerin Microsoft için kolay araçlar veya şablonlar ne sağlarsa yapma eğilimindeydiler, oysa Java geliştiricileri bir yazılım mühendisliği perspektifinden doğru çözümü bulma konusunda daha fazla özen göstermeye meyilliydi. Bu tamamen özneldir ve kuşkusuz bölgeye / pazara bağlıdır ve bu modele uymayan açıkça birçok birey vardı, bu yüzden YMMV elbette.
  • Araçlar seviye ile ilgiliydi. Microsoft, Windows'ta geliştirmek için özellikle çekici olacak, kullanımı kolay birçok harika araca sahiptir. Ancak, öncelikle Java araçlarının üstünlüğü olduğunu iddia edeceğim sunucu tarafı gelişimi üzerinde çalışıyorum. Özellikle, Maven, Java ekosisteminde .Net dünyasında hala iyi bir eşdeğeri olduğunu düşünmediğim için son derece güçlü bir araç olduğunu kanıtladı.

Bu yüzden, çok karmaşık düşünceler varken, genel olarak Java ile devam etme seçiminden oldukça memnunum ve bugün aynı seçimi yapacağım (2012 başından itibaren).

Muhtemelen şimdi .Net ile gidebileceğim tek durum, yalnızca Windows'lu bir masaüstü uygulaması geliştiriyor olsaydım olurdu (.Net'in avantajı açıkça büyük).


9
+1: Harika cevap! Verimliliği bir bütün olarak değerlendirirken dikkat edilmesi gereken hususların birçoğunu özetler. Bazı sözdizimsel şeker bir dili daha serin ve daha "modern" gösterebilir, ancak verimliliği etkileyen başka önemli faktörler de vardır.
Giorgio

3
Önceki cevaplardan daha kapsamlı bir cevap için + 1'leyin.
NlightNFotis

1
Scala ve Clojure'den bahsettiğinizden bu yana F # 'dan da bahsedebilirsiniz ...
Mauricio Scheffer

2
Harika! Kapsamlı analiz. Tam da aradığım şey. :)
xebo

9

Ben var: Java 10 yıl, C # 8 yıl

İçin Java'yı oylarım

  1. Satıcı kilidi yok (uygulama / web sunucularını linux'dan windows'a Unix olarak değiştirebilirsiniz)
  2. Birlikte Çalışabilirlik / JasperReports JFreeChart, JSF veya Spring gibi üçüncü taraf paketlerinin değiştirilebilir
  3. En çok yenilik buradan geliyor (Log4j, Ant, Spring, Hibernate ve benzeri)
  4. Birden çok uygulama sunucusunda çalışır (A benzeri). JBoss, Tomcat, WebSphere, GlassFish, WebLogic gibi

23
Ne tür bir "yenilik" lambda olmadan bir dilde olabilir?
SK-mantık

6
ASP MVC'den önce başka MVC çerçeveleri vardı (örn. MonoRail) ...
EricSchaefer

2
Oh BTW: Lambdas / Kapaklar bir dil özelliğidir, siz çerçevelerden bahsediyorsunuz.
EricSchaefer

5
@ SK-mantık, bir O / R katmanı yazmak için lambda gerektirmez.

2
@Giorgio, lambdas, GC ile her dile mükemmel uyum sağlar. Tabii ki C ++ ve C de onlara yer yok.
SK-mantığı,

6

Java: 5 yıl (sürekli değil)
C #: 7 yıl

Verimliliği bu şekilde ölçebileceğinize inanmıyorum. Bu büyük ölçüde bireysel geliştiriciye ve projeye bağlı. Geliştiricilerinizin bildiklerini kullanın.

Düzenleme:
"tipik kurumsal uygulama" olarak tanımlayalım:

  • çok katmanlı
  • müşteri sunucusu
  • DB destekli

Hem Java hem de C # bunu yapabilir. Bu çok dil değil, çerçevenin / çalışma zamanının meselesi. Yine, geliştiricilerinizin bildiklerini kullanın. Yeni bir dil ve yeni bir çerçeve öğrenebilirler, ancak bunu düzeltmek zaman alır. Bir masaüstü uygulaması için doğru olurdu. Her iki dil de sayısız GUI araç takımı / kütüphanesi ile kullanılabilir, ancak hepsinin farklı yaklaşım ve felsefeleri vardır.


3
“Bu, büyük ölçüde bireysel geliştiriciye bağlıdır” ... bu yüzden her iki dünyada da tecrübesi olan kişilerden bir fikir istedi… ”ve proje.” ... farklı teknolojilerden ne tür projelere fayda sağlayacağını belirten bir cevap vermesi gereken cevap.
korku

4
Bu dev (yani ben) değil, projeyi inşa etmesi gereken dev'lere bağlı. Ne tür bir proje inşa etmek üzere olduğunu söyleseydi daha kolay olurdu ...
EricSchaefer

@eric bu tipik kurumsal uygulama
Edin Dazdarevic

@Edin, Java dahili kurumsal özelliklere sahip JavaEE sürümüne sahiptir. Bu çerçeve ile uygulamaları hızla geliştirebilirsiniz. Ancak Magic tarafından bir sürü şey yapar, kurallarına uymak zorundasın. Ve işler bozulursa istisna mesajlarının yığın sırasının çok büyük olması nedeniyle faydalı olmasını beklemeyin. Yanlış ad veya DB olan bir DB'ye erişim kapalıysa, stacktrace ilk soruna neyin neden olduğunu göremezsiniz.
JonWillis

5
"Tipik bir kurumsal uygulama" olduğundan emin olun, bu verileri a noktasından alın, kullanıcının karışmasına izin verin, sonra b noktasına yerleştirin. ;)
mezmo

6

Java konusunda 10+ yıllık deneyimim (1.1 sürümünden beri, gerçekten!) Ve .NET'te 7 yıllık deneyimim (çoğunlukla C #) var.

Vereceğiniz çok karar var ama çoğunlukla birkaç senaryoya ayırmaya çalışmalısınız:

Masaüstü uygulaması

Bir masaüstü uygulaması geliştiriyorsanız, çalışacağınız büyük platformla devam etmeniz gerekir. .NET kullanan bir Microsoft platformu ise, ana geminin kendisi tarafından geliştirilen platformdan daha iyi bir çözüm yoktur. Bir Linux veya Çok platformlu senaryo ise Java'yı veya web tabanlı bir çözüme geçmeyi düşünün.

Web Tabanlı Uygulama

Bu, alınması zor bir karar çünkü her birinin kendi gücü ve zayıflığı var. İşte birkaçı:

C #

Güç: Halen, dil ve platform / çerçevede yeni özellikler oluşturma konusunda daha fazla ivme var. Her şey bir satıcıdan geliyor ve kesinlikle bu bir avantaj. Örneğin, DevExpress gibi çok güçlü bileşenleri de kullanabilirsiniz (Java, DX ekibinin yıllar boyunca bir araya getirdiği şey gibi bir şeye yaklaşamayabilir ve bu büyük bir verimlilik artışı anlamına gelir).

Zayıflık: Kurumsal uygulama için .NET, Java kadar olgun değildir. Java'da olduğu gibi .NET'te kurumsal yazılım oluşturan pek çok satıcınız yok.

Java

Güç: Daha olgun (zaten açıklanmış) ve yardımcı olabilecek birkaç açık kaynak kodlu projeye sahip büyük bir topluma sahiptir. Açık kaynaklı projeler olarak adlandırılan bir çok .NET, Java'dan gelen projelerin bir kopyası.

Zayıflık: Oracle'ın Java'ya sahip olduğunu (JCP değil biliyorum) ve bu kesinlikle göz önünde bulundurulması gereken bir risk. Amaçları pek net değil ve ben şahsen dilin şu an nereye gittiğini sevmiyorum (Java geliştiricilerin de benzer endişeleri olduğunu biliyorum).

Sunucu Tarafı Uygulaması

Temelde, Web Tabanlı Uygulamalar ile aynı argümanlardır ancak UI Java için çok fazla endişelenmenize gerek olmadığı için bu durumda güçlenir. Ancak yine de, platform çoğunlukla Windows .NET ise daha iyi bir seçim olabilir.

Genel Hususlar

Genel olarak, benim görüşüme göre, .NET, Visual Studio 2010'un sıkı entegrasyonu (orada en iyi IDE'yi dağıtması), MS SQL, Entity Framework, IIS ve benzeri nedenlerle avantaja sahiptir. Bunların hepsi büyük bir verimlilik artışı sağlıyor ve bunu kanıtlamak için tonlarca tecrübem var. Ayrıca çoğunlukla .NET'e dönüşen Java geliştiricileri ile çalışıyorum ve temelde aynı görüşü paylaşıyorlar.

Microsoft’un her zamankinden daha güçlü olduğunu ve .NET’in bir süre orada olacağı anlamına geldiğini düşünüyorum. Dolayısıyla 10-15 yıl ileriye baktığımda .NET ile Java'dan daha güvenli hissediyorum.


4

Üniversiteden yeni mezun olmuş bir öğrenciyim, ancak her iki dilde de ticari deneyimim var, toplamda yaklaşık 3 yıl java ve 4 yıl C # veriyor. Net (not .net C #, VB.net, C ++ CLI kullanabilirsiniz ve J # ve F #).

Şimdi genel tercihimin Java üzerinden C # olduğunu belirteceğim. Her ikisi de benzer sözdizimine sahipken. Ne inşa etmeniz gerektiğini kuvvetle göz önünde bulundurmalısınız. Bu sadece bir masaüstü uygulaması mı? Diğer müşterilere, yani diğer masaüstlerine, cep telefonlarına ve web sitelerine bağlanmaya mı ihtiyacınız var?

** Stackoverflow'ta soru olarak kaybolan IDE tartışması kapatıldı. Sonunda Java'nın birçok ücretsiz IDE'si vardı ancak bence görsel stüdyonun gücü ve eklentileriyle karşılaştırmıyorlar. Ancak Visual studio'nun lisans başına ücretini not alın.

Geliştirme ekibinizin zaten hangi becerilere sahip olduğunu görmeniz gerekir, çünkü bunun başlangıçta bir etkisi olacaktır. Burada daha hızlı olan ve ne dilde, ne de çerçevede deneyimli bir kullanıcıya verilen. Tahminimce, dilin sadece sözdizimi olduğu, dilin kullandığı araç ve çerçeveler olduğu için dili düşünmemelisiniz.


11
VS için lisans başına 1000 £? MSDN abonelikleri alıyorsanız, maliyet için çok daha fazla yazılım ve araç elde edersiniz. VS2010'un perakende raf fiyatını kimsenin ödediğinden şüpheliyim.
James Love,

6
@Michael, VS eklentilerini hiçbir zaman denemedim. Ancak Visual studio için çeşitli eklentiler kullanıyorum ya da denedim. Bunlara Resharper, CodeRush, Gallio, VisualSVN, AnkhSVN, testDriven.Net ve daha birçokları dahildir.
JonWillis

2
@JonWillis kabul etti, orada bir sürü uzantı var. Bu listenin başında da (günlük olarak) Productivity Power Tools, CKS: Dev for SharePoint ve WSPBuilder kullanıyorum. Orada galeride ( visualstudiogallery.msdn.microsoft.com adresinde ) birkaç bin kişi var, bu yüzden VS için daha fazla uzantı yazmak o kadar zor olamaz. .
James Love

1
10-15 kişilik bir iş olması planlanan bir projede, VS lisanslarının ilk maliyeti yer fıstığıdır.
korku

1
MSDN'siz Visual Studio 2010 Professional 550 Dolar.
Boris Yankov

3

Sözdizimi ve araçlardaki benzerlikle, C # veya java'dan elde edilen üretkenlik, 10 - 15 yıllık çalışma projenizde önemli bir fark yaratacak büyüklükte değildir. Aşağıdaki gibi konulara daha yakından bakardım:

  1. Projenin gereklilikleri nelerdir ve hangi dil yeteneklerinin bu gereklilikleri karşıladığı (örneğin, çapraz platformdan zengin Windows istemcisi gibi).
  2. Ekibimin verimli çalışmasını sağlayacak bir proje yaklaşımı / metodolojisi olarak neler koyabilirim.
  3. Önemli bir proje için mümkün olan en iyi ekibi kullanmam, tutmam ve tam olarak kullanmamı sağlamak için çalışma ortamı hakkında ne yapabilirim.

Bence, bana göre, “arkasındaki verimlilik farklılıklarının (C # ve Java) gereken yatırımı önemli ölçüde etkileyebileceği ve pazara çıkış süresi” nin doğru olmadığı sorusunun ardındaki öncülün doğru olmadığını söyleyebilirim. Bir fark olacağından şüphem yok ama önemli olmayacak.


3

Java ile .NET arasında ileri geri döndüm, Java 1.2'den başlayarak 1.6'ya kadar ve .NET 1'den 4.0'a kadar, yaklaşık 10 yıllık profesyonel iş deneyimi (bundan önce C / C ++ programcısı olmak).

Bir zamanlar, .NET 2.0 gibi, Java ve C # 'nın özellikle arka uç çalışmaları için yaklaşık olarak aynı olacağını söyleyebilirim. Dil yapıları hala çok benzerdi. .NET, Visual Studio'daki WinForms tasarımcısı nedeniyle muhtemelen masaüstü UI programlamasında üstünlük kazanacaktı ve Java, Web’de (Sunucu / Web sayfalarında) önceliğe sahip olacaktı;

Şimdi .NET 3.5 ve 4'e geçerken, üretkenliği bir kenara bırakıyorum. Bu öncelikle, benim görüşüme göre, çünkü NET, çok daha hızlı gelişen bir dildir, çünkü MS, JCP'nin politikasında değişiklik yapmak yerine, dil kararlarını nispeten hızlı bir şekilde alabilmektedir. Büyük iyileştirmeler şunlardır varanahtar kelime, Linq, Uzatma Yöntemleri, Null-kaynaştırma operatörün tamamı ??, dynamicve muhtemelen çok daha büyük malzeme gerçekten artırır verimlilik.

Şimdi, bir projenin "en üretken" dili, hemen hemen her zaman en geliştiricilerin en rahat ve en deneyimli olduğu dildir. Öğrenme eğrisi her zaman en büyük verimlilik katilidir.


3

Fark ettim ki bir çok C # /. NET mağaza "burada icat edilmedi" tavrına sahip ve tüm üçüncü taraf / açık kaynak kitaplıklarını yasaklarken birçok Java mağazası açık kaynak kitaplıklarını kullanmaya daha istekli. Ayrıca, Java için daha fazla kütüphane mevcut gibi görünüyor. .NET'teki bazı üçüncü taraf kütüphanelere baksanız bile, örneğin NHibernate, NPOI, Spring.NET vb. Bunlar Java kütüphanelerinin portlarıdır ve dolayısıyla arkalarındadırlar. Kesinlikle bu yeniliklerin çoğu Java'ya geldi ve bir süre sonra bir .NET portu yaratıldı. Bir kütüphane perspektifinden bakıldığında, Java kesinlikle yeni keşifler açısından kazanıyor gibi görünüyor.

Yine de Microsoft bazı resmi kütüphaneler yapıyor, örneğin ASP MVC, LINQ, vb. Ama genellikle ASP MVC gibi Struts, Spring MVC vb. Üçüncü parti kütüphaneleri Java için hazırdı ve Microsoft model görünümü denetleyicisi web paradigmasına giriyordu.

Tabii ki, bu kütüphanelerin çoğu zamandan tasarruf etmenizi sağlar ve sizi daha üretken kılar. Çekirdek dilin çekirdek diline C # ve Java o kadar da farklı değildir ve benim için aramaya çok yakın. Üçüncü şahıs kütüphanelerin ordusuna attığımızda ölçek kesinlikle Java'ya yatmaktadır. Yine de açık bir mağazada, bu eğimden birçoğu dengeyi koruyor. Sadece çok sayıda .NET mağazası buradaki tavrı icat etmedi, pek çok Java mağazası bu işi halletmek için ne gerekiyorsa ... Bu çalıştığım şirket içinde bile doğru. (yönetim nedeniyle) Java ekibinde birçok onaylı üçüncü taraf kitaplık / yardımcı program vardır. Ayrıca .NET ile daha pek çok şey ücretsiz değildir (örneğin, Microsoft Office belgeleriyle çalışmak istiyorsanız NPOI'dan önce, çözümlerin çoğu [ofis otomasyonunu saymaz] ücretsiz değildi.


"Burada icat edilmedi". Hangi gerekçelere dayanarak? C # ve Java arasındaki bir karışımda çalışıyorum ve Java milletinden daha fazla suistimal görüyorum, örneğin bir IConverter oluşturmak ve bir dizgiyi ikiye dönüştürmek için mantık uygulamak ve bunun tersi.
George Silva,

Bazı nedenlerden ötürü C # 'yı Java yerine tercih ediyorum, yine de, gerçek dünyada daha iyi tasarlanmış, test edilmiş ve uygulanan yerel C # üzerinde "taşınan" Java To C # kitaplıklarını tercih ediyorum.
umlcat

0

Kendime bu soruyu çok sordum: Hangisi daha iyi? C # veya Java?

Size bir tavsiyede bulunacağım ve bu tavsiye araştırmamın sonucudur: Hiçbiri daha iyi değil, sadece iyi bildiğiniz bir dil ve çok fazla etkileyici uygulama yapabileceğiniz en iyisi.

Bir dili kullanarak kendinizi nasıl programlayacağınızı ve daha sonra çok şey yetiştireceğinizi öğrenin ve kod yazarken mükemmel olunca, diğer dilleri düşünün ve bana inanın, bir dilim kek gibi diğer dilleri öğreneceksiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.