JMS

Posting yang tak sempat terkirim, kirim saja deh :p, maaf kalau isinya ada yang salah.

JMS atau Java Message Service adalah sebuah Java API yang menyediakan fungsi kepada aplikasi untuk membuat, mengirim dan menerima pesan. Java API, yang didesain oleh Sun dan beberapa perusahaan partner, mendefinisikan beberapa interface umum dan semantik yang menyediakan program berbahasa Java untuk komunikasi dengan implementasi messaging lainnya.

JMS API ini meminimalisir konsep yang harus dipelajari oleh programmer untuk menggunakan messaging namun menyediakan cukup fitur-fitur untuk aplikasi messaging yang rumit. JMS API ini menyediakan komunikasi yang tidak hanya loosely coupled namun juga:
-    Asynchronous. Penyedia JMS dapat mengirim pesan kepada client saat pesan itu tiba sehingga client tidak perlu meminta pesan untuk mendapatkannya.
-    Reliable. JMS API dapat meyakinkan bahwa pesan dikirim sekali dan hanya sekali.

Spesifikasi JMS dapat dilihat di <a href=”http://java.sun.com/products/jms/”>sini</a>.

p2p

p2p

Sebelum adanya JMS API, kebanyakan proses messaging mendukung salah satu pendekatan point-to-point atau publish/subscribe. Spesifikasi JMS menyediakan domain yang berbeda untuk setiap pendekatan tersebut dan mendefinisikannya untuk setiap domain. JMS provider standalone dapat mengimplementasikan satu atau keduanya. Sedangkan J2EE provider dapat menyediakan keduanya. Pada kenyataannya implementasi JMS API mendukung baik point-to-point ataupun publish/subscribe, dan JMS client menggunakan kedua domain tersebut dalam aplikasi yang sama. Dengan cara ini JMS API memperluas kekuatannya dan fleksibilitasnya sebagai produk messaging.

Untuk membentuk suatu aplikasi JMS, terdapat model programming JMS API dengan bagian sebagai berikut:
-    Administer object, objek ini ada dua yaitu connection factories dan destinations. Connection factories adalah objek yang digunakan untuk membuat koneksi dengan provider. Connection factory ini mengenkapsulasi beberapa konfigurasi koneksi yang telah didefinisikan oleh administrator. Sepasang connection factories sudah terkonfigurasi sebelumnya dalam J2EE SDK dan dapat diakses ketika awal servis dijalankan. Connection factory merupakan instan dari QueueConnectionFactory atau TopicConnectionFactory interface. Destinations adalah objek yang digunakan client untuk menentukan target pesan bagi yang mengirim dan sumber pesan bagi yang memerlukan pesan.
-    Connection membungkus koneksi virtual dengan penyedia JMS (JMS provider). Koneksi dapat merepresentasikan soket TCP/IP terbuka antara client dan penyedia servis daemon. Koneksi digunakan untuk membuat satu atau lebih session. Seperti connection factories, connection memiliki dua bentuk yaitu implementasi QueueConnection atau TopicConnection.
-    Session adalah conteks untuk membuat dan mendapatkan pesan. Session didapatkan dari connection yang sudah ada.
-    Message producer adalah objek yang dibuat oleh session dan digunakan untuk mengirim pesan ke destination. Untuk point-to-point bentuk implementasi producernya adalah Queue-Sender interface. Untuk publish/subscrib adalah TopicPublisher interface.
-    Message consumer adalah objek yang digunakan oleh session dan digunakan untuk mengirim pesan ke tujuan. Message consumer ini menyediakan kepada JMS client untuk mendaftarkan dirinya ke interest pada destination dengan penyedia JMS. Penyedia JMS mengelola pengiriman pesan dari destination ke consumer yang terdaftar pada destination itu.
-    Message adalah format yang dikirim pada JMS.

Consensus dalam Sistem Terdistribusi

Consensus merupakan penentuan nilai. Penentuan ini dilakukan dari berbagai entitas atau dalam kasus ini dari berbagai proses. Setiap proses memiliki nilai yang ia calonkan.  Pada akhirnya diharapkan semua proses menentukan nilai yang sama dari kumpulan calon tersebut.

image

Consesnsus memiliki dua primitive: propose dan decide. Setiap proses memiliki nilai awal yang mereka ajukan untuk persetujuan bersama, melalui primitive propose.

Nilai yang diajukan hanya diketahui proses itu sendiri dan pengajuan bersifat lokal. Pengajuan ini memicu suatu kejadian broadcast sehingga semua proses bertukar nilai untuk pada akhirnya mencapai kesepakatan. Semua proses yang berjalan harus menentukan satu nilai kesepakatan melalui primitive decide. Nilai ini harus merupakan salah satu dari nilai yang diajukan.

Ada dua algoritma stop-fail: Algoritma pertama menggunakan langkah komunikasi yang sedikit dengan pesan yang banyak. Sedangkan yang kedua sebaliknya, pesannya sedikit namun langkah komunikasinya banyak.

Algoritma consensus yang pertama, Algoritma 5.1, yang dinamakan Flooding Consensus menggunakan abstraksi komunikasi broadcast usaha-terbaik (best-effort broadcast communication abstraction). Ide dari algoritma ini adalah sebagai berikut. Proses-proses yang ada mengeksekusi ronde-ronde secara sekuensial. Setiap proses mengelola himpunan nilai-nilai yang diajukan yang telah ia liat, dan himpunan ini akan terus augmentasikan dari ronde ke ronde. Pada setiap ronde, setiap proses menyebarkan himpunannya ke semua proses menggunakan abstraksi komunikasi broadcast usaha-terbaik. Dengan kata lain proses membanjiri system dengan himpunan proposal yang telah ia liat pada ronde sebelumnya. Ketika proses menerima himpunan proposal dari proses lain, himpunan tersebut akan digabung dengan himpunan miliknya. Sehingga pada setiap ronde, setiap proses mengkalkulasi union dari semua himpunan yang pernah ia terima.

image 

Algoritma 5.2. disebut “Hierarchical Consensus” adalah alternative untuk menerapkan regular consensus. Algoritma ini menarik karena menggunakan pesan yang sedikit dibanding algoritma “Flooding Consensus” dan membiarkan satu proses untuk menentukan sebelum menukar pesan dengan proses yang lain (0-latency). Namun, untuk mencapai keputusan global, untuk setiap proses yang berjalan yang menentukan, algoritma membutuhkan langkah komunikasi N, bahkan dalam situasi tanpa failure. Algoritma 5.2 cukup jika consensus digunakan sebagai implementasi servis oleh himpunan proses server dimana klien cukup puas untuk mendapatkan nilai secepat mungkin, bahkan jika server-server belum menentukan nilai.

image

Selamat Membaca! Semangat bagi yang menempuh ujian :D

Sumber:

Introduction to Reliable Distributed Programming by Rachid Guerraoui dan Luís Rodrigues

Writing from Windows Live Writer

Akhir-akhir ini saya keranjingan untuk meng-update windows vista saya. Entah mengapa kalau tidak mengecek update tiap minggu, rasanya kurang. Ketika pada suatu hari, saya menemukan update optional untuk Windows Live. Dengan rasa penasaran saya mencoba menginstall update ini.

Ada beberapa aplikasi yang dibundle dalam installer Windows Live ini seperti Windows Live Messenger, Windows Live Mail, Windows Live Movie Maker Beta, dan lain-lain. Saya hanya menginstall aplikasi yang kira-kira saya butuh saja. Aplikasi yang saya install adalah Windows Live Movie Maker Beta, Windows Live Gallery, dan Windows Live Writer.

Aplikasi yang terakhir saya sebutkan cukup baik menurut saya. Aplikasi ini dapat menjadi interface menuliskan blog untuk beberapa blog umum seperti wordpress dan windows live blog. Saya menggunakannya untuk blog wordpress.

Untuk aplikasi desktop, writer ini dapat diandalkan. Kita dapat melihat preview meskipun tidak terkoneksi ke internet. Fitur-fiturnya sama seperti wordpress, kita cukup pilih di bagian kanan layar.

image

Dan jika kita pilih tab Preview pada kiri bawah layar maka akan menjadi:

image

Selamat mencoba!

Tilip (2)

Setelah lama menelantari blog ini, saya ingin menyelesaikan janji saya untuk menyelesaikan tutorial eclipse sebelumnya. Kali ini saya akan membahas mengenai teknik source. Apakah itu teknik source? Teknik source adalah segala teknik yang berhubungan dengan pembuatan source code pada program. Contoh teknik ini adalah seperti pembuatan getter dan setter, atau overide method dari kelas bapaknya. Perbedaan dengan refactoring adalah source code tidak berfungsi untuk merubah sesuatu yang sudah kita tuliskan sebelumnya.

Untuk menggunakan teknik source, kita dapat membuka ‘Source’ pada menu bar eclipse kemudian memilih salah satu teknik yang sudah disediakan. Misalkan kita memiliki source seperti ini:

keadaan awal

keadaan awal

Dan kita ingin membuat method getter dan setter secara otomatis, maka kita cukup menekan alt+shift+s, kemudian muncul dialog menu. Di dialog ini akan ada teknik source yang bisa kita gunakan. Untuk membuat getter setter  tekan r:

klik kanan, ada beberapa pilihan untuk teknik source

klik kanan, ada beberapa pilihan untuk teknik source

Akan muncul dialog box seperti ini:

dialog box setter and getter

dialog box setter and getter

Ada beberapa fitur yang disediakan:

  • Kita bisa memilih field apa saja yang kita ingin buat untuk getter dan setter.
  • Kita bisa membuat setter untuk field final.
  • Kita bisa menentukan tempat di buatnya getter dan setter serta urutannya.

Dan tadaaaa.. jadi deh :D

Tadaaaaaaaa...

Tadaaaaaaaa...

Yah sekian saja, sekarang tak ada janji untuk buat tutorial lagi :D . See ya..

Tilip (1)

Hai, selamat datang di Tilip alias Tips Eclipse, hehe. Disini saya akan mencontohkan trik berguna bagi pengguna IDE Eclipse, oiya saya menggunakan Eclipse Ganymede alias Eclipse terbaru, hehe. Trik tersebut adalah:

Refactor Nama

Pernahkah anda membuat sebuah field atau class pada suatu source, dan tiba-tiba di tengah perjalanan setelahnya ingin anda ganti namanya? Dan anda malas untuk menggantinya satu-satu di tempat lain yang mengaksesnya? Atau anda ingin mengganti nama sebuah fungsi yang sudah dipakai dimana-mana? Santai saja kawan karena di Eclipse anda hanya perlu menekan shortcut alt+shift+R!   Setelah memencet Enter, akan ada sebuah proses yang merubah semua source yang menggunakan nama tadi.

Misalkan kita ingin merubah nama Kelas Mazer menjadi MazerChange.

1. Caranya cukup letakkan kursor di nama yang ingin di ubah,

2. kemudian ketik shortcut alt+shift+R.

3. Ubah namanya.

4. Setelah anda merubah namanya jangan lupa ketik Enter, wajib, kalau tidak tanggung sendiri akibatnya. Hehe. Simpel dan cepat!

Banyak teknik refactor lain dalam Eclipse (sampai memindahkan suatu method), anda cukup menekan shortcut alt+shift+T, atau mengakses menu refactor pada menu atas.

Tilip selanjutnya : Teknik Source.

Follow

Get every new post delivered to your Inbox.