CodeGym /Blog Java /rawak /Terjebak? Bahagian Paling Sukar dalam Pembelajaran Java d...
John Squirrels
Tahap
San Francisco

Terjebak? Bahagian Paling Sukar dalam Pembelajaran Java dan Cara Mengatasinya

Diterbitkan dalam kumpulan
Seperti yang anda ketahui, kami mengesyorkan pemula pengekodan untuk mula mempelajari bahasa pengaturcaraan dengan Java, dan CodeGym mempunyai segala-galanya untuk menjadikan proses pembelajaran Java mudah dihadam walaupun untuk pelajar yang paling tidak bersedia. Tetapi seperti unsur gamifikasi, cerita yang santai dan watak lucu membantu memudahkan proses ini, pembelajaran asas Java sepenuhnya jarang sekali tidak menghadapi cabaran bagi majoriti pelajar baharu. Terperangkap?  Bahagian Paling Sukar dalam Mempelajari Java dan Cara Mengatasinya - 1Hari ini kita akan melihat beberapa bidang yang paling sukar dalam asas pengaturcaraan Java, cuba memahami mengapa ramai orang mendapati mereka sukar dan jika ada sesuatu untuk anda lakukan mengenainya.

1. Generik

Generik dalam Java ialah jenis yang mempunyai parameter. Apabila membuat jenis generik, anda bukan sahaja menentukan jenis, tetapi juga jenis data yang akan berfungsi dengannya. Generik sering disebut oleh pelajar Java sebagai salah satu bahagian Java yang paling sukar untuk mereka fahami. “Isu utama saya masih berurusan dengan Generik. Ia lebih mudah apabila anda mempunyai kaedah dengan parameter untuk diikuti, tetapi menjadi mengelirukan apabila anda perlu menulis sendiri,” kata seorang pelajar Java tanpa nama.

Petua dan cadangan

Berikut ialah pendapat tentang Generics in Java daripada Ravi Reddy, seorang pengaturcara dan profesor universiti yang berpengalaman: “Java Generics melakukan satu perkara yang tidak dilakukan oleh templat C++ — melaksanakan keselamatan jenis. Pelaksanaan templat C++ ialah helah pra-pemproses yang mudah dan tidak memastikan keselamatan jenis. Generik dalam Java adalah seperti templat C++ tetapi dengan keselamatan jenis tambahan. Dan IMHO, keselamatan jenis adalah ciri penting mana-mana persekitaran pembangunan yang baik. Dan ya! Mereka boleh mengelirukan kerana perubahan mental kita antara parameter dan jenis. Tetapi saya percaya bahawa menghabiskan masa untuk menguasai mereka adalah berbaloi dengan usaha. Kerana saya mendapati diri saya "berfikir" lebih baik dalam Java setelah saya memahami antara muka dan Generik."

2. Multithreading

Multithreading dalam Java ialah proses melaksanakan dua atau lebih utas secara serentak untuk mencapai penggunaan maksimum CPU oleh aplikasi. Multithreading menyelesaikan tugas yang sangat penting dan boleh menjadikan program kami lebih pantas. Selalunya berkali ganda lebih pantas. Tetapi ia dianggap sebagai salah satu topik di mana ramai pelajar Java baru cenderung terjebak. Semuanya kerana multithreading juga boleh mencipta masalah dan bukannya menyelesaikannya. Terdapat dua masalah khusus yang boleh dibuat oleh multithreading: kebuntuan dan keadaan perlumbaan. Kebuntuan ialah situasi di mana beberapa utas sedang menunggu sumber yang dipegang oleh satu sama lain, dan tiada satu pun daripada mereka boleh terus berjalan. Keadaan perlumbaan ialah ralat reka bentuk dalam sistem atau aplikasi berbilang benang, di mana pengendalian sistem atau aplikasi bergantung pada susunan bahagian kod itu dilaksanakan.

Petua dan cadangan

Berikut adalah cadangan yang baiktentang cara menangani multithreading daripada S.Lott, seorang arkitek perisian dan pengguna aktif StackExchange, tapak web Soal Jawab yang popular: “Multi-threading adalah mudah. Mengekodkan aplikasi untuk multi-threading adalah sangat, sangat mudah. Terdapat helah mudah, dan ini adalah menggunakan baris gilir mesej yang direka bentuk dengan baik (jangan gulung sendiri) untuk menghantar data antara benang. Bahagian yang sukar ialah cuba untuk mempunyai beberapa utas secara ajaib mengemas kini objek kongsi dalam beberapa cara. Ketika itulah ia terdedah kepada kesilapan kerana orang ramai tidak mempedulikan keadaan perlumbaan yang ada. Ramai orang tidak menggunakan baris gilir mesej dan cuba mengemas kini objek kongsi dan mencipta masalah untuk diri mereka sendiri. Apa yang menjadi sukar ialah mereka bentuk algoritma yang berfungsi dengan baik apabila menghantar data antara beberapa baris gilir. Itu sukar.

3. Isu laluan kelas

Ralat laluan kelas juga dianggap sebagai salah satu masalah yang paling banyak dikeluhkan oleh pembangun Java dalam kerja harian mereka. “Masalah laluan kelas boleh memakan masa untuk nyahpepijat dan cenderung berlaku pada masa dan tempat yang paling teruk: sebelum keluaran, dan selalunya dalam persekitaran yang tiada akses oleh pasukan pembangunan. Ia juga boleh berlaku pada peringkat IDE dan menjadi sumber pengurangan produktiviti,” kata Vasco Ferreira, pembangun Java/Javascript berpengalaman dan pengarang tutorial berkaitan pengaturcaraan.

Petua dan cadangan

“Masalah laluan kelas bukanlah tahap rendah atau tidak boleh didekati seperti yang kelihatan pada mulanya. Ini semua tentang fail zip (balang) yang hadir / tidak hadir dalam direktori tertentu, cara mencari direktori tersebut dan cara menyahpepijat laluan kelas dalam persekitaran dengan akses terhad. Dengan mengetahui set konsep yang terhad seperti Pemuat Kelas, Rantaian Pemuat Kelas dan mod Parent First / Parent Last, masalah ini boleh diatasi dengan berkesan,” jelas pakar itu.

4. Polimorfisme dan menggunakannya dengan betul

Apabila bercakap tentang prinsip OOP, ramai orang mengatakan bahawa mereka mempunyai masa yang sukar untuk memahami polimorfisme. Polimorfisme ialah keupayaan program untuk merawat objek dengan antara muka yang sama dengan cara yang sama, tanpa maklumat tentang jenis khusus objek. Walaupun Polimorfisme adalah topik yang agak asas, ia agak luas dan membentuk sebahagian besar asas Java. Bagi kebanyakan pelajar, polimorfisme adalah kesukaran pertama dalam mempelajari Java. Semuanya kerana terdapat pelbagai bentuk polimorfisme yang digunakan dalam konteks yang berbeza, yang boleh mengelirukan.

Petua dan cadangan

Tidak ada cara lain untuk menangani polimorfisme selain daripada mempelajarinya. Begini cara Torben Mogensen, yang mengajar pengaturcaraan di The University of Copenhagen, menerangkankonsep ini: "Pemuatan berlebihan mudah: + boleh bermaksud penambahan integer, penambahan titik terapung dan (dalam beberapa bahasa) penyambungan rentetan. Polimorfisme subjenis: Jika B ialah subjenis (mewarisi daripada) A, sebarang nilai jenis B boleh digunakan dalam konteks yang menjangkakan nilai jenis A. Polimorfisme parametrik: Satu jenis boleh diparameterkan dengan parameter jenis, supaya anda dalam konteks yang berbeza boleh membekalkan jenis hujah yang berbeza, jadi anda membuat instantiate jenis parameter kepada jenis konkrit yang berbeza. Ini juga dipanggil "templat" atau "generik" dan dalam bahasa OO yang biasanya ditentukan menggunakan kurungan sudut (seperti T<A>). Polimorfisme antara muka. Ini pada asasnya adalah mekanisme di mana anda mengehadkan polimorfisme subjenis kepada subjenis yang melaksanakan antara muka tertentu atau polimorfisme parametrik untuk menaip parameter yang melaksanakan antara muka tertentu."

5. Refleksi

Refleksi ialah mekanisme untuk meneroka data tentang program semasa ia sedang berjalan. Refleksi membolehkan anda meneroka maklumat tentang medan, kaedah dan pembina kelas. Ia juga membolehkan anda bekerja dengan jenis yang tidak hadir pada masa penyusunan, tetapi yang tersedia semasa masa jalankan. Refleksi dan model yang konsisten secara logik untuk mengeluarkan maklumat ralat memungkinkan untuk mencipta kod dinamik yang betul. Tetapi bagi ramai orang, tidak begitu mudah untuk memikirkan cara menggunakan Refleksi.

Petua dan cadangan

“Dalam kes refleksi dan Java, refleksi membolehkan Java, yang direka bentuk untuk ditaip secara statik, ditaip secara dinamik. Penaipan dinamik sememangnya tidak jahat. Ya, ia membenarkan pengaturcara memecahkan prinsip OOP tertentu, tetapi pada masa yang sama ia membenarkan banyak ciri berkuasa seperti proksi masa jalan dan suntikan kebergantungan. Ya, Java membolehkan anda menembak diri sendiri menggunakan refleksi. Walau bagaimanapun, anda perlu mengacukan pistol ke kaki anda dengan sangat jelas, menanggalkan keselamatan dan tarik picu,” jelas Jayesh Lalwani, seorang pengaturcara Java dan arkitek aplikasi yang berpengalaman.

6. Aliran Input/Output

Strim membolehkan anda bekerja dengan mana-mana sumber data: Internet, sistem fail komputer anda atau sesuatu yang lain. Strim ialah alat universal. Mereka membenarkan program menerima data dari mana-mana sahaja (strim input) dan menghantarnya ke mana-mana (strim output). Tugas mereka adalah sama: untuk mengambil data dari satu tempat dan menghantarnya ke tempat lain. Terdapat dua jenis aliran: aliran input (digunakan untuk menerima data) dan aliran output (untuk menghantar data). Apa yang menyukarkan ramai orang untuk memahami menggunakan aliran ialah hakikat bahawa Java mempunyai berbilang kelas aliran I/O.

Petua dan cadangan

“Java mempunyai begitu banyak kelas aliran I/O terutamanya disebabkan oleh dua faktor penyumbang. Pertama ialah warisan. Sesetengah kelas masih ada atas sebab sejarah dan ia tidak ditamatkan kerana ia tidak dianggap berbahaya. Kedua, fleksibiliti. Aplikasi yang berbeza mempunyai keperluan yang berbeza dan oleh itu, anda mempunyai pelbagai pilihan bergantung pada keperluan anda. Abstraksi berguna membawa kejelasan apabila anda membacanya dan dengan beberapa baris kod anda boleh melakukan banyak perkara,” kata Jonas Mellin, pakar Java dari Sweden. Apakah aspek Java yang anda dapati paling sukar untuk difahami atau terperangkap untuk beberapa lama? Kongsi pengalaman anda dalam komen.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION