Harap dicatat bahwa ini tidak dimaksudkan sebagai argumen Java vs C #. Saya seorang programmer Java tanpa pengalaman C #, bertanya hanya karena penasaran.
Saya melakukan beberapa pembacaan pada C #, dan tampaknya ia memiliki lebih banyak fitur daripada Java. Sejumlah contoh:
- Ketikkan inferensi.
dynamic
kata kunci.- Delegasi.
- Parameter opsional.
- Lambda dan LINQ (saya sebenarnya tidak tahu apa ini).
- Properti.
Namun Java tidak benar-benar menampilkan apa pun yang tidak dimiliki C #.
Pertanyaan saya adalah: mengapa C # memiliki lebih banyak fitur asli daripada Java? Dan mengapa Java tidak menambahkan beberapa di antaranya selama bertahun-tahun, misalnya Properti atau jenis inferensi? Apakah perancang bahasa Jawa mengambil pendekatan yang lebih sederhana? Apa alasannya?
Jawaban:
Beberapa alasan:
Hasilnya adalah bahwa Java sekarang memiliki sedikit celah fitur. Memang ada rencana besar untuk masa depan, tetapi seperti biasa dengan hal semacam ini semuanya membutuhkan waktu sedikit lebih lama dari yang direncanakan.
sumber
Saya akan menambahkan jawaban Kilian bahwa satu perbedaan besar antara Java dan C # adalah bahwa desainer C # tidak hanya mengendalikan bahasa, tetapi juga IDE standar.
Menambahkan sesuatu seperti metode ekstensi dan kelas parsial bisa menjadi mimpi buruk dalam pengembangan / kontrol versi jika IDE tidak akan mendukungnya.
Karena Anda diharapkan dapat mengkompilasi Java dengan platform pilihan Anda (Eclipse, Netbeans, vi + Ant), menambahkan fitur yang memecahkan kode (dan menggunakannya untuk mengembangkan ekstensi tambahan seperti LINQ) jauh lebih rumit daripada sekadar mengatakan " karena IntelliSense akan menangani kasus-kasus ini, kita tidak perlu khawatir ".
Selain itu, kadang-kadang perlu diperhatikan nilai fitur daripada jumlahnya. Sebagai contoh, properti otomatis bagus dan saya tentu berharap Java mendukung ini, tetapi pada akhirnya itu hanya berarti bahwa Anda harus menulis beberapa baris kode lagi di Jawa. Demikian pula, saya menemukan bahwa memanggil "Acara" fitur agak keliru, karena mereka sedikit lebih dari delegasi berlabel khusus, dan hanya salinan yang disempurnakan dari pola Pengamat yang telah digunakan oleh Jawa (sekali lagi, di Jawa perlu lebih eksplisit coding)
Jangan salah paham, saya pikir C # telah memperkenalkan beberapa inovasi yang patut dicatat, dan saya berharap suatu hari bos besar Oracle akan bangun dan meluncurkan "Java 2" yang benar untuk memasukkan beberapa di antaranya, tetapi jaraknya tidak sejelas Anda poin pertanyaan.
sumber