<$BlogRSDUrl$>

Thursday, February 26, 2004

Semalam baru habis satu round baca manual spring. Belum puas hati lagi krn ianya agak kompleks, jadi kena baca lagi beberapa round. Satu bhgn yg menarik perhatian saya ialah aop mereka. Setelah mencuba AspectWerkz ver 0.8, AspectJ dan baca tentang aop spring, nampaknya ketiga2nya ada cara aop yg berbeza.

Dlm AspectWerkz ver 0.8, kalau tak silap, pointcut/jointpoint kita di declare dlm xml file. Dlm AspectJ, pointcut/jointpoint/aspect kita berada DALAM java file tapi bentuk sintaks yg berbeza. Dlm spring plak, pointcut/jointpoint adalah java class yg implement interface2 yg mewakili pointcut tersebut. Kiranya pure java la. Tak de sintaks baru.

Menarik tapi kalau kena mahirkan ketiga2 aop implementation ni, takut mudah terkeliru! Elok mahir satu je la dulu. Nampaknya, setakat hari ini, AOP the concept adalah 'agak' standard, tapi AOP the implementation adalah berbeza2 mengikut cita rasa developer depa.

(0) comments

Wednesday, February 25, 2004

Saya masih mengodek2 webwork dlm proses mengharungi tahap 2, utk digunakan dlm tutorial webwork bhgn 4. Semakin menarik. Rasanya saya akan updatekan forum.zip saya tu. Tapi, sayakan sertakan semua yg diperlukan utk runkannya. Masalahnya ia agak besau. Mencecah lebih dpd 3MB.

Stay tuned.

(0) comments

Dah baca 3/4 dpd artikel tentang keupayaan 'generic' dlm jdk ver 1.5. OK gak. Hanya, adakah kelebihannya mengatasi kelemahannya, antaranya bertambah la kompleks rupa code java tersebut. Hmmmmmm......

Satu bhgn yg agak mengelirukan saya ialah bhgn generic methods, ms 8, iaitu declaration interface Collection menggunakan cara generic methods. Katakanlah tidak ada dan ditukar menjadi hanya . Macam mana kita nak tahu hubungan antara E dgn T????? Keeee, ni suatu kemestian?

Kalau ada sesiapa yg faham dan sudi menerangkannya, harap dpt email kat saya di hamdimy@mail.com. Terima kasih.


(0) comments

Tuesday, February 24, 2004

Whoops! Baru checkout website sap db. Rupa2nya, depa dah bergabung dgn mysql! Business model pun sama gak. Lesen GPL utk yg free. Kalau tak nak kena GPLkan application kita, kena beli yg komersial.

(0) comments

Firebird, atau lebih dikenali suatu ketika dulu sebagai Interbase RDBMS, telah mancapai version 1.5. Perbincangan tentangnya ada di theserverside

Banyak juga rdbms yg free dan agak power serta serta sesuai utk Java. Setakat ini:
1. Mysql
2. Postgresql
3. Hypersonic
4. Firebird
5. SAP DB

Apa lagi yek?

(0) comments

Terjumpa satu link menarik yg ada ebook dlm pdf utk java dan python. Buku2 ini nampaknya amat sesuai utk pelajar yg baru bukan shj dgn Java dan Python, tapi juga dgn programming dlm OOP. Harap dpt sebarkan.

(0) comments

Thursday, February 19, 2004

Webwork Bhgn 3
Bhgn ini hanya utk paparkan satu page bertajuk "Senarai Topik" menggunakan webwork, dpd tomcat, itu je. Isi2 seterusnya dlm bhgn 4 nanti, insyaAllah. Tapi, sebelum semua itu, saya tunjukkan satu cara utk sediakan environment utk hasilkan file war yg diperlukan oleh tomcat.

War dan Ear (Perang dan Telinga) (kahkahkah!)
Dlm J2EE, file web application yg standard ialah file dgn extension sama ada .war atau .ear. File .ear ini lebih khusus utk enterprise application yg mempunyai bukan shj servlet dan jsp, tapi juga EJB. File .war pula lebih kpd web application TANPA EJB. Dlm keadaan sekarang ini, saya akan hasilkan satu web based application tanpa ejb utk forum ini.

Satu cara yg agak leceh diperingkat permulaan, tapi lepas tu senang ialah dgn menggunakan Apache Ant iaitu satu tool macam make. Selain itu, elok di standardize kan dir structure semasa development.

Apache Ant Dan Dir Structure
Ant version yg saya guna ialah ver 1.5.2 yg boleh diperolehi di arkib apache jakarta ant. Reka bentuk dir structure spt berikut:
d:\forum

Saya guna dir d. Terpulanglah nak pakai dir apa pun. Buat 2 dir dlm dir forum tadi, iaitu dir apps dan common. Buat dir lib dlm dir common. Buat dir development dlm dir lib. Buat dir runtime dlm dir lib juga. Rupa dir structure nye spt berikut:


Untuk memudahkan kerje, saya dah simpan dir structure tersebut dlm file zip ini. Unzipkan file zip ini ke c:\ atau pun ke d:
Seterusnya, unzipkan file ant ver 1.5.2 (download kalau belum) ke dir development. Dan copy semua file .jar yg ada dlm webwork.war, dlm dir web-inf\lib dan copy ke dlm dir common\lib\runtime

Ubah file batch env.bat dlm dir forum supaya isinya mengikut kesesuaian.

env.bat
set JAVA_HOME=C:\j2sdk1.4.2
set ANT_HOME=d:\forum\common\lib\development\apache-ant-1.5.2
set PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin


File utama utk ant ialah build.xml yg terdapat dlm dir forum\apps. Utk compile, buka satu dos window atau yg sewaktu dgnnya. Pi ke dir forum ini. Run env.bat utk sediakan environment. Pi ke subdir apps dan type ant. Sekira semuanya ok, ant akan compile semua java file yg ada. 2 subdir yg baru, build dan assemble diwujudkan oleh ant dan satu file, forum.war, dijanakan dlm dir assemble\forum\war.

Copy file forum.war ini ke dlm dir \webapps. Upkan tomcat spt dlm arahan sebelum ini. Selepas tomcat dah up sepenuhnya, sepatutnya terhasillah satu dir baru dlm \webapps iaitu dir forum. Utk uji, buka web browser dan masukkan url ini:
http://localhost:8080/forum/wwforum.action

Satu web page kosong dan tajuk "Senarai Topik" sepatutnya kelihatan.

File2 yg perlu diberi perhatian adalah:
1. Forum.java dlm dir forum\apps\src\forum. File ini adalah class action yg diperlukan oleh webwork.
2. view.properties dlm dir forum\apps\xmlfiles\classes. File yg menerangkan, utk sesuatu action tu, apakah view2 yg ada.

Webwork adalah satu framework MVC. Menggunakannya memerlukan cara berfikir yg agak khusus sedikit. Sila rujuk kedua2 file krn kita akan terus menerus menggunakan file2 ini.
...

(0) comments

Wednesday, February 18, 2004

Menarik gak artikel tentang java garbage collector tu. Kesimpulan:
1. Dlm kebanyakan keadaan, hasilkan object baru adalah murah dan cepat, bahkan lebih cepat dpd object allocation dlm C!! Disebabkan ini, usahlah risau utk menghasilkan object2 sementara krn menghasilkannya dan memusnahkannya ada amat cepat dlm Java. Dan, tak perlu bersusah payah menggunakan object pool kecuali utk object yg memang lambat atau resource terhad spt connection pool. Penggunaan object pool utk object2 mudah hanya menambahkan komplex program kita, tanpa apa2 faedah yg besar krn JVM generasi baru begitu power!

2. Usah null kan reference spt:
List list = new ArrayList();
//guna list...
list = null;

Jenis code diatas tak perlu lagi, bahkan kalau salah guna akan melambatkan, bukan mempercepatkan.

3. Usah paksa java garbage collector utk melakukan garbage collection dgn arahan Systen.gc() krn penggunaan ini pun mampu melambatkan sistem, bukan mempercepatkan.

Secara keseluruhan, ketiga2 perkara diatas ni, yg banyak direcommendkan suatu ketika dulu utk meningkatkan kelajuan sistem, dah tak sah lagi utk JVM generasi kini. Tapi, masih wujud keadaan yg masih sah utknya, walaupun dah teramat berkurangan spt utk real time system.

Semua penambahan kelajuan sistem kita ni, ada dgn bertukar JVM kpd version yg lebih baru, tanpa perlu merubah source code, mahupun recompile balik. Best kan?

Satu lagi, yg ke 4. Elakkan penggunaan finalize dlm java class kecuali jika dah teramat la terpaksanya krn ia mampu melambatkan java gc dan amat ketara sekali. Cari la jalan lain supaya tak perlu guna finalize.

(0) comments

Tuesday, February 17, 2004

Beberapa artikel yg menarik:
Java Generics utk JDK 1.5
Sejarah ringkas tentang Java Garbage Collector
Java Garbage Collector utk JDK 1.4.1
Kelajuan Java Garbage Collector

(0) comments

Setelah hampir 4 jam, develop secara on/off (henti sat utk pi meeting, dll), maka, satu forum mudah dan ringkas siap dihasilkan. Semua ni gara2 team saya nakkan satu message board. Dulu, saya install jive kat company lama. Tapi, sekarang ni, jive dah fully commercial, tak de yg free version. Cari punya cari, jumpa yg lain tapi leceh betul cara installation utk pilihan yg ada. Akhirnya buat keputusan utk develop sat, satu version yg simple je. Hanya ada 3 data class, Topic, Message dan User. Dgn menggunakan code gen, kebanyakan kerja2 adalah men'design' web page dan forms, selain menunggu notebook melakukan memory swap dlm harddisk. Java code hanya tertumpu kpd class Action yg diperlukan oleh webwork.

Saya telah beberapa hari memikirkan apakah cth yg sesuai utk digunakan dgn webwork ni. Apa yg tak susah sangat dan apa yg tak senang sangat. Selepas siapnya forum mudah saya tu, timbul dlm fikiran utk bagi ini aje la sebagai cth. Ia amat mudah dan boleh menunjukkan satu cara utk develop guna webwork. Masalahnya ialah db. Code gen saya menjanakan semua code utk db access dan ia amat errr susah utk didedahkan. So camna? Keputusan saya ialah membuang db dpd forum ini dan menggantikannya dgn satu simpanan dlm memory shj. So, forum ni nanti hanya menggunakan java.util.Map sebagai tempat simpanan semua topic dan messagenya. Tak ada db. Mudah dan ringkas.

InsyaAllah, saya postkan cara dan code utk membuat satu forum mudah menggunakan webwork. Stay tuned.


(0) comments

Friday, February 13, 2004

Sedikit update:
Code contoh utk JDK 1.5. Page ni rasanya diupdate dari masa ke semasa. So, jengok2 la sekali sekala utk dptkan cth code yg menguji keupayaan baru dlm JDK ver 1.5 ni.

Satu lagi implementation AOP dlm Java iaitu dynaop. Pada mulanya tak nak ambil kisah. Tapi, bila terbaca yg mana beberapa orang pakar ada contribute idea kpd projek ini spt mamat Rickard Oberg, maka, saya merasakan ia perlu diambil kira juga. Letak dlm KIV.

Masalah / Challange
Saya meminta maaf disini krn tak dpt menunaikan janji utk menyatakan masalah yg saya nyatakan dulu. Saya masih tak dpt fikirkan satu cerita yg sesuai utk menggambarkan masalahnya, dan di masa yg sama, tidak mendedahkan scenario yg saya sedang buat utk kerja saya. Memandangkan scenario kerja ni adalah PNC (private & confidential), saya terpaksa batalkan hasrat saya buat masa ini. InsyaAllah, bila keadaan lebih mengizinkan, spt bila sistem dah hampir roll out, saya boleh nyatakan masalahnya. Maaf ye.

Webwork
Saya akan teruskan dgn webwork minggu hadapan. Jangkaannya, cth2 yg saya akan postkan, mengguna semula example application dlm webwork.war. Ini adakan memudahkan kita mencuba webwork. Cth2 fasa awal tidak melibatkan database, tapi melibatkan banyak OOP dan class yg akan dihasilkan. Selepas tu, fasa ke2, saya akan masukkan cth menggunakan or mapper castor yg tak se power or mapper hibernate, tapi sudah mencukupi utk cth2 yg ringkas, serta ia lebih mudah dpd hibernate. Selalunya, lagi power sesuatu lib tu, lagi komplek cara menggunakannya.

(0) comments

Wednesday, February 11, 2004

Yay! Berjaya. Wah! Laju gak firefox ni. Jauh beza dgn ie yg saya guna sekarang dlm os ms xp. Thanks cairo!

(0) comments

Cubaan post ke blogger guna Mozilla FireFox

(0) comments

Tuesday, February 10, 2004

Phiew! Nasib baik boleh post dpd pc orang lain. Ntah kenapa, ie saya tak leh nak submit ke blogger.

(0) comments

Webwork Bhgn 2

Install
Pastikan ada web container yg telah diinstall. Katakan kita guna apache tomcat. Unzip file jakarta-tomcat-4.1.29.zip, katakan ke c:\ spt C:\jakarta-tomcat-4.1.29

Katakan JDK ada di C:\j2sdk1.4.2_03, buat satu batch file utk tomcat tu spt:
env.bat
set JAVA_HOME=C:\j2sdk1.4.2_03
set CATALINA_HOME=C:\jakarta-tomcat-4.1.29
set PATH=%PATH%;%JAVA_HOME%\bin;%CATALINA_HOME%\bin

Utk run tomcat ni, buka satu dos window dan pergi ke dir C:\jakarta-tomcat-4.1.29. Execute "env.bat" di atas. Pergi pula ke C:\jakarta-tomcat-4.1.29\bin dan execute "startup.bat". Satu dos window baru yg menjalankan tomcat sepatutnya kelihatan. Utk uji, buka satu web browser dan masukkan url http://localhost:8080/index.jsp ke dlm browser. Sekiranya ada page tentang tomcat kelihatan, maka installation tomcat ada berjaya. Jika tidak, alamatnya kena debug le.

File webwork-1.4.zip yg telah didownload tu, katakan diunzip ke c:\ spt C:\webwork-1.4. Utk lihat cth webwork, copy file webwork.war yg berada dlm C:\webwork-1.4 ke dir C:\jakarta-tomcat-4.1.29\webapps. Sekiranya tomcat sedang berjalan, ia perlu dishutdown dulu. Pergi ke dos window yg mula2 digunakan utk execute arahan "startup", utk execute arahan "shutdown" pula. Tunggu sehingga dos window yg menjalankan tomcat itu tutup sepenuhnya baru baru laksanakan arahan "startup" semula.

Setelah tomcat startup sepenuhnya, sepatutnya wujud dir C:\jakarta-tomcat-4.1.29\webapps\webwork. Utk uji sama ada webwork benar2 telah di install dlm tomcat, taip url http://localhost:8080/webwork/index.html dlm browser. Sepatutnya, satu page yg menunjukkan senarai test/ujian2 yg boleh dicuba dgn webwork. Cuba la mana yg berkenan dihati.


(0) comments

Monday, February 09, 2004

Webwork Bhgn 1

Saya akan terangkan serba sedikit bagaimana nak guna webwork ver 1.4 utk hasilkan web application. Lebih baik saya... ehem... perturunkan apa2 ilmu yg sedikit yg saya tahu tentang webwork setelah tergolek2 rnd selama lebih 2 minggu.

Penerangan - background, cerita masa silam ;)
Dalam dunia Java, satu perkara yg pada saya menonjol ialah terdapat begitu banyak tools/lib/framework 3rd party yg agak power, bukan dihasilkan oleh penaja rasmi (iaitu sun, tuan punya java). Pengalaman menggunakan borland C++ ver 4.x, microsoft punya C++ compiler (tak ingat plak namanya) dan bagaimana lib borland, owl, di'bunuh' oleh mfc, kemudian guna plak VB 3.0 sampai la ke VB 6.0, serta terpaksa beli component disebabkan bertukar dpd vbx ke ocx ke activex. Mentality 'follow the leader' ni telah dibenamkan ke dlm kepala otak saya dgn begitu mendalam sekali.

Jadi, apabila saya lakukan 'leap of faith' ke java, pada mulanya, saya teruskan je follow the leader ni, macam lembu yg ditarik ikut hidung. Bukan shj saya, MD saya pun macam tak percaya bila wakil sun singapura kata boleh buat development dlm java secara percuma, tak perlu bayar apa2 license.

Perlahan2, as time goes on, pemikiran saya semakin terbuka. Dunia java ni begitu berbeza sekali dpd dunia sw dev yg saya lalui dulu. Pilihan dlm sw dev ni benar2 wujud. Saya tak semestinya ikut kata sun shj, walaupun sudah tentu mereka lebih suka kita ikut kata2 mereka. Kebebasan wujud utk hasilkan cara lain selain cara piawai dpd sun, bahkan nak lawan piawai tu pun boleh dgn syarat cara kita lebih baik dpd cara sun. Ni sangat berbeza dgn cara dulu dimana, bila ada pesaing dgn cara piawai, maka tuan punya teknologi akan 'membunuh' pesaingnya spt yg berlaku kpd owl kepunyaan borland.

Dlm dunia java, kebebasan ini begitu refreshing sekali dan telah membuahkan begitu banyak 3rd party lib/tools/framework utk pelbagai sudut dan kegunaan. Antara yg paling hangat ialah web framework iaitu satu rangka kerja utk membuat web based application. Web framework ini selaluinya merangkumi keupayaan yg selalunya diperlukan dlm sesuatu web based apps spt keupayaan utk upload files, forms validation, email, dll. Web framework juga selalunya merangkumi code2 utk menjalankan fungsi2 umum ini DAN satu cara atau paradigma utk menggunakannya supaya tak mengembek dlm kandang lembu.

Terdapat begitu banyak web framework, antaranya webwork, apache struts (paling famous krn dpd keluarga apache la katakan) dan tapestry. Di sini, insyaAllah, saya nak citer serba sedikit tentang webwork, setakat yg saya tahu setelah rnd webwork ver 1.4.

Mula2 sekali kena la download webwork ini dahulu di sini

Pastikan juga ada web container spt apache jakarta tomcat yg boleh diperolehi dlm bentuk zip atau tar gz atau exe

Err, satu lagi, pastikan ada JDK utk OS anda. Boleh diperolehi dpd sun.

Kita sambung, insyaAllah esok. Apa2 soalan boleh email saya kat hamdimy@mail.com atau kat ittutor (saya akan buka satu topik utknya)

(0) comments

Habis sudah prototype ver 0.4. Bos tak impress. hmmm... tak pe la. Kita tengok jugak 3rd party sistem macam mana. Satu yg bagusnya dpd prototype ni, saya yakin dah capai tahap 2 dgn webwork (ww) ver 1.x, dlm beberapa bhgn dpd keupayaan ww. Senang cakap, dah capai tahap minima utk produktif dan selesa dgnnya.

Webwork ver 2.0 pulak baru release. Biar dulu, tunggu dah ver 2.1 ke, baru nak godek2. Sekarang ni, bila dah tepu buat paper work, cuba godek2 spring. Release sikit tension. doing... doing... doing...

(0) comments

Sunday, February 08, 2004

Setelah memikirkannya dgn lebih lanjut, rasanya2 macam, kalau guna stored procedure pun mungkin ada masalah gak, tapi tak pasti krn kelemahan ilmu dlm diri tentang stored procedure. Nanti saya cuba reka cerita yg sesuai utk menerangkan masalah / challange saya ni.

mnajem ada post link kat bincang.net tentang What Java geek said about PHP

Ni komen saya:
Pada saya la, jika seseorang tu rasa amat sesuai dan serasi dgn PHP, maka guna la ia. Kesian gak mamat tu krn terpaksa guna Java dlm kerja dia, walhal dia lebih ngam dgn PHP.

Utk saya plak, masalah yg mamat tu nyatakan boleh diatasi, cthnya utk buat apa2 perubahan tanpa perlu recompile. Dlm java, amat mudah utk setkan projek java kita supaya support benda alah ni spt dgn menggunakan beanshell, groovy, mahupun jython/jruby.

Selain tu, masalah web application besar ialah krn kebanyakkan 3rd party lib yg diguna adalah multipurpose dan begitu banyak functionalitynya. Kalau kita guna sikit je dpd lib tu, maka, guna la tool utk extract semua class2 yg kita guna dpd 3rd party lib ni utk wujudkan satu lib baru. Semua class yg tak digunakan TIDAK dimasukkan dlm lib baru ni. Maka, kecik je le nanti saiz lib kita. Nak tahu lebih lanjut, kena tanya cairo.

Seperkara lagi, kesesuaian java adalah agak luas. Dgn java, saya berkemampuan buat sistem building automation yg punya fungsi enterprise scheduler. Lepas tu, berpindah ke web based apps, saya boleh guna semula fungsi enterprise scheduler tu utk web based apps saya ni. Utk saya, saya teramat mementingkan code / fungsi reuse. Dan setakat ni java sesuai dan serasi dgn saya.

Point saya: guna la apa yg serasi dgn diri dan pemikiran anda, tapi sekali sekala, jengok2 la sekitar, krn mungkin ada peluang utk kita memperbaiki keadaan sw dev kita, tanpa disedari, dari masa ke semasa. Ni terutamanya jika kita bekerja dlm teknologi yg memberikan peluang utk optimise yg besar spt java ni. (ni tak masuk citer optimise dgn code gen dll ni)

(0) comments

Thursday, February 05, 2004

Saudara gunx telah menerangkan satu cara utk mengatasi masalah saya tu, menggunakan stored procedure, stored procedure dan stored procedure :D Terima kasih kpd gunx krn sudi berkongsi ilmu dgn saya. Saya yakin pengguna stored procedure memang tidak menghadapi masalah besar dgn masalah yg saya hadapi, asalkan db yg diguna support stored procedure.

Masalah mungkin timbul utk mereka yg tidak menggunakan stored procedure, atas apa2 sebab. Nanti saya cuba ceritakan masalahnya, mungkin minggu depan.

(1) comments

A quick post.

JDK 1.5 Beta dah release! Perbincangan tentangnya di TheServerSide

Saya ada satu soalan / masalah / challange utk para pembaca. Tak sempat nak postkan. Masalah ini saya hadapi masa tengah buat prototype. Saya kena 'cerita'kan masalah tersebut dlm scenario yg berbeza dpd apa yg saya benar2 hadapi, tapi sepatutnya memberikan masalah yg sama. Nanti saya reka masalah tu yek. Saya berpuas hati dgn cara penyelesaian adhoc saya tu, tapi berminat nak tahu ke terroran para pembaca sekelian. Nanti saya post kat ittutor, insyaAllah.

(0) comments

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