Java vs C # - Perspektif produktivitas [ditutup]

34

Jika Anda memiliki beberapa tahun pengalaman dalam bekerja dengan Java dan beberapa tahun pengalaman dalam bekerja dengan C # dan .NET, saya akan menghargai pendapat Anda tentang perbedaan produktivitas pengembangan perangkat lunak antara kedua lingkungan ini. Salah satu pelanggan kami sedang mempertimbangkan untuk mengganti solusi perangkat lunak yang ada. Karena penggantian akan membutuhkan sekitar. Pekerjaan 10 - 15 tahun, pilihan untuk Java atau .NET, berdasarkan perbedaan produktivitas di antara mereka, dapat secara signifikan memengaruhi investasi yang diperlukan dan waktu ke pasar.

Apakah Anda dapat memberi kami, indikasi perbedaan produktivitas pengembangan perangkat lunak antara Java dan C # /. NET? Saya lebih suka menerima jawaban sebagai berikut:

Pengalaman saya didasarkan pada pengalaman X tahun bekerja dengan Java dan pengalaman X tahun bekerja dengan C # /. NET. Java adalah X% lebih produktif daripada C # .NET atau C # /. NET adalah X% lebih produktif daripada Java jika Anda mempertimbangkan hal-hal berikut.

Edin Dazdarevic
sumber
24
Saya kira satu hal penting di sini juga adalah apa yang Anda hasilkan. .NET mungkin lebih baik untuk beberapa jenis proyek, dan Java untuk yang lain.
Øyvind Knobloch-Bråthen
4
Proyek macam apa itu? Banyak tergantung pada perpustakaan yang tersedia untuk apa yang Anda coba lakukan. Dari segi bahasa, saya lebih suka C #, tetapi saya tidak mengklaim bahwa .net lebih baik daripada java untuk semua jenis proyek.
CodesInChaos
7
IMO ada keputusan strategis yang sangat penting dan tidak boleh didasarkan pada produktivitas programmer sama sekali. Jika Anda menginginkan Windows GUI yang sangat bagus, Anda tidak dapat memilih Java bahkan jika statistik menyatakan itu 7% lebih produktif. Jika Anda membutuhkan produk cross-plattform sejati tanpa batasan yang diberikan Mono, Java adalah bayi Anda, bahkan jika C # memiliki sintaks yang lebih bagus.
user281377
2
@ Ed: "Aplikasi perusahaan" tidak terlalu deskriptif tentang jenis aplikasi apa itu ... Apakah hanya Desktop, konfigurasi klien / server, layanan web, situs web, kemungkinan aplikasi satelit pada perangkat seluler, dll.?
awe
3
Ini "Jawa" bukan "JAVA"
Mahmoud Hossam

Jawaban:

17

Pengalaman saya didasarkan pada 10 tahun pengalaman bekerja dengan Java dan 3 tahun pengalaman bekerja dengan C # /. NET. Java adalah 0% lebih produktif daripada C # .NET. Ini didasarkan pada penulisan aplikasi berbasis layanan back-end.
C # /. NET mungkin 5% lebih produktif daripada Java untuk menulis aplikasi pengguna. Tapi kemudian saya tidak melakukan ini selama hampir 5 tahun di Jawa dan editor Netbeans UI yang baru bisa menutup kesenjangan.

Anda ingin meningkatkan produktivitas? CI (Pengiriman Kontinyu idealnya) dan tes otomatis. Produktivitas yang diperoleh oleh pilihan bahasa / platform / IDE pada semua bahasa / platform / IDE utama cukup kecil.

mlk
sumber
Apakah Anda bermaksud mengatakan 0% untuk Java? Apakah maksud Anda 0% lebih produktif untuk aplikasi berbasis layanan back-end, atau Java secara keseluruhan? Hanya mengecek.
Jon Onstott
Jika Anda meminta saya untuk menulis aplikasi back end (beberapa aturan, akses db, dan apa yang Anda miliki) maka perkiraannya akan sama untuk C # dan Java. Jika Anda meminta aplikasi pengguna windows end saya akan membuat perkiraan saya sedikit lebih besar untuk Java daripada C # (WPF / XAML dan dukungannya MVVM melalui binding Saya pikir sedikit lebih produktif daripada binding manual dan bangunan UI di Java (seperti off 5 tahun lalu)).
mlk
+1 untuk "Produktivitas yang diperoleh oleh pilihan bahasa / platform / IDE pada semua bahasa / platform / IDE utama cukup kecil."
Adam Jaskiewicz
3
-1 untuk kalimat terakhir. Untuk setiap kelas masalah (dunia nyata), Anda dapat memilih dua bahasa tingkat tinggi tujuan umum, di mana peningkatan produktivitas dari satu ke yang lain melampaui 100%. Jika Anda memilih antara C # dan Java, Anda akan menemukan sedikit perbedaan (walaupun saya berpendapat bahwa C # akan terbukti lebih produktif di area yang cocok untuk pemrograman fungsional). Jika pilihannya antara C dan OCaml, perbedaannya ada pada Anda.
back2dos
42

Saya telah mengerjakan proyek baik di perguruan tinggi maupun di Dunia Nyata menggunakan Java dan C # selama 5 tahun sekarang.

Hands down Saya menikmati menggunakan C # lebih karena itu ringkas dan penggunaan gula sintaks. Anda jarang akan menemukan Factory.GetFactory(OfFactory.GetFactory(Factory));kode dalam C #. Lebih mudah untuk membaca dan mengikuti karena sintaksinya lebih kecil dan lebih ringkas.

Dengan yang mana Anda akan lebih produktif? Itu tergantung pada jenis proyek.

Apakah Anda merancang aplikasi desktop untuk Windows? Maka C # adalah pilihan terbaik karena IDE Visual Studio yang kuat dan .NET Framework membuat pembuatan GUI sangat sederhana.

Terus terang, saya senang saya tidak menggunakan Java lagi (sudah lebih dari setahun sekarang) karena saya ingat betapa mengerikannya kode itu. Contoh cepat adalah penanganan pengecualian. Jika kode Anda dapat melempar pengecualian, Anda harus memperhitungkan setiap pengecualian yang dimungkinkan. Ini dengan cepat mengubah kode sepele menjadi 20 baris + monstrositas.

C # bukan sebagai pegangan tangan, jika Anda memilih untuk membiarkan kode Anda terbuka itu adalah keputusan Anda sebagai pengembang.

C # juga telah membuat banyak penambahan sepanjang tahun yang membuatnya menyenangkan untuk digunakan. Lambdas, delegasi, fungsi anonim (ala Ruby), banyak hal-hal kecil yang baik yang akan Anda temukan saat Anda melanjutkan.


sumber
3
Saya ingat bahwa di Jawa dari uni, suatu titik saya senang lupa. Penanganan pengecualian secara paksa. ya itu punya tujuan, tetapi dokumentasi kode dapat memberi tahu Anda jika metode melempar pengecualian dan memberi Anda pilihan apa yang harus dilakukan.
JonWillis
5
haha, saya seorang programmer java tetapi saya menyukai kode contoh Anda.
Chuck Stephanski
6
If your code can throw an exception you must account for every single exception possible.Saya tidak melihat sisi buruknya, setidaknya ini meningkatkan kesadaran akan masalah ... mungkin saja saya.
Bobby
4
Pengecualian yang dicentang berarti Anda menulis kode penanganan kesalahan sebagai bagian dari implementasi utama, alih-alih sebagai baut setelahnya. Ini berarti cukup banyak pemeliharaan.
Saya pikir itu hanya ketidaksepakatan tentang apa artinya pengecualian - mereka bisa keadaan yang diharapkan (file tidak ada) atau kesalahan tak terduga (dibagi dengan 0). Java memutuskan bahwa pengecualian harus mewakili keduanya dan juga mengecek dan menghapus pengecualian. Ini adalah fitur yang sangat kontroversial.
Tikhon Jelvis
23

Saya telah bekerja secara luas dengan Java (sejak 1996) dan .Net (sejak 2002) dan pada 2010 membuat keputusan untuk pergi dengan Java di perusahaan saya dengan dasar bahwa itu akan menjadi lingkungan yang paling produktif secara keseluruhan .

Perhatikan bahwa saya mendefinisikan produktivitas pengembangan perangkat lunak dalam hal nilai bisnis yang dibuat per unit biaya / sumber daya, secara end-to-end (yaitu Anda harus melihat produktivitas seluruh siklus hidup perangkat lunak termasuk penyebaran dan pemeliharaan, bukan hanya pengkodean awal !!).

Berikut adalah elemen kunci dari alasan saya:

  • Sintaks adalah faktor kecil dalam produktivitas - sementara Java jelas verbose dan saya lebih suka sintaks C #, itu tidak terlalu penting. Apakah pengembang Anda mengetik object.getSomeProperty()vs object.SomePropertyatau menggunakan kelas dalam anonim vs lambda sama sekali tidak akan membuat perbedaan yang berarti untuk keunggulan kompetitif perusahaan Anda ....
  • Ekosistem perpustakaan sangat penting - mengembangkan produk perangkat lunak modern, Anda tidak ingin mengembangkan banyak komponen umum dari awal. Ekosistem Jawa memiliki keuntungan yang jelas dalam hal jumlah dan kualitas perpustakaan sumber terbuka (terutama yang dikembangkan oleh Apache, Google, Eclipse Foundation dan RedHat / JBoss)
  • Portabilitas / penyebaran penyebaran - Saya tahu saya bisa menggunakan JVM di hampir semua platform, termasuk cluster Linux murah yang besar. Dengan .Net, Anda dibatasi untuk lingkungan Windows. Dengan kemajuan dalam opsi cloud hosting, saya menilai ini menjadi keuntungan yang cukup penting.
  • Scala dan Clojure keduanya merupakan opsi yang layak untuk pengembangan pada JVM jika Anda menginginkan fitur bahasa tingkat lanjut. Ini adalah pilihan realistis untuk dikembangkan di Jawa tetapi tetap buka opsi untuk pindah ke Scala atau Clojure seiring waktu. Untuk beberapa hal, ini adalah bahasa "generasi berikutnya" yang saya pikir unggul dari Java dan C #, jadi ini meyakinkan saya bahwa platform Java memiliki masa depan yang baik dalam hal inovasi bahasa. (Java 7 dan 8 terlihat menjanjikan, tapi aku tidak benar-benar menahan napas ....)
  • Biaya pemeliharaan sebenarnya tampak cukup menguntungkan bagi Jawa. Java memiliki sintaksis yang lebih sederhana daripada C # yang berarti lebih banyak verbositas tetapi pada flipside berarti bahwa orang cenderung menulis kode yang lebih dapat dipelihara - lebih sulit untuk menulis "kode pintar". Selain itu, dunia Java memberikan bobot yang lebih besar pada kompatibilitas ke belakang daripada dunia .Net, yang akan menjadi keuntungan dalam hal biaya pemeliharaan selama beberapa tahun.
  • Kemandirian vendor - setelah melihat perusahaan dibakar oleh vendor lock-in di masa lalu, saya merasa merupakan keuntungan untuk pergi dengan ekosistem Jawa yang relatif lebih terbuka daripada dunia .Net yang didominasi Microsoft. Sebagai contoh, saya lebih suka memiliki pilihan database daripada didorong untuk menggunakan SQL Server (dan dorongannya cukup kuat, baik melalui dukungan alat dan keahlian khusus pengembang .Net). Menjaga agar vendor investasi produk inti Anda tetap independen, menurut saya merupakan langkah jangka panjang yang cerdas. Saya menilai (dengan benar ternyata) bahwa OpenJDK akan menjadi masa depan Jawa, jadi saya akan secara efektif membangun platform open source.
  • Bakat - ini subjektif tentu saja, tapi saya lebih terkesan dengan kemampuan teknis pengembang di dunia Java daripada di dunia .Net. Kesan saya rata-rata adalah bahwa pengembang Net memiliki kecenderungan untuk melakukan apa pun yang disediakan Microsoft untuk alat atau templat yang mudah, sedangkan pengembang Java cenderung lebih peduli untuk menemukan solusi yang tepat dari perspektif rekayasa perangkat lunak. Ini benar-benar subyektif dan tidak diragukan lagi tergantung pada lokalitas tertentu / pasar dan ada banyak individu yang tidak sesuai dengan pola ini, jadi YMMV tentu saja.
  • Alat itu tentang level. Microsoft memiliki banyak alat yang hebat dan mudah digunakan yang akan sangat menarik untuk dikembangkan di Windows. Namun saya bekerja terutama pada pengembangan sisi server, di mana saya berpendapat alat Java memiliki keunggulan. Secara khusus, Maven telah terbukti menjadi alat yang sangat kuat di ekosistem Java yang saya pikir masih belum memiliki padanan yang setara di dunia .Net.

Jadi, sementara ada banyak pertimbangan kompleks, secara keseluruhan saya cukup senang dengan pilihan untuk pergi dengan Jawa, dan akan membuat pilihan yang sama hari ini (Pada awal 2012).

Mungkin satu-satunya kasus sekarang di mana saya akan pergi dengan Net akan jika saya sedang mengembangkan aplikasi desktop Windows-only (di mana keuntungan. Net jelas besar).

mikera
sumber
9
+1: Jawaban yang bagus! Ini merangkum banyak masalah yang harus dipertimbangkan ketika mengevaluasi produktivitas secara keseluruhan. Beberapa gula sintaksis dapat membuat bahasa terlihat keren dan lebih "modern" tetapi ada juga faktor penting lainnya yang memengaruhi produktivitas.
Giorgio
3
+1 untuk jawaban yang jauh lebih komprehensif daripada yang sebelumnya.
NlightNFotis
1
Karena Anda menyebutkan Scala dan Clojure Anda mungkin juga menyebutkan F # juga ...
Mauricio Scheffer
2
Besar! Analisis menyeluruh. Apa yang saya cari. :)
xebo
9

Saya punya: Java 10 tahun, C # 8 tahun

Saya memilih Java

  1. Tidak ada kunci Vendor (Anda dapat mengubah server aplikasi / web dari linux ke windows ke Unix)
  2. Interoperabilitas / Dapat dipertukarkan dari paket pihak ketiga, seperti JasperReports JFreeChart, JSF atau Spring
  3. Sebagian besar inovasi berasal dari sini (Log4j, Ant, Spring, Hibernate, dan seterusnya)
  4. Bekerja pada beberapa server aplikasi (seperti A). Seperti JBoss, Tomcat, WebSphere, GlassFish, WebLogic
menepuk
sumber
23
"Inovasi" macam apa yang dapat dilakukan dalam bahasa tanpa lambda?
SK-logic
6
Ada kerangka kerja MVC lainnya sebelum ASP MVC (mis. MonoRail) ...
EricSchaefer
2
Oh BTW: Lambdas / Penutup adalah fitur bahasa, Anda berbicara tentang kerangka kerja.
EricSchaefer
5
@ SK-logika, Anda tidak perlu lambdas untuk menulis layer O / R.
2
@ Giorgio, lambdas sangat cocok dengan bahasa apa pun dengan GC. Tidak ada tempat untuk mereka di C ++ dan C, tentu saja.
SK-logic
6

Jawa: 5 tahun (tidak berkelanjutan)
C #: 7 tahun

Saya tidak percaya Anda bisa mengukur produktivitas dengan cara itu. Itu sangat tergantung pada pengembang individu dan proyek. Gunakan apa yang diketahui pengembang Anda.

Sunting:
Mari kita definisikan "aplikasi perusahaan tipikal" sebagai:

  • multi-tier
  • server klien
  • DB didukung

Baik Java dan C # dapat melakukannya. Ini bukan masalah bahasa, tapi kerangka / runtime. Sekali lagi, gunakan apa yang diketahui pengembang Anda. Mereka dapat belajar bahasa baru dan kerangka kerja baru, tetapi butuh waktu untuk mengetahuinya. Itu akan berlaku untuk aplikasi desktop. Kedua bahasa dapat digunakan dengan banyak toolkit / lib GUI, tetapi mereka semua memiliki pendekatan dan filosofi yang berbeda.

EricSchaefer
sumber
3
"Itu sangat tergantung pada pengembang individu" ... itulah sebabnya dia menginginkan pendapat dari orang-orang yang memiliki pengalaman di kedua dunia ... "dan proyeknya." ... yang seharusnya memerlukan jawaban yang menunjukkan proyek seperti apa yang akan mendapat manfaat dari berbagai teknologi.
awe
4
Itu tidak tergantung pada dev ini (alias saya), tetapi pada devs yang seharusnya membangun proyek. Ini juga akan lebih mudah jika dia menyatakan proyek apa yang akan dia bangun ...
EricSchaefer
@ eric ini adalah aplikasi perusahaan yang khas
Edin Dazdarevic
@ Ed, Java memang memiliki edisi JavaEE dengan fitur perusahaan bawaan. Anda dapat dengan cepat mengembangkan aplikasi dengan kerangka kerja ini. Namun itu banyak hal oleh Magic, Anda harus mematuhi aturannya. Dan jika ada yang rusak jangan berharap pesan pengecualian bermanfaat karena stacktrace sangat besar. Mengakses DB dengan nama yang salah atau DB tidak aktif, stacktrace sangat besar sehingga Anda tidak dapat melihat apa yang menyebabkan masalah awal.
JonWillis
5
Tentu ada "aplikasi perusahaan biasa", ambil data ini dari titik a, izinkan pengguna untuk mengacaukannya, lalu letakkan di titik b. ;)
mezmo
6

Saya memiliki 10+ tahun pengalaman dengan Java (sejak versi 1.1, sungguh!) Dan 7 tahun pengalaman dengan .NET (kebanyakan C #).

Anda memiliki keputusan yang harus diambil, tetapi sebagian besar Anda harus mencoba memecah menjadi beberapa skenario:

Aplikasi Desktop

Jika Anda sedang mengembangkan aplikasi desktop, Anda harus menggunakan platform utama yang akan Anda gunakan. Jika menggunakan platform Microsoft .NET, tidak ada solusi yang lebih baik daripada platform yang dikembangkan oleh kapal induk itu sendiri. Jika itu adalah skenario Linux atau Multi-platform, pertimbangkan Java atau pindah ke solusi berbasis web.

Aplikasi Berbasis Web

Ini adalah keputusan yang sangat sulit untuk dibuat karena masing-masing memiliki kekuatan dan kelemahan mereka sendiri. Berikut beberapa di antaranya:

C #

Kekuatan: Saat ini memiliki lebih banyak momentum dalam membangun fitur-fitur baru ke dalam bahasa dan platform / kerangka kerja. Semuanya berasal dari satu vendor dan tentunya ini merupakan keuntungan. Anda juga dapat menggunakan beberapa komponen yang sangat kuat seperti DevExpress misalnya (Java bahkan tidak mendekati untuk memiliki sesuatu seperti apa yang telah disatukan oleh tim DX selama bertahun-tahun dan ini merupakan peningkatan produktivitas yang sangat besar).

Kelemahan: Untuk aplikasi enterprise .NET tidak setua Java. Anda tidak memiliki banyak vendor yang membangun perangkat lunak perusahaan di .NET seperti yang Anda miliki untuk Java.

Jawa

Kekuatan: Lebih dewasa (sudah dijelaskan) dan memiliki komunitas besar dengan beberapa proyek open source hebat yang dapat membantu. Beberapa .NET yang disebut proyek sumber terbuka benar-benar hanyalah salinan dari proyek-proyek dari Jawa.

Kelemahan: Oracle memiliki Java (saya tahu, bukan JCP) dan itu jelas risiko yang harus dipertimbangkan. Niat mereka tidak terlalu jelas dan saya pribadi tidak suka ke mana bahasa ini sekarang (saya tahu banyak pengembang Java memiliki masalah serupa).

Aplikasi Sisi Server

Ini pada dasarnya argumen yang sama dengan Aplikasi Berbasis Web tetapi karena Anda tidak perlu terlalu khawatir tentang UI Java semakin kuat dalam hal ini. Tetapi sekali lagi, jika platform sebagian besar Windows. NET mungkin menjadi pilihan yang lebih baik.

Pertimbangan Keseluruhan

Secara keseluruhan, menurut pendapat saya, .NET memiliki keunggulan terutama karena integrasi yang ketat dari Visual Studio 2010 (menyerahkan IDE terbaik di luar sana), MS SQL, Entity Framework, IIS dan sebagainya. Ini semua mewakili peningkatan produktivitas yang sangat besar dan saya punya banyak pengalaman membuktikannya. Saya juga bekerja dengan sebagian besar pengembang Java yang beralih ke .NET dan pada dasarnya mereka berbagi pendapat yang sama.

Saya pikir itu juga poin yang baik bahwa Microsoft lebih kuat dari sebelumnya. NET akan ada di sana untuk sementara waktu. Jadi ketika melihat 10-15 tahun ke depan saya merasa lebih aman dengan .NET daripada Java.

Alex
sumber
4

Saya baru saja lulus dari universitas, tetapi telah memiliki pengalaman komersial dengan kedua bahasa, memberikan total sekitar 3 tahun java dan 4 tahun C #. Net (note .net berarti Anda dapat menggunakan C #, VB.net, C ++ CLI, dan J # dan F #).

Saya akan menyatakan sekarang preferensi saya secara keseluruhan adalah C # di atas Java, sementara keduanya memiliki sintaksis yang sama, saya suka kekuatan kerangka .Net di atas kompatibilitas lintas OS Java. Anda harus sangat mempertimbangkan, apa yang perlu Anda bangun? Apakah ini hanya aplikasi desktop? Apakah Anda memerlukan konektivitas ke klien lain, begitu juga desktop, ponsel, situs web lain?

** Diskusi tentang IDE hilang saat pertanyaan di Stackoverflow ditutup. Inti dari itu adalah Jawa memiliki banyak IDE gratis tetapi mereka tidak membandingkan menurut pendapat saya dengan kekuatan dan tambahan dari studio visual. Tetapi perhatikan biaya Visual studio lebih dari per lisensi.

Anda perlu melihat keterampilan apa yang sudah dimiliki tim pengembangan Anda, karena ini akan berdampak awal. Yang lebih cepat ada di sini atau di sana, diberikan pengguna berpengalaman dalam bahasa / kerangka kerja. Yang saya kira membawa poin bahwa Anda tidak harus mempertimbangkan bahasa, karena bahasanya hanya sintaks, tetapi alat dan kerangka kerja yang menggunakan bahasa.

JonWillis
sumber
11
£ 1000 per lisensi untuk VS? Jika Anda mendapatkan langganan MSDN, Anda mendapatkan lebih banyak perangkat lunak dan alat yang tersedia untuk biayanya. Saya benar-benar ragu ada yang membayar harga rak ritel VS2010.
James Love
6
@Michael, saya belum pernah mencoba untuk menggunakan ekstensi VS. Namun saya menggunakan atau telah mencoba berbagai plugin untuk Visual studio. Ini termasuk Resharper, CodeRush, Gallio, VisualSVN, AnkhSVN, testDriven.Net, dan banyak lagi.
JonWillis
2
@JonWillis setuju, ada banyak ekstensi di luar sana. Di atas daftar itu, saya juga menggunakan (setiap hari) Alat Daya Produktivitas, CKS: Dev untuk SharePoint dan WSPBuilder. Galeri (di visualstudiogallery.msdn.microsoft.com ) memiliki beberapa ribu di sana, sehingga tidak sulit untuk menulis lebih banyak ekstensi untuk VS (kerangka penuh sebenarnya disediakan untuk melakukannya, dan ada banyak dukungan masyarakat) .
James Love
1
Untuk proyek yang direncanakan 10-15 tahun kerja, biaya awal untuk lisensi VS adalah kacang tanah.
awe
1
Visual Studio 2010 Professional tanpa MSDN adalah $ 550.
Boris Yankov
3

Dengan kesamaan dalam sintaks dan alat, keuntungan produktivitas dari C # atau java bukan dari urutan besarnya untuk membuat perbedaan yang signifikan untuk proyek kerja 10 - 15 tahun kerja Anda. Saya akan melihat lebih dekat pada masalah-masalah seperti:

  1. Apa saja persyaratan proyek dan kemampuan bahasa apa yang memenuhi persyaratan tersebut (misalnya lintas platform vs klien Windows yang kaya).
  2. Apa yang bisa saya tempatkan sebagai pendekatan / metodologi proyek yang akan memungkinkan tim saya bekerja secara produktif.
  3. Apa yang dapat saya lakukan tentang lingkungan kerja untuk memastikan saya mempekerjakan, mempertahankan, dan memanfaatkan tim terbaik sebaik mungkin untuk proyek yang signifikan.

Saya akan menyarankan bahwa, menurut pendapat saya, premis di balik pertanyaan, bahwa "perbedaan produktivitas antara (C # dan Jawa) dapat secara signifikan mempengaruhi investasi yang diperlukan dan waktu ke pasar" tidak benar. Saya tidak ragu akan ada beberapa perbedaan tetapi tidak akan signifikan.

AlexC
sumber
3

Saya telah bolak-balik antara Java dan .NET, dimulai dengan Java 1.2 hingga 1.6, dan .NET 1 hingga 4.0, lebih dari 10 tahun pengalaman kerja profesional (menjadi programmer C / C ++ sebelum itu).

Pada suatu waktu, seperti .NET 2.0, saya akan mengatakan bahwa Java dan C # akan hampir sama, terutama untuk pekerjaan back-end. Konstruk bahasa masih sangat mirip. .NET mungkin akan mendapatkan keunggulan dalam pemrograman UI desktop, karena desainer WinForms di Visual Studio, dan Java akan memiliki keunggulan dalam hal-hal Web / Server, terutama karena Anda tidak terjebak dengan IIS.

Sekarang pindah ke. NET 3.5 dan 4, saya memberikan keunggulan produktivitas untuk. NET, tangan-down. Ini terutama, menurut pendapat saya, karena .NET adalah bahasa yang berkembang lebih cepat, karena MS dapat membuat keputusan bahasa yang relatif cepat, sebagai lawan mendorong perubahan melalui politik JCP. Perbaikan besar adalah varkata kunci, keseluruhan Linq, Metode Extension, operator Null-penggabungan ??, dynamic, dan mungkin lebih banyak hal-hal besar yang benar-benar meningkatkan produktivitas.

Sekarang, yang mengatakan, bahasa "paling produktif" untuk suatu proyek hampir selalu salah satu yang paling nyaman dan berpengalaman dengan kebanyakan pengembang. Kurva pembelajaran selalu merupakan pembunuh produktivitas terbesar.

reli25rs
sumber
3

Satu hal yang saya perhatikan adalah banyak toko C # /. NET memiliki sikap "tidak ditemukan di sini" dan melarang semua perpustakaan pihak ketiga / sumber terbuka sementara banyak toko di Jawa lebih bersedia menggunakan perpustakaan sumber terbuka. Juga tampaknya ada lebih banyak perpustakaan yang tersedia untuk Java. Bahkan jika Anda melihat beberapa pustaka pihak ketiga yang keren di. NET misalnya NHibernate, NPOI, Spring.NET, dll. Mereka adalah port dari pustaka Java dan karenanya ada di belakangnya. Sepertinya banyak inovasi ini yang pertama datang ke Jawa dan setelah itu port .NET dibuat. Dari perspektif perpustakaan, tampaknya Jawa menang dalam penemuan-penemuan inovatif baru.

Masih Microsoft memang membuat beberapa perpustakaan resmi misalnya ASP MVC, LINQ, dll. Tetapi sering seperti dengan perpustakaan pihak ketiga ASP MVC seperti Struts, Spring MVC, dll sudah keluar untuk Jawa dan Microsoft terlambat memasuki paradigma web view controller model view controller.

Tentu saja, banyak dari perpustakaan ini menghemat banyak waktu dan membuat Anda lebih produktif. Bahasa inti ke bahasa inti C # dan Java tidak terlalu berbeda dan bagi saya itu terlalu dekat untuk dipanggil. Melempar pasukan perpustakaan pihak ketiga dan skalanya tentu miring ke arah Jawa. Masih dengan toko terbuka banyak saldo miring keluar. Hanya saja, banyak toko .NET memiliki sikap yang tidak ditemukan di sini sementara banyak toko Jawa adalah apa pun yang diperlukan untuk menyelesaikan pekerjaan ... Ini bahkan berlaku di dalam perusahaan tempat saya bekerja, tim .NET tidak mendapatkan banyak hal. (karena manajemen) sementara tim Java memiliki banyak perpustakaan / utilitas pihak ketiga yang disetujui. Juga dengan .NET lebih banyak hal baik tidak gratis (misalnya sebelum NPOI jika Anda ingin bekerja dengan dokumen kantor Microsoft, sebagian besar solusi [tidak termasuk otomatisasi kantor] tidak gratis.

Cervo
sumber
"Tidak ditemukan di sini". Berdasarkan alasan apa? Saya bekerja dalam campuran antara C # dan Java dan saya tampaknya telah melakukan pelanggaran yang lebih besar dari orang-orang Jawa, misalnya membuat IConverter dan mengimplementasikan logika untuk mengubah string menjadi dua kali lipat, dan sebaliknya.
George Silva
Untuk beberapa alasan saya lebih suka C # daripada Java, namun, saya lebih suka perpustakaan "bermigrasi" ke C # daripada yang asli C #, biasanya, dirancang lebih baik, diuji & diterapkan di dunia nyata.
umlcat
0

Saya sering bertanya pada diri sendiri: mana yang lebih baik? C # atau Java?

Saya akan memberi Anda saran dan saran ini adalah kesimpulan dari penelitian saya: Tidak ada yang lebih baik, hanya bahasa yang Anda kenal baik dan Anda dapat melakukan banyak aplikasi menarik dengan yang terbaik.

Pelajari cara memprogram dan kemudian latih diri Anda banyak menggunakan satu bahasa dan ketika Anda menjadi sempurna dalam menulis kode dengannya, pikirkan bahasa lain dan percayalah, Anda akan belajar bahasa lain seperti sepotong kue.

Salah
sumber