Tur jalan kaki di JavaBeans

Sebelumnya 1 2 Halaman 2 Halaman 2 dari 2

Apa itu JavaBeans, dan apa fungsinya

JavaBeans bukanlah produk, program, atau lingkungan pengembangan. Ini adalah paket inti Java ( java.beans) yang dapat digunakan Beans untuk menyediakan fungsionalitas tambahan, dan dokumen ( Spesifikasi JavaBeans ) yang menjelaskan cara menggunakan kelas dan antarmuka dalam java.beanspaket untuk mengimplementasikan "fungsionalitas Kacang." Spesifikasi kelas adalah bagian dari rilis dasar Java 1.1, sehingga tidak ada perangkat lunak tambahan yang harus diinstal untuk menggunakannya. Penambahan Beans membutuhkan sedikit perubahan pada bahasa Jawa itu sendiri, meskipun beberapa API baru dan sangat dibutuhkan telah ditambahkan ke rilis inti untuk mendukung fitur Beans. Membaca spesifikasi dapat menjadi informatif tetapi menenangkan. Untungnya, ini opsional jika Anda sudah memahami bagaimana dan mengapa menggunakan paket JavaBeans. Mungkin Anda sudah memahami Beans dengan membaca serangkaian artikel yang menghibur dan mencerahkan tentang JavaBeans di JavaWorld , misalnya.

JavaBeans mengubah kelas menjadi komponen perangkat lunak dengan menyediakan beberapa fitur baru. Beberapa fitur ini khusus untuk Kacang. Lainnya, seperti serialisasi, dapat diterapkan ke semua kelas, Bean atau lainnya, tetapi sangat penting untuk pemahaman dan penggunaan Beans.

Komponen perangkat lunak memiliki properti , yang merupakan atribut dari objek. Kustomisasi adalah proses mengkonfigurasi Bean untuk tugas tertentu. Skema penanganan acara baru di Java 1.1 dibuat sebagian untuk memudahkan komunikasi antar Beans. Kacang dapat dibedah oleh IDE atau oleh kelas lain melalui proses yang disebut introspeksi . Kacang dapat bertahan (yaitu, serial ) ke dalam byte stream untuk transmisi atau penyimpanan, dan bertahan kacang dapat dikemas ke dalam "file JAR" untuk memudahkan download dan akses. Akhirnya, Kacang telah dirancang untuk beroperasi dengan mudah dengan teknologi komponen lama seperti ActiveX dan LiveConnect, dan berpartisipasi dalam transaksi dengan sistem Broker Permintaan Objek seperti CORBA.

Mari kita lihat masing-masing dari kemampuan ini secara lebih mendalam.

Properti dan kustomisasi

Properti, seperti disebutkan di atas, adalah atribut dari Bean. Properti visual mungkin termasuk warna atau ukuran layar. Properti lain mungkin tidak memiliki representasi visual: BrowserHistory Bean, misalnya, mungkin memiliki properti yang menentukan jumlah maksimum URL untuk disimpan. Beans mengekspos metode penyetel dan pengambil (disebut "metode pengakses") untuk propertinya, yang memungkinkan kelas atau IDE lain untuk memanipulasi statusnya. Proses pengaturan properti Bean pada waktu desain atau runtime disebut kustomisasi .

Pengembang memiliki banyak kendali atas akses dan modifikasi properti Beans. Untuk properti sederhana , pengembang menulis metode yang dipanggil setProperty()dan yang lain dipanggil getProperty().

Di sini Anda akan melihat applet, tetapi untuk beberapa alasan, Anda tidak bisa.

Grafik batang

Misalnya, jika Anda menggunakan browser yang mendukung Java, Anda akan melihat di sebelah kiri applet yang menggunakan kelas kecil bernama BarChart. Ini BarChartadalah bilah berwarna di antara kedua tombol. BarCharthanya kekurangan satu hal untuk menjadi Bean: ia tidak mengimplementasikan antarmuka java.io.Serializable(karena sebagian besar browser belum menangani Java 1.1, sehingga contoh applet akan gagal.)

Dengan pengecualian menjadi Serializable, BarChartadalah Bean sederhana, hanya dengan sedikit metode. Itu telah void setPercent(int pct), yang membanjiri persen persen bagian bawah bar dengan warna merah. Metode ini int getPercent()mengembalikan persentase saat ini yang disimpan di Bean (ini adalah status Bean). The setPercent()Metode juga menyebut repaint()jika berubah persentase, sehingga representasi visual dari objek tetap up-to-date.

Kode applet memanggil setPercent(getPercent()+10)ketika tombol + 10% diklik, menyebabkan BarChartkenaikan persentasenya (jika <100%). Persen adalah contoh properti Bean , dengan metode penyetel dan pengambil yang dinamai sesuai dengan spesifikasi JavaBeans. Saat seri ini berlanjut, kami akan mengubah BarChartperangkat lunak kecil ini menjadi komponen perangkat lunak yang berguna yang dapat dipasang ke berbagai aplikasi.

Nilai properti yang diindeks adalah array. Metode pengakses properti yang diindeks menerima dan mengembalikan array nilai, bukan skalar. Metode pengakses dapat menampilkan pengecualian yang dicentang untuk melaporkan kondisi kesalahan.

Terkadang berguna jika suatu tindakan terjadi ketika properti tertentu dari suatu objek berubah. Properti terikat menyebabkan peristiwa dikirim ke objek lain ketika nilai properti berubah, kemungkinan memungkinkan penerima untuk mengambil beberapa tindakan. Jadi, SpreadSheet Bean mungkin dikonfigurasi untuk memberi tahu PieChart Bean untuk menggambar ulang dirinya sendiri setiap kali data spreadsheet berubah.

Seringkali, nilai properti tertentu bersifat ilegal, berdasarkan kondisi Kacang lainnya. Bean dapat diatur untuk "mendengarkan" properti terbatas dari Kacang lain ini, dan "memveto" perubahan yang tidak disukai. Misalnya, ControlRodArray Bean reaktor nuklir mungkin ingin mengganggu seseorang yang mencoba mengubah status DrainReactorCorePump Bean ke ON jika batang kendali ditarik keluar. (Jangan coba ini di rumah. Mungkin ada salah satu harus menggunakan JavaBeans untuk aplikasi seperti hanya belum.)

Ketika pengembang menghubungkan Beans bersama untuk membuat aplikasi, IDE dapat menampilkan lembar properti yang berisi semua properti Beans dan nilainya saat ini. (Lembar properti adalah kotak dialog yang digunakan untuk menyetel dan / atau melihat properti, seperti yang Anda dapatkan dengan memilih Opsi… pada menu.) Pengembang menyetel properti secara grafis, yang diterjemahkan IDE menjadi panggilan ke metode penyetel Kacang, mengubah status Kacang. Ini menyesuaikan Kacang untuk aplikasi tertentu.

Menggunakan daftar properti tidak selalu merupakan cara terbaik untuk menangani Beans yang disesuaikan. Beberapa Kacang memiliki keadaan yang terlalu rumit untuk dapat dengan mudah dimanipulasi dengan cara ini. Kacang lain akan lebih keren jika ada cara yang lebih intuitif untuk mengaturnya. Bayangkan seorang manajer yang malang yang hanya ingin melihat laporan penjualan, dan harus mencari tahu apa yang harus diketik ke dalam kotak teks "Sumber Data ODBC Jarak Jauh" di lembar properti. Bukankah akan lebih keren jika dia dapat dengan mudah menarik dan melepas ikon DataSource Bean (tentu saja disesuaikan dengan label "Data Penjualan") ke DataConnection Bean, sehingga mengonfigurasinya secara otomatis? Pengembang Beans dapat menyematkan lembar properti ke dalam Bean itu sendiri, dan IDE kemudian menggunakan "penyesuai" ini untuk menyesuaikan Bean.

Kelas yang relevan untuk memanipulasi properti dan kustomisasi ada di dalam java.beanspaket.

Penanganan acara

Semua interaksi antara Beans ini mengandaikan beberapa cara bagi mereka untuk berkomunikasi. JDK 1.1 mendefinisikan model acara baru yang digunakan kelas (bukan hanya Beans!) Untuk berkomunikasi. Bahkan, model ini acara baru telah menemukan jalan ke salah satu paket yang paling banyak digunakan-Jawa: java.awt!

Dalam model peristiwa baru, kelas mendaftarkan minat dalam aktivitas kelas lain melalui antarmuka pendengar . Akibatnya, objek target (pihak yang berkepentingan) memberi tahu objek sumber (objek yang diminati), "Beri tahu saya setiap kali ini dan itu terjadi." Ketika si anu terjadi, objek sumber "menyalakan" kejadian pada target dengan memanggil penangan kejadian target dengan subkelas EventObjectsebagai argumennya.

Acara dapat digunakan untuk mengimplementasikan properti terikat dan dibatasi. Dalam contoh PieChart dan SpreadSheet di atas, PieChart "mencatat" minat dalam setiap perubahan ke properti DataList SpreadSheet (katakanlah) . Ketika SpreadSheet akan mengubah properti DataList , ia meneruskan DataListChangedEvent(subclassed from EventObject), yang menunjukkan apa yang berubah, ke setiap metode penanganan kejadian pendengar yang tertarik. Target ( PieChart) kemudian memeriksa acara tersebut, dan mengambil tindakan yang sesuai.

Contoh reaktor nuklir bekerja serupa; tapi dalam kasus itu, target veto perubahan dengan melemparkan pengecualian. Dengan demikian dunia diselamatkan dari kerusakan radioaktif yang meluas.

The EventObjectkelas dapat diperpanjang untuk membuat acara yang ditetapkan pengguna . Kelas sekarang dapat menentukan dan menggunakan jenis acara baru untuk mengirim pesan satu sama lain. Artinya, Beans yang berjalan di dalam container yang sama dapat berkomunikasi dengan meneruskan pesan. Ini membantu melepaskan dependensi antar objek, yang kita tahu adalah A Very Good Thing.

Peristiwa yang ditentukan pengguna (dan lainnya) diturunkan dari kelas java.util.EventObject.

Introspeksi

Istilah introspeksi yang agak aneh adalah bahasa Java untuk proses menganalisis secara terprogram metode publik dan anggota kelas. Proses ini terkadang juga disebut penemuan . Mekanisme refleksi baru di inti Java, yang dapat membedah sebuah objek dan mengembalikan deskripsi isinya, memungkinkan introspeksi. (Meskipun Java mungkin reflektif, bahkan introspektif, omphaloskepsis masih bukan bagian dari distribusi inti.)

Kami telah menjalankan satu aplikasi dengan kemampuan ini. Di atas, kami menjelaskan IDE yang dapat membuat daftar properti Bean untuk disajikan kepada pengembang. Bagaimana IDE mengetahui properti apa yang dimiliki Bean? IDE menemukan properti Bean dengan salah satu dari dua cara berikut: dengan meminta deskripsi Bean tentang propertinya, atau dengan membedah Bean dengan melakukan introspeksi padanya.

IDE tipikal akan mulai dengan meminta Bean untuk objek BeanInfo, yang antara lain menjelaskan properti Bean. IDE kemudian akan menggunakan objek BeanInfo untuk membuat lembar properti. (Ini mengasumsikan Bean tidak menyediakan penyesuai miliknya sendiri.) Jika Bean tidak tahu cara mengembalikan objek BeanInfo, IDE kemudian melakukan introspeksi Bean, dan memindai daftar metode untuk nama yang dimulai dengan set dan dapatkan . Ini mengasumsikan (berdasarkan konvensi) bahwa metode ini adalah pengakses untuk properti, dan membuat lembar properti baru berdasarkan metode pengakses yang ada dan jenis argumen yang diambil metode tersebut. Jadi, jika metode penemuan IDE seperti setColor(Color), Color getColor(), setSize(Size), dan Size getSize(), maka akan membuat lembar properti dengan sifatWarna dan Ukuran , dan widget yang diketik dengan tepat untuk mengaturnya.

Ini berarti bahwa jika pengembang hanya mengikuti konvensi untuk penamaan metode pengakses, IDE dapat menentukan secara otomatis cara membuat lembar properti penyesuaian untuk komponen.

Mekanisme refleksi yang melakukan introspeksi ada di paket inti bahasa baru java.lang.reflect.

Ketekunan dan pengemasan

Seringkali berguna untuk "membekukan-keringkan" objek dengan mengubah statusnya menjadi gumpalan data untuk dikemas untuk digunakan nanti - atau dikirim melalui jaringan untuk diproses di tempat lain. Proses ini disebut serialisasi dan merupakan fitur baru dari inti Java.

Salah satu penggunaan paling sederhana untuk serialisasi adalah untuk menyimpan status Bean yang disesuaikan, sehingga properti Bean yang baru dibuat dapat disetel dengan benar pada waktu proses.

Juga, serialisasi adalah andalan teknologi komponen, memungkinkan skema pemrosesan terdistribusi seperti CORBA. Jika sebuah objek tidak memiliki informasi secara lokal yang dibutuhkannya untuk melakukan tugasnya, ia dapat mengirim dirinya sendiri ke Request Broker, yang membuat serialisasi objek tersebut dan mengirimkannya ke tempat lain untuk diproses. Di ujung jarak jauh, objek disusun kembali dan operasi yang diminta semula dilakukan. Ini juga merupakan cara untuk mewujudkan load balancing (untuk tugas yang mahal, yaitu: serialisasi dan deserialisasi seringkali tidak murah).

Di mana Anda menyimpan sekelompok Kacang beku-kering yang telah "diasamkan" dengan cara ini? Kenapa, di dalam JAR, tentu saja! Spesifikasi JavaBeans menjelaskan file JAR sebagai file ZIP terstruktur yang berisi beberapa objek berseri, dokumentasi, gambar, file kelas, dan sebagainya, dengan manifes yang menjelaskan apa yang ada di JAR. File JAR, yang berisi banyak file kecil terkompresi, dapat didownload semuanya dalam satu bagian dan didekompresi di sisi klien, membuat pengunduhan applet (misalnya) lebih efisien. (JAR jelas merupakan permainan pada format file tar Unix .)

The java.iomenyediakan paket serialisasi objek. Spesifikasi JavaBeans menjelaskan format file JAR.

Interoperation

Beberapa orang pernah berkata bahwa hal yang menyenangkan tentang standar adalah ada begitu banyak pilihan. Teknologi komponen tidak terkecuali. Ada banyak sistem yang ada berdasarkan OLE (atau inkarnasi terbarunya, ActiveX), OpenDoc, dan LiveConnect. JavaBeans telah dirancang untuk (setidaknya pada akhirnya) beroperasi dengan teknologi komponen lain ini.

Tidak realistis mengharapkan pengembang untuk meninggalkan investasi yang ada di teknologi lain dan menerapkan ulang semuanya di Java. Sejak rilis Java 1.1, kit "jembatan" Beans / ActiveX pertama telah tersedia, memungkinkan pengembang untuk menghubungkan komponen Beans dan ActiveX secara mulus ke dalam aplikasi yang sama. Antarmuka IDL Java, yang memungkinkan kelas Java untuk beroperasi dengan sistem CORBA yang ada, akan keluar tahun ini.

Meskipun Beans / ActiveX bridge dan Java IDL bukan bagian dari distribusi JavaBeans standar, mereka melengkapi kemampuan JavaBeans sebagai teknologi terbuka yang berkekuatan industri untuk perangkat lunak komponen portabel.

Kesimpulan

Kami telah membahas banyak hal. Di artikel ini, Anda telah mempelajari apa itu komponen perangkat lunak dan mengapa mereka berharga. Anda kemudian mempelajari tentang berbagai properti JavaBeans, termasuk properti, kustomisasi, peristiwa, introspeksi, persistensi, pengemasan, dan interoperasi dengan sistem komponen lama.

Di artikel berikutnya dalam seri ini, kami akan membantu Anda mulai menggunakan JavaBeans, dan melihat properti Bean secara mendalam: cara kerjanya, dan cara membuat Beans Anda dapat disesuaikan. Saat kita melanjutkan, kita akan membahas fitur inti Java baru yang memungkinkan Beans. Artikel mendatang dalam seri ini akan mempelajari detail topik yang kita diskusikan bulan ini.

Mark Johnson memiliki gelar BS di bidang Komputer dan Teknik Elektro dari Purdue University (1986). Dia memiliki 15 tahun pengalaman pemrograman dalam C dan dua tahun di C ++, dan merupakan penggemar fanatik pendekatan Pola Desain dalam arsitektur berorientasi objek, komponen perangkat lunak dalam teori, dan JavaBeans dalam praktik. Selama beberapa tahun terakhir, dia bekerja untuk Kodak, Booz-Allen dan Hamilton, dan EDS di Mexico City, mengembangkan aplikasi database Oracle dan Informix untuk Institut Pemilihan Federal Meksiko dan untuk Bea Cukai Meksiko. Dia menghabiskan tahun lalu bekerja di NETdelivery, sebuah startup Internet sekarang di Boulder, CO. Mark adalah programmer Unix yang diwarnai, dan melihat Java sebagai mata rantai yang hilang antara sistem klien desktop yang sekarang ada di mana-mana dan terbuka, terdistribusi, dan back-end perusahaan yang skalabel.Saat ini dia bekerja sebagai desainer dan pengembang untuk Object Products di Fort Collins, CO.

Pelajari lebih lanjut tentang topik ini

  • Perbandingan yang sangat baik antara JavaBeans dan ActiveX dapat ditemukan di cerita sampul JavaWorld Merlin Hughes , "JavaBeans dan ActiveX saling berhadapan"

    //www.javaworld.com/javaworld/jw-03-1997/jw-03-avb-tech.html

  • Sun Microsystems mengelola situs Web untuk JavaBeans. Di situs ini, Anda dapat mengunduh BDK (Beans Developer's Kit) terbaru, membaca Spesifikasi JavaBeans, menjelajahi tutorial online, dan mencari tahu tentang informasi terbaru tentang Beans. //java.sun.com/beans
  • The JavaBeans Advisor , buletin elektronik sesekali yang berisi berita Beans dan tips pengembang, diarsipkan di

    //splash.javasoft.com/beans/Advisor.html

  • The JavaBeans FAQ dikelola oleh Sun adalah di

    //splash.javasoft.com/beans/FAQ.html

  • Terakhir, omphaloskepsis adalah bentuk meditasi introspektif yang melibatkan kontemplasi intens pada pusar. Kunjungi situs Word A Day, dan isi pidato harian Anda dengan referensi yang tidak jelas! //www.wordsmith.org/awad/index.html

Cerita ini, "A walking tour of JavaBeans", awalnya diterbitkan oleh JavaWorld.