Apakah Java akan menyusul C #? [Tutup]

17

Hari ini saya memposting pertanyaan yang menanyakan bahasa C # atau Java mana yang lebih baik untuk saya pelajari. Saya punya beberapa jawaban. Satu hal yang muncul adalah bahwa mungkin Java sekarang agak di belakang C # dengan fitur baru. Saya melihat beberapa tautan web dan sebagian besar menunjukkan apa yang dimiliki C # dan apa yang tidak dimiliki java.

Jadi pertanyaan saya untuk Anda semua adalah apakah Java akan mengejar C # lagi? Dan jika Anda menebak di mana posisinya dalam waktu 5 tahun. Apakah ia memiliki semua hal yang mungkin sekarang hilang? Bagaimana dengan Java 7?

MandyNelson
sumber
7
-1, dugaan dan hipotetis. Akan berubah menjadi +1 jika judul diubah menjadi "Apakah Java di belakang C #, dan jika demikian, bagaimana mungkin mengejar ketinggalan?"
Nicole
2
Akankah Java dan C # mengejar Skema? Beri tahu saya saat Anda mendapatkan fungsi, penutupan, dan kelanjutan kelas satu anonim.
dietbuddha
5
@ Dietbuddha: Saya lebih suka tidak membuang sampah sembarangan dengan kode saya ), terima kasih banyak.
Josh K
1
@JoshK Anda lebih suka mengisinya; dan}, kan? LISP tampaknya menggunakan banyak tanda kurung karena setiap fungsi menggunakannya, dan Anda memiliki banyak fungsi di dalamnya.
YuriAlbuquerque

Jawaban:

32

Fitur bahasa adalah bagian yang sangat kecil dari apa yang membuat Java dan C # tick. Pada akhirnya ini adalah bagian dari ekosistem J2EE dan .NET yang lebih besar.

Keduanya memiliki kekuatan sendiri dan harus tumbuh lebih besar dalam 5 tahun ke depan.

Shamit Verma
sumber
19
+1 untuk "Fitur bahasa adalah bagian yang sangat kecil dari apa yang membuat Java dan C # tick"
Craige
1
Ya, API dan perpustakaan dalam banyak hal jauh lebih signifikan.
Michael K
2
Setuju, tetapi pertanyaannya adalah tentang bahasa dan bukan ekosistem;)
Philippe
1
Saya benar-benar benci memberi +1 pada jawaban yang sangat singkat, tetapi Anda ada sesuatu di sini. Senang melihat Anda memperluas jawaban ini.
Nicole
3
Pertanyaan mengatakan: "bahasa C # atau Java mana yang lebih baik bagi saya untuk dipelajari" dan "di mana bahasa itu dalam waktu 5 tahun" kedua aspek ini lebih bergantung pada ekosistem daripada bahasa.
Shamit Verma
16

Saya akan mengatakan ya sampai Oracle muncul. Yang menyedihkan, karena saya benar-benar menikmati lompatan dalam fitur yang dimiliki Java dan C # selama enam tahun terakhir.

Jesse C. Slicer
sumber
2
Menurut Anda mengapa Oracle akan menyabotase Java?
2
Saya hanya tidak berpikir budaya perusahaan di sana memiliki ketangkasan yang sama seperti yang dimiliki Sun dalam menggabungkan fitur.
Jesse C. Slicer
8
@ Glenn, gugatan Oracle vs Google menunjukkan kepada saya bahwa mereka tidak "mendapatkan" open source, dan itu berarti perusahaan besar cenderung memilih Java untuk pengembangan di masa depan. groklaw.net/staticpages/index.php?page=OracleGoogle
Tangurena
Oracle mungkin tidak persis "sekrup Java", tetapi JVM. Saat ini mereka memiliki proyek untuk menggabungkan dua implementasi JVM yang telah mereka peroleh JRockit dari BEA dan HotSpot untuk Sun. Sementara mereka berada di sana, mereka benar-benar meninggalkan proyek Da Vinci Machine.
vartec
2
Saya bingung dengan Oracle. Setelan Android agak mematikan, tetapi mereka berkontribusi pada kernel Linux dan mereka adalah pengembang utama sistem file Btrfs. Oracle tampaknya "mendapatkan" open source lebih baik daripada Microsoft, tetapi itu tidak banyak bicara.
jonescb
6

Sebagai bahasa, saya tidak memperluas Jawa untuk menambahkan inovasi pada tingkat yang signifikan, terutama karena orang-orang di komunitas open-source yang berada di ujung tombak lebih cenderung untuk fokus pada bahasa JVM yang lebih baru, seperti Scala, Clojure, Groovy, JRuby, dan JPython.

Juga, komitmen Java untuk kompatibilitas-mundur berarti menambahkan fitur-fitur bahasa secara inheren lebih sulit daripada di masa-masa awal bahasa.

Eric Wilson
sumber
5

Tanda tanya besar di sini adalah Oracle. Sun benar-benar memperlambat segalanya untuk Jawa selama setengah dekade terakhir ini. Harapan banyak orang di komunitas Jawa adalah bahwa Sun akan memisahkan Jawa atau menjualnya kepada seseorang yang akan mengerahkan banyak sumber daya dan upaya. Meskipun Oracle pasti bisa melakukan itu, itu adalah perusahaan besar dengan banyak grup dengan kepentingan pribadi mereka sendiri. Tebakan saya, dan hanya itu, tebakan, adalah bahwa Oracle akan membiarkan Java mandek dan menggunakannya terutama sebagai alat untuk tuntutan hukum paten.

Mungkin mereka akan menjualnya ke Google untuk sejumlah besar uang dan semua orang akan senang. Itu ada di tangan dewan direksi dan pengacara daripada insinyur dan perancang perangkat lunak.

Di sisi baik, bahkan tanpa perbaikan, Jawa adalah bahasa yang baik dan memiliki ekosistem yang bagus di sekitarnya. Walaupun saya pribadi lebih suka C # dan dunia .net, Java masih merupakan pilihan yang bagus. Ke depan, waktu akan memberi tahu tetapi sampai sekarang, Jawa sama sekali tidak buruk. (Perpustakaan tanggal dan waktu dikecualikan ... wow, apakah perpustakaan itu jelek dan berantakan)

Jason
sumber
1
Ada perpustakaan pihak ketiga sekarang untuk mengatasi masalah tanggal / waktu.
Michael K
1
Oracle menggunakan Java bersama dengan PL / SQL sebagai bahasa untuk program yang hidup di dalam basis data, setidaknya 10g. Oracle banyak menggunakan Java. Apakah ini berarti mereka akan mengambil Jawa ke arah yang saya suka dipertanyakan, tetapi mereka tidak akan membunuhnya.
David Thornley
4

Tidak ada yang bisa dicari, jadi pertanyaannya tidak masuk akal.

Hanya karena Java tidak persis mereplikasi C # tidak berarti "inferior" dalam beberapa hal, itu hanya berbeda. Mungkin juga bertanya kapan C # akan "menyusul" dengan Cobol.

jwenting
sumber
23
Saya tidak setuju. C # dan Java serupa dalam banyak hal, lebih dari C # dan COBOL. Saya ingat suatu hari membaca bahwa "C # adalah apa yang seharusnya Java". Singkatnya, saya percaya bahwa C # dan Java bersaing secara langsung, dan setelah bekerja dengan keduanya saya harus mengatakan bahwa saya banyak fitur C # di Jawa, tetapi tidak sebaliknya ...
Philippe
Apakah Anda menemukan situasi di mana Anda bisa menggunakan C # atau Java? Yaitu situasi di mana pengembang bisa membuat pilihan. Biasanya sebuah toko sudah memiliki preferensi / prasangka / bias dan pilihan akan antara bahasa pada ekosistem yang sama. Misalnya antara Jawa dan Scala atau antara C # dan F #
Shamit Verma
2
Saya tidak setuju dengan semua keputusan desain yang dibuat C #, tetapi seperti Java, mereka secara sadar mulai membuat pengganti C ++, dan dengan contoh Java sebelum mereka, mereka sengaja menambahkan beberapa fitur penting yang ditinggalkan Java. Jadi jika Anda berpikir fitur-fitur itu bagus, maka Java harus "mengejar" dengan C # Secara khusus, kemampuan untuk membuat objek inline sehingga segala sesuatu yang berorientasi objek TIDAK HARUS membengkak, dan saya pikir const. Delegasi adalah fitur baru yang mereka buat, bukan bahwa mereka tidak dapat dibangun sebagai struktur data perpustakaan. Saya akan mengatakan mereka berdua harus mengejar ketinggalan dengan C ++!
Dov
@ Pilipe, jangan terjebak pada contoh konternya. Dia bisa saja dengan mudah berkata, "Kapan C # akan menyusul Jawa?" Maksudnya masih ada bahwa tidak ada alasan obyektif mengapa Jawa berada di belakang C #; itu semua pilihan pribadi.
jonescb
Tidak ada yang berbicara tentang replikasi, tetapi C # memiliki beberapa fitur penting yang Java sedang mempertimbangkan untuk mengimplementasikan SEKARANG (seperti lambdas, yang ditiru dengan implementasi objek yang jelek).
YuriAlbuquerque
4

Pertanyaan apakah C # atau Java ada di depan yang lain adalah untuk diperdebatkan, tetapi alih-alih berfokus pada fitur bahasa dari satu atau yang lain saya lebih suka fokus pada apa yang terlibat dengan pengembangan bahasa. Itu adalah satu fakta yang menurut saya tidak akan dibantah siapa pun: Java lebih tua dari C #.

Masalah dengan mengubah cara kerja suatu bahasa:

  1. Jika Anda merusak kompatibilitas, Anda mengecewakan banyak pengembang
  2. Jika Anda mengecewakan pengembang Anda, mereka pindah ke bahasa lain yang mendukung mereka dengan lebih baik. Karenanya, tidak ada alasan untuk tetap bekerja dengan bahasa tersebut.
  3. Java membuat beberapa keputusan desain sejak dini dengan tekanan untuk membawa bahasa tersebut ke pasar. Harapannya adalah untuk kembali dan mengisi beberapa bagian yang kosong. Keputusan-keputusan itu masih mengganggu bahasa karena pengelola tidak ingin melanggar poin pertama.
  4. Jawa mengobarkan banyak wilayah baru, dan membuktikan sekali dan untuk semua bahwa bahasa sampah yang dikumpulkan dapat ditanggapi dengan serius - dan berkinerja cukup baik bagi kebanyakan orang.
  5. C # datang kemudian dan belajar banyak pelajaran yang membuat Java tersandung - sehingga mereka dapat menghindari beberapa keterbatasan teknis yang dimiliki Jawa karena poin 3.
  6. Fitur bahasa baru harus menyelesaikan masalah nyata dengan cara yang masuk akal. Tidak semua fitur bahasa masuk akal dalam konteks bahasa yang Anda coba tambahkan. Inilah sebabnya, meskipun memiliki kesamaan, Java dan C # akan terus menjadi bahasa yang berbeda.

Jadi, apakah C # memiliki lebih banyak fitur bahasa daripada Java? Aku pikir begitu. Apakah ini bermanfaat? Aku pikir begitu. Apakah itu berarti bahwa C # lebih baik atau lebih dewasa daripada Java? Saya tidak setuju dengan itu. Mereka berbeda, sederhana dan sederhana. Java tidak akan pernah memiliki semua fitur C # karena C # tidak akan pernah memiliki semua fitur Java.

Salah satu fitur Java, kemampuan untuk menulis program di Windows dan menyebarkannya di Unix atau Mac, tidak akan pernah terjadi secara langsung oleh dukungan Microsoft. Mengapa kamu bertanya? Bukan karena Microsoft jahat (apakah itu benar atau tidak, saya tidak terlalu peduli). Itu karena mereka belajar pelajaran yang Sun tidak pernah lakukan: menulis sekali berjalan di mana saja membuat sistem dan perangkat keras menjadi komoditas. Jika Anda peduli untuk menghasilkan uang dari penjualan sistem operasi Anda, Anda tidak ingin membuatnya sepele untuk bertukar dan masih memiliki aplikasi yang berfungsi. Jika Anda melakukannya, Anda tidak dapat memperoleh keuntungan dari sistem operasi karena selalu ada opsi yang lebih murah.

Berin Loritsch
sumber
Mengapa penting bahwa Mono tidak dijalankan oleh MS? Mono bekerja dengan sangat baik. Jangan meremehkannya.
Kugel
Ini bukan penggalian di Mono, tetapi tidak semua .NET API didukung secara langsung. Sementara mereka membuat kemajuan, dan telah datang cukup jauh, ada keterbatasan - khususnya dalam aplikasi desktop. Tidak yakin seberapa dekat Mono atau apakah secara legal bisa menerapkan Winforms atau WPF. Namun, untuk kerja sampingan server, saya cukup yakin ini kompatibel. Belum melihat ke dalamnya baru-baru ini.
Berin Loritsch
Saya pikir "kemampuan untuk menulis sebuah program di Windows dan menyebarkannya di Unix atau Mac, tidak akan pernah terjadi secara langsung oleh dukungan Microsoft" telah dibantah sekarang
JoelFan
Pada saat saya menulis jawabannya, ternyata tidak. Jadi, C # apakah Microsoft telah menulis runtime dan pustaka yang berfungsi pada Mac dan Unix? Mono tidak langsung dari Microsoft, meskipun mungkin ada beberapa pengembang Microsoft yang mengerjakannya. Saya masih ragu tentang aplikasi desktop yang dibangun di atas WPF yang berfungsi untuk Linux. Sisi server saja mungkin OK.
Berin Loritsch
1

Java benar-benar tidak memerlukan "fitur" baru seperti C atau C ++. Ini adalah bahasa yang dirancang dengan baik untuk pengembangan berorientasi objek. Tambahan yang mungkin dibuat adalah dalam membuat perpustakaan untuk melakukan berbagai tugas. Hal yang sama berlaku untuk C # - sebagian besar fitur sedang ditambahkan untuk membuat bahasa melakukan lebih banyak hal. Secara pribadi saya pikir sebagian besar fitur itu tidak diperlukan - pointer di OO benar-benar sangat banyak kecuali Anda sedang bekerja pada tingkat perangkat keras (pada titik mana mungkin lebih baik menggunakan sesuatu seperti C). Selain itu, menjalankan VM seharusnya membuat akses langsung ke perangkat keras menjadi sulit, jika bukan tidak mungkin.

Unix memulai tren membuat modul yang melakukan satu hal dengan sangat baik. Saya berpikir bahwa kedua Java dan C # mendapatkan sedikit dari fitur creep langsung. Lebih baik membuat inti yang mudah diperluas daripada "bahasa" multiguna raksasa yang lebih mirip kerangka kerja. Bagi saya , Java lebih cocok dengan persyaratan ini daripada C #.

Michael K.
sumber
7
Bahasa tanpa lambda yang tepat bukanlah bahasa yang dapat digunakan. Jika satu fitur itu ditambahkan ke Java, saya setuju dengan sisa argumen Anda. Tanpa itu, Java tidak bisa diperluas sama sekali, hampir tidak bisa digunakan.
SK-logic
2
@Craige Secara Pribadi (pendapat) Saya tidak suka memiliki fitur sytactical. Saya ingin bahasanya keluar dari jalan saya - sangat minim.
Michael K
1
@Michael - Saya gagal menggambar koneksi antara bahasa yang memiliki fitur sintaksis dan bahasa yang menghalangi Anda. Hanya karena sebuah bahasa mengatakan fitur, tidak berarti Anda harus menggunakannya. Sebagai contoh, ambil metode pengambil dan penyetel C #. 90% dari waktu, itu akan menghemat Anda menulis ratusan baris kode berlebihan. Anda masih bisa menulis sendiri jika Anda mau.
Craige
1
@Craige, jika bahasa memiliki fitur, setidaknya alat Anda harus mengetahuinya. Dan kekuatan ekosistem Jawa terutama dalam alat-alatnya, yang dimungkinkan sepenuhnya karena kesederhanaan minimalis bahasa.
SK-logic
1
@ SK, saya tidak mengerti bagaimana Anda bisa mengatakan bahwa bahasa dengan lambda tidak dapat digunakan. C tidak memiliki lambdas, dan C ++ mendapatkannya dalam C ++ 0x dan orang telah menggunakan bahasa ini selama beberapa dekade. Hanya karena Anda lebih suka pemrograman fungsional yang tidak membatalkan pemrograman imperitif.
jonescb
1

Tidak ada yang salah dengan banyak fitur yang ditambahkan C #, tetapi mengingat tingkat perubahan bahasa, mereka secara sadar menyulitkan jika bukan tidak mungkin bagi Mono untuk mengikutinya. Jika demikian, maka saya katakan bahwa kita sedang menunggu C # untuk mengejar ke Jawa dalam hal berbagai sistem yang dapat digunakan untuk itu. Tidak cukup hanya berjalan di Windows.

Dov
sumber
0

Saya tidak akan memulai forum diskusi, tapi saya pikir Java ada di sini jauh sebelum C # dan dalam hal ini C # tampaknya lebih seperti replikasi daripada java.

Sedangkan untuk meng-answare pertanyaan Anda: Java dan C # adalah bahasa yang berbeda karena itu Anda tidak dapat membandingkannya hanya dengan fitur-fiturnya. Apa yang bisa Anda lakukan di Jawa Anda mungkin tidak bisa dalam C # dan vica sebaliknya.

Jadi akhirnya ini seperti memulai topik Windows vs Linux.

Adam Arold
sumber