Pengertian
Exception Handling
Eksepsi adalah keadaan tidak normal yang muncul pada suatu
bagian program pada saat dijalankan. Penanganan eksepsi pada java membawa
pengelolaan kesalahan program saat dijalankan kedalam orientasi-objek. Eksepsi
java adalah objek yang menjelaskan suatu keadaan eksepsi yang muncul pada suatu
bagian program.
Saat suatu keadaan eksepsi muncul, suatu objeke xcep tio n dibuat dan dimasukkan ke dalam method yang menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi berdasarkan tipe tertentu. Method ini juga menjaga agar tidak keluar terlalu dini melalui suatu eksepsi, dan memiliki suatu blok program yang dijalankan tepat sebelum suatu eksepsi menyebabkan metodenya kembali ke pemanggil.
Dasar-dasar Penanganan Eksepsi
Saat suatu keadaan eksepsi muncul, suatu objeke xcep tio n dibuat dan dimasukkan ke dalam method yang menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi berdasarkan tipe tertentu. Method ini juga menjaga agar tidak keluar terlalu dini melalui suatu eksepsi, dan memiliki suatu blok program yang dijalankan tepat sebelum suatu eksepsi menyebabkan metodenya kembali ke pemanggil.
Dasar-dasar Penanganan Eksepsi
Penanganan eksepsi pada java diatur dengan lima kata kunci :try,
catch, throw, throwsdan finally. Pada dasarnya try digunakan untuk
mengeksekusi suatu bagian program, dan jika muncul kesalahan, sistem akan melakukanth row suatu eksepsi yang dapat andaca tch berdasarkan tipe eksepsinya, atau yang anda berikanf in a lly dengan penangan default. Berikut ini bentuk dasar bagian penanganan eksepsi :
try {
// Block of Code
}
catch (ExceptionType1 e) {
// Exception Handler for ExceptionType1
}catch (ExceptionType2 e) {
// Exception Handler for ExceptionTYpe2
throw (e); // re-throw the Exception?
}finally {
}
Garbage Collection di
Java
Jika sebelum anda mengenal Java, anda terlebih
dahulu mengenal bahasa C/C++, maka pasti anda akan mencari fitur-fitur yang
berhubungan dengan pointer. Ya, tugas sebuah pointer di C/C++
adalah untuk mengalokasikan memory sesuai yang ditunjuk pointer itu sendiri.
Selain itu mungkin anda juga mencari fitur method free() atau
operator delete pada C/C++ dalam penghancuran isi dari memori
yang tak terpakai. Perlu diketahui, Java tidak mendukung adanya pointer, method
free(), atau operator delete.
Jadi, apakah ini sebuah bug/kelemahan dari Java
?
Tentu saja tidak.
Alasannya, Java sebenarnya dirancang untuk
berjalan di atas Java Runtime Environment (JRE) dan mungkin
saja akan dieksekusi di atas firewall jika berbentuk applet.
Sehingga tentu tidak akan lagi membutuhkan sebuah pointer. Java menyediakan
suatu mekanisme yang disebut dengan garbage collection, yaitu :
"mekanisme dalam melakukan dealokasikan
memory secara otomatis"
Jika anda sebelumnya telah belajar
meng-inisialisasi objek dan membuat variabel array, maka sebenarnya anda telah
belajar mengalokasikan objek dan array yang anda buat ke dalam memory (seperti
tugas sebuah pointer di C/C++) karena fungsi dari operator new di
bahasa Java adalah mengalokasikan objek dan array ke memory.
NamaClass namaObject = new NamaClass();
tipeData namaArray[] = new tipeData[jumlah_elemen]
(ini adalah inisialisasi objek dan pembuatan
array. Perhatikan penggunaan operator new)
Setelah kita tahu mekanisme pengalokasiannya,
lalu bagaimana melakukan pen-dealokasian objek dan array dari memory? Tentu
saja dilakukan dengan mekanisme garbage collection. Java akan melakukannya
secara otomatis. Cara kerja sederhananya sebagai berikut:
Interpreter di Java akan tahu persis dimana
objek dan array dialokasikan. Ia juga akan tahu variabel-variabel lokal yang
merujuk pada objek atau array dan ia juga akan tahu objek atau array yang
merujuk objek atau array yang lain. Ini berarti Interpreter akan mengetahui
jika suatu objek atau array tidak lagi memiliki referensi atau akses kemana pun
lagi. Maka, Interpreter akan mengasumsikan objek atau array tersebut sudah
tidak diperlukan lagi. Sehingga Interpreter akan menghancurkannya secara aman
dan menggunakan ruang memory yang digunakan sebelumnya untuk dimanfaatkan
kepentingan lain. secara aman dan menggunakan ruang memory yang digunakan
sebelumnya untuk dimanfaatkan kepentingan lain.
Sebenarnya tidak hanya objek atau array saja
yang bisa di-reklamasi (istilah untuk penghancuran memory). Suatu siklus objek
yang saling merujuk satu sama lain, tetapi tidak merujuk ke objek yang aktif,
juga akan di-reklamasi oleh Interpreter.
Sebenarnya, garbage collection bukanlah suatu
inovasi baru dari bahasa Java. Ini sebelumnya telah bertahun-tahun digunakan
dalam bahasa pemrograman seperti Lisp. Fakta bahwa kita tidak perlu
lagi merisaukan penghancur setiap objek di memory, adalah keunggulan dari Java
itu sendiri dan ini menunjukkan Java lebih aman dari bug dari bahasa
pemrograman tanpa garbage collection.
Extensible Data Types
Salah satu pendekatan yang menjanjikan untuk
menambahkan object-oriented (OO) fasilitas untuk bahasa fungsional seperti ML
adalah untuk menggeneralisasi datatype yang ada dan konstruksi fungsi menjadi
hirarkis dan extensible, sehingga varian datatype mensimulasikan kelas dan
kasus fungsi mensimulasikan metode. Pendekatan ini memungkinkan datatypes ada
untuk dengan mudah diperluas dengan kedua operasi baru dan varian baru,
menyelesaikan konflik lama antara gaya fungsional dan OO. Namun, desain
sebelumnya didasarkan pada pendekatan ini telah dipaksa untuk menyerah modular
typechecking, membutuhkan seluruh Program pemeriksaan untuk memastikan
keselamatan jenis. Kami menjelaskan ML Extensible (EML), bahasa ML-seperti yang
mendukung hirarkis, datatypes extensible dan fungsi sambil menjaga murni
modular typechecking. Untuk mencapai hasil ini, sistem tipe EML yang
memberlakukan beberapa persyaratan pada datatype dan diperpanjang fungsi, namun
EML masih mampu mengekspresikan idiom fungsional dan OO tradisional. Kami telah
diformalkan versi inti EML dan terbukti suara jenis sistem yang terkait, dan
kami telah mengembangkan prototipe untuk juru bahasa.
Secure Code/Security Code
Hari ini sistem komputer yang terhubung sangat sering terkena
kode yang berasal dari berbagai sumber yang mungkin tidak diketahui. Kode dapat
dilampirkan ke e-mail, yang terkandung dalam dokumen, atau di-download melalui
Internet. Sayangnya, banyak pengguna komputer telah mengalami langsung dampak
dari kode mobile berbahaya, termasuk virus dan worm, yang dapat merusak atau
menghancurkan data dan waktu biaya dan uang.
Mekanisme keamanan yang paling umum memberikan hak kepada
pengguna berdasarkan kredensial logon mereka (biasanya password) dan membatasi
sumber daya (sering direktori dan file) bahwa pengguna diperbolehkan untuk
mengakses. Namun, pendekatan ini gagal untuk mengatasi beberapa masalah:
pengguna mendapatkan kode dari berbagai sumber, beberapa di antaranya mungkin
tidak dapat diandalkan, kode dapat mengandung bug atau kerentanan yang
memungkinkan untuk dimanfaatkan oleh kode berbahaya, dan kode kadang-kadang
melakukan hal-hal bahwa pengguna tidak tahu itu akan dilakukan. Akibatnya,
sistem komputer bisa rusak dan data pribadi dapat bocor ketika pengguna
berhati-hati dan dapat dipercaya menjalankan perangkat lunak berbahaya atau
kesalahan-penuh. Mekanisme sistem operasi keamanan yang paling mengharuskan
setiap potongan kode harus benar-benar dipercaya dalam rangka untuk menjalankan,
kecuali mungkin untuk script pada halaman web. Oleh karena itu, masih ada
kebutuhan untuk mekanisme keamanan yang berlaku secara luas yang memungkinkan
kode yang berasal dari satu sistem komputer untuk mengeksekusi dengan
perlindungan pada sistem yang lain, bahkan ketika tidak ada hubungan
kepercayaan antara sistem.
Tidak ada komentar:
Posting Komentar