<$BlogRSDUrl$>

Tuesday, March 09, 2004

Javaassist

Artikel ke 2 dan artikel ke 3 tentang projek Javaassist. Pun fening baca kedua2 artikel, tapi sedikit sebanyak dpt la idea yg nak disampaikan. Dpd apa yg saya faham, kedua2 artikel ini tidak memberi kesan yg baru utk saya. Saya akan capai kesan spt dlm artikel ini menggunakan AOP implementation spt AspectJ.

Artikel semalam, iaitu tentang Javaassist yg pertama adalah lebih baik dan mampu complement apa yg AOP kurang sesuai.

Idea saya gini:

Step 1: utk sesuatu module, hasilkan object model utk module berkenaan yg mengandungi data dan kelakuan. Guna code generator, tak kira la sape punya. Orang lain punya pun boleh spt AndroMDA. Utk saya, saya guna code gen saya utk jana semua data class module berkenaan. Maka, semua data dah disokong oleh class yg dijana.

Step 2: utk sokong semua kelakuan yg khusus kpd module tersebut, guna Javaassist utk 'gam'kan method2/kelakuan2 kpd data class yg telah dijanakan. Ini menjadikan class tersebut bukan lagi data class, menjadikan ia lebih 'wholesome' atau seimbang. Maka, suka la OO purist/guru spt Martin Fowler :D

Step 3: utk sokong semua kelakuan yg merupakan aspek merangkumi keseluruhan application spt access rights, caching, logging, personalize menu, dan macam2 lagi, guna la AOP yg di'gam' pada kedua2 jenis method iaitu method get/set data dan method kelakuan khusus.

Semua usaha 'gam' ini boleh dilakukan dgn begitu mudah sekali. Masalahnya ialah, dgn kuasa yg hebat, datang sekali tanggungjawab yg besau. Perlu amat berhati2 menggunakan power dasat ini.

Saya yakin, saya dah jumpa the missing link. Masa hasilkan code gen dulu, memang syok krn banyak yg digenerate dgn cun nye. Tapi, masih kantul apabila nak tambah pelbagai kelakuan. Bila berjinak2 dgn AOP, merasa seronok krn boleh tambah pelbagai kelakuan pada method2 get/set dlm data class. Tapi masih kantul krn kelakuan khusus susah dimasukkan ke dlm class. Memasukkannya melalui code generator tu boleh, tapi agak terhad. Dgn keupayaan menambah pelbagai method kpd mana2 class dgn mudah dan transparentnya, maka, hubungan yg terputus ini, rasanya dah dihubungkan.

Yang tinggal, ialah mencubanya, dgn sebenar2 cubaan dan mencari kelemahan yg mungkin ada, serta mendapatkan best practice dlm menggunakannya.

Comments: Post a Comment

This page is powered by Blogger. Isn't yours?