CodeGym /Java Blog /Acak /Terjebak? Bagian Tersulit Belajar Java dan Cara Mengatasi...
John Squirrels
Level 41
San Francisco

Terjebak? Bagian Tersulit Belajar Java dan Cara Mengatasinya

Dipublikasikan di grup Acak
Seperti yang Anda ketahui, kami merekomendasikan pemula pengkodean untuk mulai belajar bahasa pemrograman dengan Java, dan CodeGym memiliki segalanya untuk membuat proses belajar Java dapat dicerna bahkan untuk siswa yang paling tidak siap sekalipun. Namun, sebanyak elemen gamifikasi, cerita santai, dan karakter lucu membantu memudahkan proses ini, mempelajari dasar-dasar Java secara maksimal jarang berjalan tanpa tantangan bagi sebagian besar pelajar baru. Terjebak?  Bagian Tersulit Belajar Java dan Cara Mengatasinya - 1Hari ini kita akan melihat beberapa area tersulit dalam dasar-dasar pemrograman Java, mencoba memahami mengapa banyak orang menganggapnya sulit dan jika ada sesuatu yang dapat Anda lakukan untuk mengatasinya.

1. Generik

Generik di Java adalah tipe yang memiliki parameter. Saat membuat tipe generik, Anda tidak hanya menentukan tipe, tetapi juga tipe data yang akan digunakan. Generik sering disebutkan oleh pembelajar Java sebagai salah satu bagian Java yang paling sulit untuk mereka pahami. “Masalah utama saya masih berurusan dengan Generik. Jauh lebih mudah ketika Anda memiliki metode dengan parameter untuk diikuti, tetapi menjadi membingungkan ketika Anda harus menulis sendiri,” kata seorang pelajar Java anonim.

Kiat dan rekomendasi

Berikut pendapat tentang Generics in Java dari Ravi Reddy, seorang programmer berpengalaman dan profesor universitas: “Java Generics melakukan satu hal yang tidak dilakukan oleh template C++ — mengimplementasikan keamanan jenis. Implementasi template C++ adalah trik pra-prosesor sederhana dan tidak menjamin keamanan jenis. Generik di Java seperti template C++ tetapi dengan keamanan tipe tambahan. Dan IMHO, keamanan tipe adalah fitur penting dari setiap lingkungan pengembangan yang baik. Dan ya! Mereka bisa membingungkan karena pergeseran mental kita antara parameter dan tipenya. Tetapi saya percaya bahwa menghabiskan waktu untuk menguasainya sepadan dengan usaha. Karena saya mendapati diri saya "berpikir" jauh lebih baik di Java setelah saya memahami antarmuka dan Generik."

2. Multithreading

Multithreading di Java adalah proses mengeksekusi dua atau lebih thread secara bersamaan untuk mencapai pemanfaatan maksimum CPU oleh aplikasi. Multithreading menyelesaikan tugas yang sangat penting dan dapat membuat program kita lebih cepat. Seringkali berkali-kali lebih cepat. Tapi itu dianggap sebagai salah satu topik di mana banyak pelajar Java baru cenderung terjebak. Semua karena multithreading juga dapat menimbulkan masalah alih-alih menyelesaikannya. Ada dua masalah khusus yang dapat dibuat oleh multithreading: kebuntuan dan kondisi balapan. Kebuntuan adalah situasi di mana banyak utas menunggu sumber daya dipegang satu sama lain, dan tidak ada yang dapat terus berjalan. Kondisi balapan adalah kesalahan desain dalam sistem atau aplikasi multithreaded, di mana pengoperasian sistem atau aplikasi bergantung pada urutan bagian kode yang dijalankan.

Kiat dan rekomendasi

Ini rekomendasi yang bagustentang cara menangani multithreading dari S.Lott, seorang arsitek perangkat lunak dan pengguna aktif StackExchange, situs tanya jawab populer: “Multi-threading itu sederhana. Pengkodean aplikasi untuk multi-threading sangat-sangat mudah. Ada trik sederhana, dan ini menggunakan antrean pesan yang dirancang dengan baik (jangan gulung milik Anda sendiri) untuk meneruskan data di antara utas. Bagian yang sulit adalah mencoba membuat banyak utas secara ajaib memperbarui objek bersama dengan cara tertentu. Saat itulah rawan kesalahan karena orang tidak memperhatikan kondisi balapan yang ada. Banyak orang tidak menggunakan antrean pesan dan mencoba memperbarui objek bersama dan membuat masalah sendiri. Yang menjadi sulit adalah merancang sebuah algoritma yang bekerja dengan baik saat mengirimkan data di antara beberapa antrian. Itu sulit.

3. Masalah jalur kelas

Kesalahan classpath juga dianggap sebagai salah satu masalah yang paling banyak dikeluhkan pengembang Java dalam pekerjaan sehari-hari mereka. “Masalah classpath dapat menghabiskan waktu untuk melakukan debug dan cenderung terjadi pada waktu dan tempat yang paling buruk: sebelum rilis, dan seringkali di lingkungan di mana hanya ada sedikit atau tidak ada akses oleh tim pengembangan. Mereka juga dapat terjadi pada tingkat IDE dan menjadi sumber produktivitas yang berkurang, ” kata Vasco Ferreira, pengembang Java/Javascript berpengalaman dan penulis tutorial terkait pemrograman.

Kiat dan rekomendasi

“Masalah classpath bukanlah level yang rendah atau tidak dapat didekati seperti yang terlihat pada awalnya. Ini semua tentang file zip (guci) yang ada / tidak ada di direktori tertentu, bagaimana menemukan direktori tersebut, dan bagaimana men-debug classpath di lingkungan dengan akses terbatas. Dengan mengetahui serangkaian konsep terbatas seperti Class Loader, Class Loader Chain, dan mode Parent First / Parent Last, masalah ini dapat diatasi secara efektif,” jelas sang ahli.

4. Polimorfisme dan menggunakannya dengan benar

Dalam hal prinsip OOP, banyak orang mengatakan bahwa mereka kesulitan memahami polimorfisme. Polimorfisme adalah kemampuan program untuk memperlakukan objek dengan antarmuka yang sama dengan cara yang sama, tanpa informasi tentang jenis spesifik objek tersebut. Meskipun Polimorfisme adalah topik yang cukup mendasar, ini agak luas dan merupakan bagian yang baik dari fondasi Java. Bagi banyak siswa, polimorfisme adalah kesulitan pertama dalam mempelajari Java. Semua karena ada berbagai bentuk polimorfisme yang digunakan dalam konteks yang berbeda, yang dapat membingungkan.

Kiat dan rekomendasi

Tidak ada cara lain untuk menghadapi polimorfisme selain mempelajarinya. Berikut penjelasan Torben Mogensen, yang mengajar pemrograman di The University of Copenhagenkonsep ini: “Simple overloading: + dapat berarti penambahan integer, penambahan floating point dan (dalam beberapa bahasa) penggabungan string. Polimorfisme subtipe: Jika B adalah subtipe (mewarisi dari) A, nilai apa pun dari tipe B dapat digunakan dalam konteks yang mengharapkan nilai tipe A. Polimorfisme parametrik: Suatu tipe dapat diparameterisasi dengan parameter tipe, sehingga Anda masuk konteks yang berbeda dapat memberikan argumen tipe yang berbeda, jadi Anda membuat instance tipe parameter ke tipe beton yang berbeda. Ini juga disebut "templat" atau "generik" dan dalam bahasa OO biasanya ditentukan menggunakan tanda kurung sudut (seperti T<A>). Polimorfisme antarmuka. Ini pada dasarnya adalah mekanisme di mana Anda membatasi polimorfisme subtipe menjadi subtipe yang mengimplementasikan antarmuka tertentu atau polimorfisme parametrik untuk mengetikkan parameter yang mengimplementasikan antarmuka tertentu.

5. Refleksi

Refleksi adalah mekanisme untuk mengeksplorasi data tentang suatu program saat sedang berjalan. Refleksi memungkinkan Anda menjelajahi informasi tentang bidang, metode, dan konstruktor kelas. Ini juga memungkinkan Anda untuk bekerja dengan tipe yang tidak ada pada waktu kompilasi, tetapi tersedia selama waktu proses. Refleksi dan model yang konsisten secara logis untuk mengeluarkan informasi kesalahan memungkinkan untuk membuat kode dinamis yang benar. Tetapi bagi banyak orang, tidak mudah untuk mengetahui cara menggunakan Refleksi.

Kiat dan rekomendasi

“Dalam kasus refleksi dan Java, refleksi memungkinkan Java, yang dirancang untuk diketik secara statis, untuk diketik secara dinamis. Pengetikan dinamis pada dasarnya tidak jahat. Ya, ini memungkinkan pemrogram untuk melanggar prinsip OOP tertentu, tetapi pada saat yang sama memungkinkan banyak fitur canggih seperti proksi runtime dan injeksi ketergantungan. Ya, Java memungkinkan Anda memotret diri sendiri menggunakan pantulan. Namun, Anda harus secara eksplisit mengarahkan pistol ke kaki Anda, melepas pengaman dan menarik pelatuknya, ” jelas Jayesh Lalwani, seorang programmer Java dan arsitek aplikasi yang berpengalaman.

6. Aliran Input/Output

Stream memungkinkan Anda bekerja dengan sumber data apa pun: Internet, sistem file komputer Anda, atau yang lainnya. Aliran adalah alat universal. Mereka mengizinkan program untuk menerima data dari mana saja (aliran input) dan mengirimkannya ke mana saja (aliran output). Tugas mereka sama: mengambil data dari satu tempat dan mengirimkannya ke tempat lain. Ada dua jenis stream: input stream (digunakan untuk menerima data) dan output stream (untuk mengirim data). Apa yang menyulitkan banyak orang untuk memahami penggunaan stream adalah kenyataan bahwa Java memiliki banyak kelas stream I/O.

Kiat dan rekomendasi

“Java memiliki begitu banyak kelas aliran I/O terutama karena dua faktor yang berkontribusi. Pertama adalah warisan. Beberapa kelas masih ada karena alasan historis dan tidak ditinggalkan karena tidak dianggap berbahaya. Kedua, fleksibilitas. Aplikasi yang berbeda memiliki persyaratan yang berbeda dan karenanya, Anda memiliki banyak opsi tergantung pada kebutuhan Anda. Abstraksi yang berguna memberikan kejelasan saat Anda membacanya dan dengan beberapa baris kode Anda dapat melakukan banyak hal,” kata Jonas Mellin, pakar Java dari Swedia. Aspek Java apa yang menurut Anda paling sulit untuk dipahami atau macet selama beberapa waktu? Bagikan pengalaman Anda di komentar.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION