Saya baru saja belajar J2SE. Setelah kurang lebih 20 hari, saya selesai membaca J2SE karya Pak Ma Bingbing. Saya merasa guru ini sangat lucu sehingga saya tidak akan terganggu ketika mendengarkan ceramahnya. Pemanfaatan waktu sangat tinggi. Saya dengan tulus memberikan jempol kepada Guru Ma Bingbing, dan dua jempol lagi kepada Guru Mi yang membuat kita mempelajari video ini! (Ada banyak hal indah di dunia, tapi yang kurang adalah mata untuk menemukan hal-hal indah!).
Tanpa basa-basi lagi, mari kita lihat apa yang sebenarnya dikatakan dalam video ini. Seperti yang ditunjukkan di bawah ini:
Orang-orang yang mungkin pernah mempelajari bahasa berorientasi objek (saya mempelajari C#, yang dimodelkan setelah Java dan selanjutnya menyempurnakan Java), kesan pertama ketika melihat gambar ini adalah bahwa mereka pada dasarnya telah mempelajari semua hal ini. Tampaknya hanya ada GUI , JDBC adalah hal baru.
Faktanya, mereka sangat mirip. Bandingkan di bawah ini!
Dalam hal sintaksis, keduanya telah meninggalkan banyak tempat mencolok seperti modifikasi fungsi const dan parameternya di C++, substitusi makro, variabel global, dan fungsi global.
Dalam hal pewarisan, keduanya mengadopsi solusi pewarisan akar tunggal dan implementasi multi-antarmuka yang lebih mudah dipahami dan dibangun. Dalam hal organisasi kode sumber, enkapsulasi logis yang lebih baik yang mengintegrasikan deklarasi dan implementasi telah diusulkan.
Dalam hal penyatuan tipe antara tipe dasar dan objek warisan akar tunggal, box/unbox yang diusulkan oleh C# lebih cerdas dan efisien daripada kelas pengemasan Java.
Berorientasi pada komponen tidak diragukan lagi merupakan arus utama pengembangan perangkat lunak kontemporer. C# bahkan menjadi "terobsesi" dengan pemrograman komponen, yang sama sekali berbeda dengan Java yang memulai debutnya 6 tahun lalu - tentu saja ini hanya masalah zaman. C# mengimplementasikan dukungan langsungnya untuk pemrograman komponen melalui properti, pengindeks, delegasi, peristiwa, kelebihan operator, sifat, versi, dll. Meskipun hal ini dapat diimplementasikan secara tidak langsung melalui metode, antarmuka, atau adaptor di Java, sejarah industri perangkat lunak memberi tahu kita bahwa hal ini merupakan kerusakan besar pada efisiensi pemrograman atau desain logika - hal pertama yang dihadapi bahasa tingkat tinggi adalah Manusia, bukan mesin. Selain mekanisme dukungan komponen tingkat bahasa ini, platform .NET juga menyediakan solusi paket untuk konfigurasi komponen, pengoperasian, manajemen, dll., dan Visual Studio.NET, yang dibuat khusus untuk pengembangan komponen, bahkan lebih menarik Ini semua untuk pemrograman Komponen C# yang membuka dunia yang luas. Dalam hal teknologi lainnya, kelemahan Java dapat diabaikan, namun dalam hal pemrograman komponen, Java memiliki kelemahan yang tidak dapat disembuhkan dibandingkan dengan C#. Khususnya bagi developer yang berlatar belakang C++ dan Visual Basic, C# memiliki daya tarik dan godaan yang tak tertahankan dalam hal ini.
Dalam hal lintas platform, dukungan dan implementasi Java dipuji, meskipun kecepatan JVM masih memusingkan. Meskipun C# telah sepenuhnya mempertimbangkan portabilitas dalam hal struktur dasarnya, setidaknya belum ada produk yang matang dan teruji. C# tampaknya lebih tertarik pada interoperabilitas Layanan Web XML daripada pemrograman lintas platform. Namun, dukungan interoperabilitas tingkat objek C# untuk lebih dari 20 bahasa umum melalui konstruksi bahasa dasar (CLI) telah sangat meningkatkan status teknis C#. Interoperabilitas yang murah dengan komponen COM juga menghasilkan banyak poin bagi C# - menjaga sistem yang kompatibel sangat penting bagi industri perangkat lunak modern, dan ini juga merupakan tanda tanggung jawab bagi sebagian besar pengembang.
Tentu saja, evaluasi teknis yang komprehensif dari kedua bahasa tersebut tidak berarti hanya sekedar daftar sederhana dan perbandingan poin-poin di atas. Platform back-end mereka (C# untuk .NET, Java untuk J2EE), dukungan kerangka pemrograman mereka , dan penerapan alat yang relevan untuk setiap bahasa sekarang Beberapa landasan sistem dan sebagainya memiliki dampak yang besar terhadap perkembangan bahasa pemrograman. Dari sudut pandang teknis, C# tidak diragukan lagi lebih kompetitif dibandingkan Java. Tidak ada gunanya berdebat tentang siapa yang meniru siapa – perkembangan teknologi pada dasarnya adalah proses saling belajar. Persaingan teknis murni tidak dapat menentukan hasil dari perdebatan ini – jika harus berupa pertarungan. Industri perangkat lunak senang melihat persaingan. Hanya teknologi yang telah disesuaikan dengan pasar yang dapat melayani kita dengan lebih baik.