Tujuan menulis artikel ini adalah untuk meringkas beberapa pengalaman saya dalam menggunakan Java selama bertahun -tahun, terutama terkait dengan beberapa poin pengetahuan Java dasar, jadi saya juga berharap untuk membagikannya dengan programmer Java yang baru saja memulai dan calon pemula yang bermaksud memasuki industri pengembangan Java. Saya berharap dapat memberi Anda beberapa pengalaman dan membiarkan Anda belajar dan menggunakan Java lebih baik.
Isi utama dari pengantar ini adalah bagian terkait J2SE. Selain itu, kami akan memperkenalkan beberapa konten terkait J2EE yang terkait dengan setiap kerangka kerja di Java di masa depan.
Setelah bertahun -tahun pengembangan Java dan dikombinasikan dengan beberapa pengalaman dalam mewawancarai pengembang Java, saya pikir hal utama untuk J2SE adalah menguasai konten berikut.
1. JVM Terkait (termasuk fitur dari setiap versi)
Bagi mereka yang baru saja terlibat dalam Java, pengetahuan terkait JVM tidak perlu dipahami secara mendalam, sehingga Anda dapat memiliki pemahaman sederhana tentang konsep-konsep di dalamnya. Namun, untuk pengembang senior dengan lebih dari 3 tahun pengalaman Java, hampir tidak dapat diterima untuk tidak mengetahui JVM.
Sebagai dasar untuk operasi Java, sulit untuk percaya bahwa orang yang tidak tahu JVM sama sekali dapat sepenuhnya memahami bahasa Java. Ketika saya mewawancarai pengembang dengan pengalaman Java lebih dari 3 tahun, JVM hampir merupakan pertanyaan yang harus dikerjakan. Tentu saja, JVM bukan satu -satunya pertanyaan wawancara yang menentukan kualitas kemampuan teknis, tetapi dapat membuktikan tingkat kemampuan pengembangan Java.
Dalam kategori JVM, saya pikir pengetahuan yang perlu dikuasai adalah:
Model dan struktur memori JVM
Prinsip GC, penyetelan kinerja
Tuning: Dump Thread, Analisis Struktur Memori
Struktur bytecode biner kelas, sistem pemuatan kelas, proses pemuatan kelas, proses pembuatan instance
Proses eksekusi metode
Fitur baru yang disediakan oleh berbagai pembaruan versi utama Java (membutuhkan pemahaman sederhana)
2. Operasi Java (Esensi Dasar)
Ini mungkin sangat mudah dilihat. Siapa yang tidak bisa menjalankan program Java? Namun berkali -kali, kami hanya menjalankan program Java melalui IDE. Bagaimana IDE yang mendasarinya menjalankan program Java? Banyak orang tidak mengerti.
Titik pengetahuan ini adalah hal paling mendasar yang perlu dikuasai pengembang. Ketika Anda pemula, hal pertama adalah mengajari Anda cara menjalankan program Java di baris perintah, tetapi banyak orang melupakan hal ini setelah mereka selesai belajar Java dan menggunakan IDE. Mengapa Anda menekankan mengetahui hal ini? Setelah Anda mengetahui cara paling murni untuk memulai Java, Anda dapat menganalisis jumlah direktori yang dimulai pada waktu itu, cara mengeksekusi penamaan, parameter apa itu, apakah ada yang hilang, dll. Ketika ada masalah dengan startup. Ini akan membantu Anda untuk memecahkan kemungkinan masalah terkait lingkungan yang mungkin dalam pengembangan nyata.
Pengetahuan yang perlu Anda kuasai di sini adalah:
Javac mengkompilasi file java sebagai file kelas
Penggunaan perintah java, cara memulai kelas java dengan paket pada baris perintah
Berbagai jalur yang terlibat dalam program Java (ClassPath, java.library.path, direktori rumah tempat Java berjalan, dll.)
3. Jenis Data
Tidak ada banyak hal untuk dikatakan tentang artikel ini, tidak lebih dari menguasai tipe dasar dan tipe objek di Java. Anda dapat mempelajari lebih lanjut tentang bagaimana JDK secara otomatis mengonversi, termasuk pengemasan dan unboxing, dll. Anda juga harus memperhatikan untuk menghindari penilaian jenis yang sama setelah pengemasan.
Poin Pengetahuan Utama:
Tipe Dasar: int, panjang, mengapung, ganda, boolean ,. . .
Jenis Objek yang sesuai: Integer dan Jenis Lainnya untuk Konversi Jenis Dasar, Pengepakan dan Unboxing
Jenis Objek: Sama, HashCode
Fitur jenis string
4. Objek dan instance, pembuatan objek
Dalam hal ini, pengembang perlu memahami konsep kelas dan instance dan perbedaan di antara mereka, yang merupakan dasar untuk fitur Java yang berorientasi objek. Poin pengetahuan utamanya adalah:
Konsep kelas dan instance
Proses Pembuatan Contoh:
1. Tidak ada warisan: Alokasikan ruang memori, inisialisasi variabel, dan konstruktor panggilan
2. Warisan: Menangani tindakan statis, mengalokasikan ruang memori, mendefinisikan variabel sebagai nilai awal, menangani inisialisasi pada definisi, dan mengeksekusi konstruktor
Poin yang perlu diperhatikan:
Sifat statis, dll. Diinisialisasi dari kelas dasar-> subkelas
Fitur yang terkait dengan metode konstruksi parameter default
5. Kontrol akses
Ini juga merupakan dasar untuk fitur enkapsulasi Java, dan apa yang perlu dikuasai adalah:
Efek Modifikasi Pribadi Default Publik Dilindungi untuk Kelas, Metode, dan Bidang
6. Kontrol proses
Dasar -dasar kontrol proses Java, meskipun beberapa sintaksis tidak selalu digunakan, mereka perlu dipahami dan digunakan di tempat yang tepat.
Apa yang perlu dikuasai adalah:
Sintaks untuk kontrol proses seperti if, switch, loop, untuk, sementara
7. Konsep pemrograman yang berorientasi objek
Ini adalah konsep inti Java yang perlu dikuasai oleh pengembang Java mana pun. Banyak fitur atau titik pengetahuan di Java terkait dengan konsep pemrograman berorientasi objek di Java. Dalam pemahaman saya, pengembang yang baik tidak hanya perlu memahami fitur-fitur ini (titik pengetahuan) sendiri, tetapi juga perlu mengetahui bagaimana objek-objek ini tercermin dalam konsep pemrograman yang berorientasi objek di Java, yang lebih kondusif bagi pengembang untuk menguasai bahasa pengembangan Java dan bahasa pemrograman yang berorientasi objek lainnya. Saya baru saja terdaftar secara singkat di sini, dan poin pengetahuan utama meliputi:
Tiga fitur berorientasi objek utama: enkapsulasi, warisan, dan polimorfisme; Konsep definisi masing -masing, apa karakteristiknya tercermin, dan skenario penggunaan masing -masing
Konsep multi-distribusi statis dan distribusi tunggal dinamis
Konsep dan penggunaan kelebihan beban
Warisan: Implementasi Antarmuka Berganda, Warisan Kelas Dasar Tunggal
Abstrak, kelas abstrak, antarmuka
Polimorfisme: Konsep dan Penggunaan Cakupan Metode
Callback antarmuka
8. Statis
Atribut statis juga sering digunakan dalam pengembangan Java harian. Anda perlu memahami penggunaan yang terkait dengan kata kunci statis, dan juga menggunakannya bersama dengan kata kunci lain, seperti apakah mereka dapat digunakan bersama dengan kata kunci seperti abstrak dan final.
Hal -hal utama yang harus dikuasai adalah:
Definisi sifat statis, penggunaan, dan cara menginisialisasi kelas saat memuat
Definisi dan penggunaan metode statis
Definisi dan penggunaan kelas statis
Definisi dan waktu inisialisasi blok kode statis
9. Poin Pengetahuan Dasar
Di sini kami terutama mencantumkan beberapa titik pengetahuan Java yang tersebar yang tidak diklasifikasikan secara sistematis. Ini juga banyak digunakan dalam pengembangan harian. Sebenarnya ada banyak konten di bidang ini. Saat ini, saya hanya merangkum ini untuk saat ini berada di sini:
Termasuk:
Sama dengan kode hashcode, string/stringBuffer, final, akhirnya, finalisasi
10. Kerangka Koleksi
Ini adalah bagian yang membutuhkan lebih banyak penguasaan. Dapat dikatakan bahwa tidak perlu untuk kerangka kerja pengumpulan tanpa menggunakannya. Ini sangat penting. Namun, poin pengetahuan di sini tidak sulit, tetapi yang terbaik adalah memahami metode implementasi internal untuk koleksi, karena ini akan membantu Anda memilih kerangka kerja yang sesuai dalam skenario yang berbeda untuk menyelesaikan masalah. Misalnya, jika Anda memiliki satu set 10.000 elemen, Anda sering perlu melakukan operasi penilaian. Jika Anda tahu karakteristik pengumpulan atau implementasi internal, mudah untuk membuat pilihan yang benar.
Konten berikut disertakan di sini (korelasi konkurensi tidak termasuk):
Sistem Kerangka Koleksi: Koleksi Dasar, Peta
Isi implementasi set spesifik, daftar, set, peta implementasi spesifik, struktur internal, metode khusus, skenario yang berlaku, dll.
Penggunaan koleksi, dll.
11. Kerangka Pengecualian
Pengecualian mungkin tidak dianggap serius dalam pengembangan Java. Secara umum, ketika menemukan pengecualian, mereka akan dilemparkan secara langsung, atau hanya menangkapnya dan memprosesnya, dan tidak akan memiliki dampak besar pada operasi keseluruhan program. Namun, dalam desain dan pengembangan tingkat perusahaan, desain dan penanganan kelainan seringkali terkait dengan ketahanan keseluruhan sistem. Untuk pengembang, penanganan pengecualian dalam sistem yang baik harus disatukan dan menghindari banyak pengecualian penanganan logika yang tersebar di mana -mana; Untuk sistem, pengecualian harus dapat dikendalikan dan mudah dioperasikan dan dipelihara. Setelah beberapa pengecualian muncul, harus ada cara untuk menghadapinya dan tahu cara beroperasi dan memelihara. Oleh karena itu, meskipun kerangka pengecualian sangat sederhana, untuk seluruh pengembangan aplikasi tingkat perusahaan, penanganan pengecualian sangat penting. Untuk menangani pengecualian dengan baik, Anda perlu memahami sistem pengecualian di Java.
Tidak ada banyak poin pengetahuan untuk dikuasai di bagian ini, terutama:
Sistem abnormal:
Bisa dilempar
Pengecualian
RuntimeException
Kesalahan
Perbedaan antara runtimeException dan pengecualian umum, metode pemrosesan spesifik, dll.
12.java io
IO tidak hanya sederhana di Java untuk membaca dan menulis file, tetapi juga mencakup semua operasi input dan output seperti membaca dan menulis jaringan soket. Misalnya, membaca konten posting dalam permintaan HTTP standar juga merupakan proses output, dll ...
Untuk IO, Java tidak hanya menyediakan input dasar dan API terkait output, tetapi juga menyediakan beberapa pembaca operasi yang disederhanakan dan API penulis, yang juga sangat penting dalam beberapa perkembangan (proyek yang melibatkan sejumlah besar operasi IO). Ini juga akan melibatkan (log, membaca dan menulis file sementara, dll.) Dalam pengembangan harian.
Poin pengetahuan utama di sini adalah:
Sistem IO dasar: termasuk InputStream, OutputStream, pembaca/penulis, membaca file, berbagai pembacaan aliran, dll.
Konsep NIO, metode penggunaan spesifik dan skenario penggunaan
13. Konkurensi multi-utas
Multithreading adalah bagian yang relatif sulit dalam Java. Jika multi-threading digunakan dengan benar, itu dapat secara efektif meningkatkan laju penggunaan CPU dan meningkatkan efisiensi sistem secara keseluruhan, terutama ketika ada sejumlah besar pemblokiran operasi IO; Tapi itu juga pedang bermata dua. Jika tidak digunakan dengan baik, sistem tidak hanya tidak akan ditingkatkan atau tidak ditingkatkan, tetapi juga akan membawa masalah seperti debugging antara beberapa utas.
Ada banyak konten dalam multithreading. Saya hanya menjelaskan secara singkat poin -poin pengetahuan yang perlu dikuasai di Java dalam penggunaan awal multithreading. Di masa depan, jika Anda memiliki kesempatan untuk memperkenalkan beberapa fitur canggih secara rinci, Anda akan memiliki pengantar terperinci untuk skenario penggunaan beberapa fitur canggih.
Implementasi dan startup multithreaded
Perbedaan antara Callable dan Running
Sinkroisasi, reentrantlock masing -masing fitur dan perbandingan
Kumpulan benang
Dapatkan hasil eksekusi secara tidak sinkron
Paket Bersamaan
kunci
..
14. Jaringan
Java juga menyediakan API yang dapat secara langsung mengoperasikan protokol TCP dan protokol UDP. Ketika diperlukan untuk menekankan kinerja jaringan, komunikasi dapat secara langsung digunakan dengan TCP/UDP. Anda dapat melihat penggunaan API terkait ini saat melihat kode sumber Tomcat dan lainnya. Namun, umumnya, TCP jarang digunakan secara langsung, dan kerangka kerja seperti Mina dan Netty digunakan untuk diproses. Karena tidak ada banyak pengembangan di bidang ini, saya tidak akan mencantumkannya secara rinci.
15. Pemrosesan Waktu dan Tanggal
Untuk hampir setiap aplikasi, pemrosesan waktu dan tanggal tidak dapat dihindari, tetapi penggunaan API terkait waktu sebelum JDK8 tidak ramah. Di era itu, kerangka waktu seperti Joda dapat dipilih. Setelah rilis JDK8, API waktu baru pada dasarnya mengintegrasikan keunggulan kerangka kerja lainnya dan dapat digunakan secara langsung.
Untuk pengembang Java, mereka harus mahir dalam menggunakan API untuk menangani waktu dan tanggal.
Poin pengetahuan spesifik tidak akan terdaftar lagi. Saya akan menulis artikel khusus di masa depan untuk merangkum penggunaan API waktu dan tanggal di JDK8.
16.xml parsing/json parsing
Faktanya, tak satu pun dari dua konten ini adalah konten dalam J2SE, tetapi dalam pengembangan harian, interaksi dengan program lain dan file konfigurasi semakin tidak dapat dipisahkan dari penguraian kedua format ini.
Namun, untuk pengembang, dapat memahami beberapa prinsip dan metode parsing spesifik XML/JSON akan membantu Anda dengan lebih baik memilih cara yang benar bagi Anda dalam setiap skenario spesifik untuk membuat program Anda lebih efisien dan kuat.
XML: Anda perlu memahami prinsip -prinsip dasar parsing dom dan penguraian saksofon dan skenario masing -masing yang berlaku
JSON: Anda perlu memahami penggunaan beberapa kerangka kerja JSON yang umum digunakan, seperti Jackson, Fastjson, Gson, dll.
17. Menggunakan Maven
Maven bukan konten di Java, tetapi Maven revolusioner dan membawa kenyamanan besar untuk pengembangan Java. Dari pengantar dan manajemen dependensi, pembaruan dan pelepasan proses pengembangan, dan bahkan pembaruan versi, menggunakan Maven dapat sangat menyederhanakan kompleksitas dalam proses pengembangan, sehingga menghemat banyak waktu. Dapat dikatakan bahwa Maven telah menjadi konfigurasi standar untuk pengembang Java. Jadi saya juga menganggap Maven sebagai titik pengetahuan dasar bagi pengembang Java. Saya akan menambahkan beberapa pengalaman dan keterampilan saya dalam menggunakan Maven di masa depan, jadi saya tidak akan membahas detail di sini.
18. Generik
Ini adalah konsep baru yang diperkenalkan oleh JDK5. Ini sebenarnya adalah gula sintaksis. Ini akan sedikit nyaman saat menulis kode java. Secara umum, untuk pengembangan aplikasi atau bisnis, itu hanya perlu digunakan secara sederhana, dan tidak perlu digunakan untuk mendefinisikan obat generik. Namun, beberapa komponen publik dasar akan digunakan. Anda dapat melihat lebih dekat pada bagian ini saat dibutuhkan. Secara umum, itu dapat digunakan secara sederhana.
19. Marking
Itu juga diperkenalkan setelah JDK5. Spring adalah kerangka kerja yang sangat baik, dan dimulai dengan XML sebagai file konfigurasi standar. Namun, setelah Spring3, terutama setelah munculnya Spring-Boot, semakin disarankan untuk menggunakan anotasi untuk menyederhanakan file konfigurasi XML. Untuk pengembang, ini dapat menghemat banyak waktu pada konfigurasi XML. Namun, kerugiannya adalah bahwa anotasi tersebar di berbagai kelas. Tidak seperti XML, ia dapat memiliki pemahaman global dan manajemen semua konfigurasi, jadi tidak ada cara untuk sepenuhnya mengganti semua XML. Untuk pengembang biasa, Anda bisa menggunakan anotasi. Beberapa pengembang dengan komponen publik mungkin perlu memahami definisi dan implementasi anotasi, dan Anda dapat melihat lebih dekat saat Anda membutuhkannya.
20.RMI
RemotemethodinVocation adalah antarmuka panggilan jarak jauh yang unik untuk bahasa Java, dan relatif sederhana dan nyaman untuk digunakan. Namun, ketika situasi lintas-bahasa, metode lain seperti layanan web diperlukan untuk mendukungnya. Secara umum, program tidak perlu menggunakan RMI, tetapi mereka dapat digunakan dalam situasi tertentu. Saya berada di sebuah proyek, menggunakan RMI untuk mengontrol awal program dan berhenti.
21.Jni
Java Native Interface memungkinkan metode antarmuka lokal dipanggil di Java, yang umumnya digunakan untuk memanggil kode C/C ++. Perlu dicatat bahwa masalah jalur memuat file SO/DLL di Java tidak rumit untuk memanggil antarmuka itu sendiri, tetapi sering kali membutuhkan banyak waktu untuk memuat pustaka antarmuka lokal yang diperlukan.
Di atas hanyalah pengantar singkat untuk pandangan saya dan perkenalan tentang poin pengetahuan Java dasar dan poin teknis ini. Isi ini semua berasal dari beberapa ringkasan penggunaan Java selama bertahun -tahun. Saya berharap dapat memberikan beberapa pengalaman kepada mereka yang baru saja terpapar Java atau berniat berkembang dari Jawa. Saya berharap untuk belajar dan menggunakan Java lebih efisien dan menghindari membuang -buang waktu yang berharga. Masih ada beberapa konten yang tidak lengkap dalam hal ini, dan mereka akan ditambahkan melalui artikel mendatang. Karena kemampuan pribadi yang terbatas, tentu saja akan ada beberapa kesalahan dan kelalaian. Selamat datang untuk mengoreksi saya, berdiskusi bersama, dan meningkatkan artikel ini bersama -sama, berharap itu benar -benar dapat membantu orang yang membutuhkan.
Ringkasan poin pengetahuan Java di atas - beberapa saran untuk pemula Java (harus dibaca untuk pemula) adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.