Saya hanya ingin mengklarifikasi satu hal. Ini bukan pertanyaan yang mana yang lebih baik, bagian yang saya serahkan kepada orang lain untuk didiskusikan. Saya tidak peduli tentang itu. Saya telah ditanyai pertanyaan ini pada wawancara pekerjaan saya dan saya pikir mungkin berguna untuk belajar lebih banyak.
Inilah yang bisa saya kemukakan:
- Java adalah "platform independent". Nah saat ini Anda bisa mengatakan ada proyek Mono sehingga C # dapat dipertimbangkan juga tapi saya percaya itu agak berlebihan. Mengapa? Nah, ketika rilis baru Java dilakukan, ia tersedia secara bersamaan di semua platform yang didukungnya, di sisi lain berapa banyak fitur C # 3.0 yang masih hilang dalam implementasi Mono? Atau benarkah CLR vs. JRE yang harus kita bandingkan di sini?
- Java tidak mendukung acara dan delegasi. Sejauh yang aku tahu.
- Di Jawa semua metode virtual
- Alat pengembangan: Saya percaya belum ada alat seperti Visual Studio. Terutama jika Anda sudah bekerja dengan edisi tim Anda akan tahu apa yang saya maksud.
Silakan tambahkan orang lain yang menurut Anda relevan.
Pembaruan: Baru saja muncul pikiran saya, Java tidak memiliki sesuatu seperti atribut khusus pada kelas, metode dll. Atau apakah itu?
Jawaban:
Membandingkan Java 7 dan C # 3
(Beberapa fitur Java 7 tidak disebutkan di sini, tetapi
using
keuntungan pernyataan semua versi C # di atas Java 1-6 telah dihapus.)Tidak semua ringkasan Anda benar:
Di luar itu (dan apa yang sudah ada dalam ringkasan Anda):
List<byte>
sebagaibyte[]
dukungan, daripada array byte kotak.)ref
danout
untuk melewatkan parameter dengan referensiIni tidak lengkap, tetapi mencakup semua yang bisa saya pikirkan begitu saja.
sumber
Berikut ini adalah referensi mendalam yang mendalam oleh Dare Obasanjo tentang perbedaan antara C # dan Jawa. Saya selalu menemukan diri saya merujuk ke artikel ini ketika beralih di antara keduanya.
http://www.25hoursaday.com/CsharpVsJava.html
sumber
TimeDate
kelas agar selalu punya waktu, dan belum punya waktu untuk :(C # memiliki properti otomatis yang sangat nyaman dan mereka juga membantu menjaga kode Anda lebih bersih, setidaknya ketika Anda tidak memiliki logika khusus di getter dan setter Anda.
sumber
Fitur C # Absen di Jawa • C # mencakup tipe yang lebih primitif dan fungsionalitas untuk menangkap pengecualian aritmatika.
• Termasuk sejumlah besar kenyamanan notasi di Jawa, banyak di antaranya, seperti overloading operator dan gips yang ditentukan pengguna, sudah akrab bagi komunitas besar programmer C ++.
• Penanganan acara adalah "warga negara kelas satu" —itulah bagian dari bahasa itu sendiri.
• Memungkinkan definisi "struct", yang mirip dengan kelas tetapi dapat dialokasikan pada stack (tidak seperti instance dari kelas di C # dan Java).
• C # mengimplementasikan properti sebagai bagian dari sintaks bahasa.
• C # memungkinkan pergantian pernyataan untuk beroperasi pada string.
• C # memungkinkan metode anonim yang menyediakan fungsionalitas penutupan.
• C # memungkinkan iterator yang menggunakan co-rutin melalui kata kunci hasil gaya fungsional.
• C # memiliki dukungan untuk parameter output, membantu mengembalikan nilai-nilai berganda, fitur yang dibagikan oleh C ++ dan SQL.
• C # memiliki kemampuan untuk alias namespace.
• C # memiliki "Implementasi Anggota Eksplisit" yang memungkinkan kelas untuk secara khusus mengimplementasikan metode antarmuka, terpisah dari metode kelasnya sendiri. Ini memungkinkannya juga untuk mengimplementasikan dua antarmuka berbeda yang kebetulan memiliki metode dengan nama yang sama. Metode antarmuka tidak perlu bersifat publik; mereka dapat dibuat hanya dapat diakses melalui antarmuka itu.
• C # menyediakan integrasi dengan COM.
• Mengikuti contoh C dan C ++, C # memungkinkan panggilan dengan referensi untuk tipe primitif dan referensi.
Fitur Java Absen di C #
• Kata kunci strictfp Java menjamin bahwa hasil operasi floating point tetap sama di seluruh platform.
• Java mendukung pengecualian yang diperiksa untuk penegakan yang lebih baik terhadap perangkap dan penanganan kesalahan.
sumber
Sumber lain yang bagus adalah http://www.javacamp.org/javavscsharp/ Situs ini menyebutkan banyak contoh yang menggambarkan hampir semua perbedaan antara kedua bahasa pemrograman ini.
Tentang Atribut, Java memiliki Anotasi, yang bekerja dengan cara yang hampir sama.
sumber
Generik:
Dengan Java generics, Anda tidak benar-benar mendapatkan efisiensi eksekusi yang Anda dapatkan dengan .NET karena ketika Anda mengkompilasi kelas generik di Java, kompiler menghapus parameter tipe dan mengganti Object di mana-mana. Sebagai contoh jika Anda memiliki
Foo<T>
kelas kompiler java menghasilkan Kode Byte seolah-olah ituFoo<Object>
. Ini berarti casting dan juga tinju / unboxing harus dilakukan di "latar belakang".Saya telah bermain dengan Java / C # untuk sementara waktu sekarang dan, menurut pendapat saya, perbedaan utama di tingkat bahasa adalah, seperti yang Anda tunjukkan, delegasi.
sumber
Silakan buka tautan yang diberikan di bawah ini msdn.microsoft.com/en-us/library/ms836794.aspx Ini mencakup persamaan dan perbedaan antara C # dan java
sumber