Selesaikan masalah nyata dengan aglets, sejenis agen seluler

Under the Hood bulan ini adalah yang kedua dari seri dua bagian artikel tentang aglets, sebuah inovasi yang dikembangkan oleh IBM Jepang. Bulan lalu saya menjelaskan cara kerja aglet, bulan ini saya akan membahas cara-cara di mana teknologi agen seluler, seperti aglet, dapat masuk ke dalam kotak alat pengembang Java.

Aglets: Penyegar

Aglet adalah agen perangkat lunak otonom berbasis Java. (Untuk informasi lebih lanjut, lihat penjelasan Bret Sommers tentang agen.) Seperti yang digunakan di sini, agen perangkat lunak adalah program yang dapat menghentikan dirinya sendiri, mengirimkan dirinya sendiri ke komputer lain di jaringan, dan melanjutkan eksekusi di komputer baru. Fitur utama dari jenis agen perangkat lunak ini adalah kode dan statusnya bersifat seluler.

Aglet bersifat otonom karena begitu Anda memulainya, mereka memutuskan ke mana mereka akan pergi dan apa yang akan mereka lakukan. Mereka dapat menerima permintaan dari sumber eksternal, tetapi masing-masing aglet memutuskan apakah akan mematuhi permintaan eksternal atau tidak. Selain itu, aglet dapat memutuskan untuk melakukan tindakan, seperti melakukan perjalanan melintasi jaringan ke komputer baru, terlepas dari permintaan eksternal apa pun.

Pada intinya, aglet adalah mobile

Orang-orang menggunakan istilah "agen perangkat lunak" untuk berbicara lebih dari sekadar agen seluler. Dua arti lain dari istilah ini adalah agen dan perwakilan cerdas . Agen cerdas diberkahi sampai tingkat tertentu dengan kecerdasan buatan. Mereka mungkin mobile dan juga cerdas, tetapi mereka tidak harus mobile. Perwakilan adalah perangkat lunak yang mewakili Anda, seperti pengacara atau asisten. Perwakilan mendukung Anda saat Anda tidak ada. Bergantung pada instruksi Anda kepada mereka, perwakilan dapat membuat keputusan atau bahkan mencapai kesepakatan atas nama Anda. Agen perwakilan bisa mobile atau cerdas atau keduanya, tetapi mereka tidak memiliki untuk menjadi mobile.

Aglets berpotensi diberkahi dengan kecerdasan buatan atau berfungsi sebagai perwakilan, tetapi mereka juga tidak perlu demikian. Pada dasarnya, mereka adalah agen seluler: program Java yang dapat menghentikan eksekusi, melakukan perjalanan melintasi jaringan (dengan kode dan status yang tepat), dan melanjutkan eksekusi di host lain.

Jika Anda membangunnya, mereka akan datang: Menggunakan agen seluler

Setelah infrastruktur host agen seluler dibuat, agen seluler pasti akan dibangun untuk mengisi infrastruktur. Tapi apa yang akan dilakukan agen seluler tersebut? Apa yang membenarkan pembangunan infrastruktur sejak awal?

Bayangkan sejenak bahwa infrastruktur host agen seluler yang tersebar luas telah dibangun di jaringan di dekat Anda. Bagaimana Anda bisa menggunakannya?

Ada banyak aplikasi yang diklaim cocok untuk agen seluler. Sebagian besar aplikasi ini cenderung melibatkan pencarian informasi atas nama pengguna dan mungkin melakukan beberapa jenis transaksi ketika informasi yang sesuai ditemukan.

Berikut adalah daftar dari beberapa aplikasi yang lebih umum disebutkan untuk agen seluler:

Pengumpulan data dari banyak tempat

Salah satu perbedaan utama antara kode seluler, seperti applet, dan agen seluler adalah rencana perjalanan. Sementara kode seluler biasanya berjalan hanya dari titik A ke titik B, agen seluler memiliki rencana perjalanan dan dapat melakukan perjalanan secara berurutan ke banyak situs. Oleh karena itu, salah satu aplikasi alami agen seluler adalah mengumpulkan informasi yang tersebar di banyak komputer yang terhubung ke jaringan.

Contoh dari aplikasi semacam ini adalah alat cadangan jaringan yang secara berkala harus melihat setiap disk yang terpasang ke setiap komputer yang terhubung ke jaringan. Di sini, agen seluler dapat menjelajahi jaringan, mengumpulkan informasi tentang status cadangan setiap disk. Kemudian dapat kembali ke titik asalnya dan membuat laporan.

Pencarian dan pemfilteran

Mengingat semakin banyaknya informasi yang tersedia di Internet dan jaringan lain, aktivitas mengumpulkan informasi dari jaringan sering kali sama dengan mencari melalui sejumlah besar data untuk beberapa informasi yang relevan. Memfilter informasi yang tidak relevan bisa menjadi proses yang sangat memakan waktu dan membuat frustrasi. Atas nama pengguna, agen seluler dapat mengunjungi banyak situs, menelusuri informasi yang tersedia di setiap situs, dan membuat indeks tautan ke bagian informasi yang cocok dengan kriteria penelusuran.

Pencarian dan pemfilteran menunjukkan atribut yang umum untuk banyak aplikasi potensial agen seluler: pengetahuan tentang preferensi pengguna. Meskipun agen seluler tidak harus "mewakili" atau "cerdas", mereka sering kali demikian. Di sini, seorang agen diberi pengetahuan tentang preferensi pengguna dalam hal kriteria pencarian dan rencana perjalanan, dan dikirim ke jaringan atas nama pengguna. Ini menyaring sejumlah besar data untuk potongan-potongan informasi yang menarik bagi pengguna. Pada titik tertentu, ia kembali ke pengguna untuk melaporkan temuannya.

Monitoring

Terkadang informasi tidak tersebar di seluruh ruang (pada disk dari banyak komputer berbeda yang terhubung ke jaringan yang sama), tetapi melintasi waktu. Informasi baru terus-menerus diproduksi dan dipublikasikan di jaringan. Agen dapat dikirim keluar untuk menunggu jenis informasi tertentu tersedia.

Misalnya, seorang agen dapat pergi ke host pasar saham, menunggu saham tertentu mencapai harga tertentu, lalu membeli sebagian atas nama penggunanya. Contoh lainnya adalah pengumpulan berita yang dipersonalisasi. Seorang agen dapat memantau berbagai sumber berita untuk jenis informasi tertentu yang menarik bagi penggunanya, kemudian melaporkan kembali saat informasi yang relevan telah tersedia.

Aplikasi semacam ini menyoroti sifat asinkron dari agen seluler. Jika Anda mengirimkan agen, Anda tidak perlu duduk dan menunggu hasil pengumpulan informasinya. Anda dapat memprogram agen untuk menunggu selama diperlukan agar informasi tertentu tersedia. Selain itu, Anda tidak perlu tetap terhubung ke jaringan sampai agen kembali. Agen dapat menunggu hingga Anda tersambung kembali ke jaringan sebelum membuat laporannya kepada Anda.

Penyebaran informasi yang ditargetkan

Penggunaan potensial lain dari agen seluler adalah untuk mendistribusikan berita atau iklan interaktif kepada pihak yang berkepentingan. Sayangnya, ini berarti agen seluler, seperti email, dapat digunakan untuk spam - penyebaran informasi tanpa pandang bulu, biasanya iklan. (Kemungkinan akan ada pasar untuk agen yang memfilter spam dari agen seluler yang masuk.)

Bernegosiasi

Selain mencari database dan file, agen dapat memperoleh informasi dengan berinteraksi dengan agen lain. Jika, misalnya, Anda ingin menjadwalkan rapat dengan beberapa orang lain, Anda dapat mengirim agen seluler untuk berinteraksi dengan agen perwakilan dari setiap orang yang ingin Anda undang ke rapat. Agen dapat bernegosiasi dan menetapkan waktu pertemuan.

Dalam hal ini, setiap agen berisi informasi tentang jadwal penggunanya. Untuk menyetujui waktu pertemuan, agen bertukar informasi.

Barter

Perdagangan elektronik juga cocok untuk teknologi agen seluler. Agen seluler dapat berbelanja untuk Anda, termasuk membuat pesanan dan bahkan berpotensi membayar. Misalnya, jika Anda ingin terbang dari Silicon Valley ke sebuah pulau di Pasifik Selatan, agen dapat mengunjungi database jadwal penerbangan dan harga berbagai maskapai penerbangan, menemukan harga dan waktu terbaik, membuat reservasi untuk Anda, dan membayar dengan kredit Anda nomor kartu.

Perdagangan elektronik juga dapat terjadi antar agen. Misalnya, mungkin ada agen tuan rumah yang didedikasikan untuk pembelian dan penjualan mobil. Jika Anda ingin membeli mobil, Anda bisa memberi tahu agen tentang preferensi Anda, termasuk kisaran harga dan kemungkinan strategi negosiasi. Anda akan mengirim agen Anda ke host yang berdedikasi, tempat agen tersebut akan berbaur dan tawar-menawar dengan agen yang ingin menjual mobil.

Jika kemungkinan kecocokan ditemukan, agen Anda dapat melapor kembali kepada Anda, dan Anda dapat menghubungi satu sama lain secara langsung untuk membuat pengaturan akhir. Alternatifnya, agen Anda berpotensi mewujudkan kesepakatan atas nama Anda. Jika peluangnya bagus, agen Anda mungkin hanya memiliki beberapa mikrodetik untuk bertindak sebelum agen orang lain membeli mobil.

Proses paralel

Mengingat bahwa agen seluler dapat berpindah dari satu node ke node lain dan dapat menelurkan subagen, salah satu potensi penggunaan teknologi agen seluler adalah sebagai cara untuk mengelola pekerjaan pemrosesan paralel. Jika suatu komputasi memerlukan begitu banyak waktu CPU sehingga memerlukan pemutusan di beberapa prosesor, infrastruktur host agen seluler dapat menjadi cara mudah untuk mengeluarkan proses tersebut.

Hiburan

Salah satu contoh terakhir dari aplikasi potensial untuk agen seluler adalah hiburan. Dalam skenario ini, agen mewakili pemain game. Para agen bersaing satu sama lain atas nama para pemain. Setiap pemain akan memprogram agen dengan strategi, lalu mengirim agen tersebut ke host game. Jika host permainan dijalankan di komputer di Las Vegas, maka mungkin agen dapat bermain dengan uang sungguhan.

Tantangan keamanan

Meskipun tidak ada kekurangan aplikasi potensial untuk agen seluler, teknologinya menimbulkan beberapa kekhawatiran - mungkin yang terbesar adalah keamanan. Dengan infrastruktur yang mapan dari host agen seluler yang memberikan akses agen ke sumber daya lokal, penulis virus dan programer nakal lainnya dapat bersenang-senang.

Meskipun keamanan host adalah perhatian utama, kemungkinan besar ini adalah masalah yang bisa dipecahkan. Menggunakan mekanisme keamanan yang ada, seperti yang ditawarkan oleh Java, seharusnya dimungkinkan untuk mencapai tingkat keamanan yang dapat diterima untuk melindungi host dari agen jahat.

Sisi lain dari keamanan agen seluler, yang mungkin tidak mudah dipecahkan, adalah melindungi agen dari host jahat. Jika Anda berencana untuk mengirim agen yang memiliki nomor kartu kredit Anda atau beberapa bentuk e-cash yang tertanam di negara bagian mereka, Anda perlu khawatir tentang pencopet. Karena host mengunggah file kelas dan status untuk aglet Anda, mereka (atau siapa pun yang mengendus jaringan selama transit) berpotensi membaca informasi pribadi atau bahkan mengubah kode dan status aglet Anda.

Mengapa agen seluler?

Dengan asumsi masalah keamanan di sekitar agen seluler dapat ditangani secara memadai, mengapa Anda memilih solusi agen seluler daripada model klien / server yang lebih tradisional? Mengapa Anda memilih agen seluler daripada kode seluler, seperti applet atau servlet?

Di dunia di mana Anda telah membuktikan model pemrosesan terdistribusi, termasuk kode seluler, apa gunanya agen seluler?

Satu perspektif dikemukakan oleh Harrison, Chess, dan Kershenbaum dalam makalah penelitian IBM mereka yang berjudul "Agen Seluler: Apakah mereka ide yang bagus?" (Lihat Sumberdaya di bawah.) Berikut adalah kutipan singkat dari makalah mereka:

Meskipun tidak ada keuntungan individu dari agen seluler ... yang sangat kuat, kami percaya bahwa keuntungan agregat dari agen seluler sangat kuat, karena:

Sebuah. Mereka dapat menyediakan kerangka kerja yang meresap, terbuka, dan umum untuk pengembangan dan personalisasi layanan jaringan.

b. Meskipun alternatif untuk agen seluler dapat dikembangkan untuk setiap keuntungan individu, tidak ada alternatif tunggal untuk semua fungsi yang didukung oleh kerangka agen seluler.

Dengan kata lain, inti dari agen seluler mungkin bukanlah aplikasi potensial individu, yang masing-masing dapat diimplementasikan secara alternatif menggunakan skema pemrosesan terdistribusi yang lebih tradisional. Sebaliknya, intinya mungkin agen seluler memiliki begitu banyak aplikasi potensial. Mereka memberi Anda satu cara yang fleksibel untuk menerapkan dan menuai manfaat dari pemrosesan terdistribusi tradisional, klien / server, dan model kode seluler.

Tingkat abstraksi yang lebih tinggi

Perspektif lain datang dari Danny Lange, penemu aglet, yang mengatakan ini tentang aglets:

Ketika saya menemukan aglet, saya sedang mencari abstraksi yang lebih tinggi untuk komputasi jaringan. Bagi saya, aglet adalah jawaban atas beberapa pertanyaan berusia 15 tahun yang saya miliki: Apa yang muncul setelah pemrograman berorientasi objek? Apa perubahan paradigma selanjutnya?

Aglet adalah abstraksi kunci saya untuk "komputasi jaringan"; bukan applet, bukan servlet, bukan RPC, tapi aglet. Aglet memungkinkan saya untuk berpikir dalam istilah "komputer jaringan"; bukan NC, tetapi semua NC, PC, workstation, dan mainframe dalam satu ruang. Saya tidak peduli di mana aglet berjalan, juga tidak peduli aglet. Seperti yang kami katakan tentang aglet: "Buat sekali, pergi ke mana saja".

Jadi, agen seluler memberikan cara untuk berpikir tentang pemecahan masalah perangkat lunak dalam lingkungan jaringan yang lebih cocok secara alami dengan dunia nyata. Di dunia nyata, orang dan objek berpindah dari satu tempat ke tempat lain. Jika Anda ingin menyelesaikan beberapa pekerjaan, terkadang Anda menelepon, terkadang mengirim asisten ke tempat kerja, dan terkadang Anda pergi sendiri.

Pemikiran penutup: Agen berorientasi objek dan seluler

Pemrograman berorientasi objek mewakili tingkat abstraksi yang lebih tinggi daripada pemrograman prosedural. Pendukung awal pemrograman berorientasi objek berjanji bahwa tingkat abstraksi yang lebih tinggi ini akan membuat pemrogram lebih produktif, kode lebih mudah dipahami dan dipelihara, dan memungkinkan alat pengembangan yang lebih baik. Meskipun pendapat dapat bervariasi sejauh mana janji-janji ini telah dipenuhi, sebagian besar, komunitas pengembangan perangkat lunak telah menganut pendekatan berorientasi objek.

Agen seluler mungkin hanya mewakili langkah lain dalam evolusi paradigma berorientasi objek. Aglets adalah objek Java yang dapat berpindah secara mandiri dari satu host ke host lain. Seperti objek tradisional, aglet memiliki status, perilaku, dan identitas. Tidak seperti benda tradisional, bagaimanapun, aglet juga memiliki lokasi .

Bulan depan

Bulan depan akan menjadi artikel terakhir dalam seri panjang saya yang mencakup bytecode Java. Ini akan membahas berbagai cara mesin virtual Java memanggil metode.