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.
sumber
Jawaban:
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.
sumber
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
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.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:
object.getSomeProperty()
vsobject.SomeProperty
atau menggunakan kelas dalam anonim vs lambda sama sekali tidak akan membuat perbedaan yang berarti untuk keunggulan kompetitif perusahaan Anda ....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).
sumber
Saya punya: Java 10 tahun, C # 8 tahun
Saya memilih Java
sumber
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:
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.
sumber
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.
sumber
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.
sumber
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:
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.
sumber
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
var
kata 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.
sumber
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.
sumber
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.
sumber