<$BlogRSDUrl$>

Thursday, April 29, 2004

Glue
Baru je download glue ver 5.0.1, salah satu sw utk buat web service yg cukup power dan dasat. Kalau nak download, pi ke web site depa kat webmethods dan pi ke download. Kena register (free je), baru boleh download. Depa akan email 30 days evaluation license. Kena pi ke download link tu dan pilih convert pro license to standard license. Kena jawab beberapa soalan baru depa email standard license tersebut.

Sekarang ni saya tengah tunggu depa email standard license.

Electric Xml dah tiada lagi. Apa! Tak de lagi! Ayoyo! Hehehe, mereka dah tak package electric xml berasingan tapi dah gabungkan dlm glue. Walau bagaimanapun, depa bagi pilihan utk kita nak hasilkan jar khas utk electric xml ni. Dah ada target ant utk EXML dlm build.xml depa. Run kan aje target EXML tu. Settle.

Check it out.

(0) comments

Wednesday, April 28, 2004

Java NIO
Perbincangan tentang Java NIO yg mengutarakan blog entry mamat Mike Spille.

(0) comments

Tuesday, April 27, 2004

UML/OOAD - Fokus
Saya merasakan jawapan Craig Larman dlm thread di javalobby adalah cukup baik utk dipostkan semula kat blog saya. Harapnya tak de masalah dgn ini. Secara umumnya, apa yg dia perkatakan adalah sama spt apa yg ex-mentor OO saya perkatakan lebih 5 tahun lepas dan ia juga seiring dgn apa yg saya sendiri lalui.

Diambil dpd javalobby, jawapan dpd Craig Larman / Taken from javalobby, written by Craig Larman:
...

My answer may surprise you, because, to give a little background, i've had the good fortune that one of my books, "Applying UML and Patterns: An Intro to OOA/D," has been the most popular OOA/D + UML book worldwide since '97, and I've been able to practice or coach developers in OOA/D and visual modeling with Booch or OMT or Fusion or UML notation for almost 20 years.

You may enjoy parts of my recent article "What the UML Is and Isn't" at JavaPro mag:

http://www.ftponline.com/javapro/2004_03/magazine/features/clarman/default_pf.aspx

And the recent article "Death by UML Fever:"

http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=130

There’s some other related resources at www.craiglarman.com

Martin Fowler and Scott Ambler’s works on this subject are also useful, and in the same spirit as i encourage.

First, the UML is relatively trivial and unimportant.

It is simply a standard diagramming notation of boxes and lines. That doesn't mean that a diagramming language (the UML or any other) is without value—some visual modeling can have great value--BUT, the important thing is knowing how to think and design with objects, not draw in a standardized notation. It's like the difference between the knowledge of how to be an electronics engineer and design/evaluate circuits, vs. the knowledge of how to draw the standard digital elements in a circuit diagram.

UML/MDA tool vendors and purchasers entranced with the unending "silver bullet" desire continue to believe claims of fantastic improvements if we use some UML tool. The essence of Brook's classic "No Silver Bullet" paper is that there is no tool or practice that will create an order of magnitude improvement.

Tools don't compensate for (OO design) ignorance, nor does the UML.

Design education + short iterations + collaboration + good communication practices does.

One of the easiest ways for an organization to waste money is to get the idea "Let's become advanced and 'do UML' now." And then, to buy a set of UML tool licenses, somehow thinking this will make the dramatic difference on their development efforts. Ultimately it leads to the most consistent pattern of "shelfware" i've seen when i visit development groups, and most who go down this road discover that the return on time investment isn't there, and the tools are too weak or fussy (e.g., compared to what you can just do with Eclipse + Xdoclet + Ant ...).

So, what do I suggest?

First is appreciating that the important thing is not UML or 'doing UML' but 'doing OOA/D.' And so focus on education and mentoring related to that: OO design principles and patterns, and how to apply them.

Second is to prefer and emphasize the Agile Modeling (www.agilemodeling.com ) spirit of doing visual modeling with the UML; Scott Ambler has well-captured something fowler, i, and others have been trying to promote for years. For example, (and this is the essence of how i’ve effectively applied uml with teams for many years) do UML sketching with marker pens on giant whiteboard spaces, with every inch of a large common project room covered with whiteboards or whiteboard paint, or Avery Cling-On Write Sheet, no furniture against the walls. Use a digital camera to capture sketches worth preserving for awhile. This is meant to be *visual modeling* the purpose of which is to exploit our human-brain advantages of working in diagramming languages; that should mean vast drawing spaces and real ease of use, so that our “tools” (e.g., a pen) supports creative flow rather than inhibits it (such as working in a tiny computer screen struggling over drawing boxes).

Some other useful related agile modeling practices are to model in pairs (or triplets) at the whiteboard at, and to create 2 models in parallel on different walls (e.g., dynamic interaction diagrams on 1 wall, and complimentary static class diagrams on wall 2, back and forth). Also, drawing uml only needs to be a “good enough” approximation during whiteboard sketches so that the modelers understand each other. Knowing fine details and many obscure uml notational points isn’t important.

Third, avoid the waterfall or “big-modeling” attitudes. For example, do no more than one day of uml-ish and related modeling at the start of each 2 or 3-week timeboxed iteration. Don’t view these models are accurate or complete designs, but creative explorations for the difficult, non-obvious parts of the design. Don’t attempt or believe we can create a “complete” or correct model; do just enough to add some value for the current short iteration, bounding the modeling work to the few requirements under design for this iteration.

Fourth, related to the third, view these uml-ish sketches as rough drafts and created for understanding, exploration, and communication with your design partner, NOT as documentation or an accurate spec.

Fifth, don’t encourage that some “expert” create detailed uml diagrams then hand them off to another developer for implementation. That’s a very waterfall-ish and un-agile approach to modeling. Effective uml-ish/visual modeling is done by programmers, for themselves.

Sixth, UML tools can have some value, but most find, in the long run, that the consistent value is for reverse-engineering existing code into diagrams, to get a quick big picture visual view onto the code base. When i coached a dev team through an iteration, we try to rev eng the code to UML, and then print out the interesting diagrams in large on plotter paper, and hang on the walls, before the 1-day modeling session that starts an iteration. Then, we can look at and sketch on top of the plotter drawings as we explore. From this practice, a team needs only one copy of a tool per team. And pick a rev-eng tool that can rev-eng code to sequence diagrams (not just the static class diagrams); that’s a very useful learning aid to quickly see call-flow structures in the code, but very few can do it.

Related to the above, i find more value in code generation using the code-oriented tools, rather than a uml tool for forward engineering (generating code from diagrams). Eclipse + xdoclet + Ant + … will take you very far, are free, and many developers know and can maintain with these tools.

Note that one key disadvantage with uml sw tools isn’t inherently the tool, but that today’s display technology is not suitable for visual modeling, which is much better done (given human physiology) in massive 2-meter by 30-meter areas with very easy I/O methods, to support real creative flow. Today that means whiteboards and pens and cameras, but someday equal ease and value is sure to come from new computer technologies (e.g., VR uml-ish sketching areas).

I have many years of good memories of creative, valuable and fun collaboration at the whiteboards, uml/booch/… quickly sketching and discussing various design strategies for OO software projects, and know that this agile visual modeling approach, as a short step before programming each iteration, can yield great value when we’re comfortable with the language and practice. But neither i, nor most of the colleagues and clients I know, have such long and positive memories when using a CASE tool – uml oriented or otherwise. i’m sure that will change someday, and i’m also sure that there are exceptions to my observations; that there are _some_ people who derive great benefit from the tools, when it fits on a particular kind of project. My comments are general-trend observations; I’m sure someone on this forum will tell a story of great benefits using tool X.

Although a tool vendor won’t say this, IMHO the real value proposition of applying the UML isn’t using a UML tool, it is the advantage of visual modeling – quickly sketching in pictures rather than just text, as this plays to a strength of humans to comprehend relationships quickly. It supports better collaborative design and alternative explorations. It’s a shame when that simple advantage and practice is lost in the forest of details and awkwardness of computer drawing tools, or low-level uml notation pedantry.

Was that any help? best wishes with modeling; please email me with any questions.

regards, craig

(0) comments

Java Hotspot 1.4.2
Susulan kpd artikel tentang kelajuan Java 1.4, ialah artikel kpd java hotspot 1.4.2. Penting utk fine tune garbage collector supaya berfungsi ditahap optimum bergantung kpd jumlah CPU per server dan jumlah memory serta kelakuan apps kita dari segi kehidupan objek2, banyak yg hidup lama ke, atau banyak yg mati ketika muda ke, atau bercampur2.
Teramat la pentingnya utk deployment.

(0) comments

Pesaing JavaGroups
Yes! Dah jumpa 2 lagi pesaing JavaGroups yg nampaknya menarik.
Ensemble
appia

Setelah membaca artikel yg menyatakan kelemahan JavaGroups, saya merasa kurang puas hati dan mahukan pilihan utk menggantikan JavaGroups jika perlu. Ialah, nampaknya JavaGroups ini scale up setakat 4 / 8 node shj, lepas tu hancussss!

Mana boleh begini. Saya nak cari yg sewaktu dgnnya, FTP, dan mampu scale up sampai berpuluh2 node. Harapnya, kedua2 pesaing yg saya jumpa tu, mampu melakukannya, terutamanya sw yg pertama tu. Nampak macam dasat aje. Kelemahannya, ia bukan dicode dlm Java. Kebaikannya, ia ada Java API. Bolehlah, asalkan FTP.

(0) comments

Penggunaan AOP
ObjectFilter: AOP Rule Based Object Access adalah satu lagi penggunaan AOP. Betul2 ngam punya cth atau tidak tu... saya tak tahu krn belum menelitinya lagi.


JavaGroups
Artikel tentang scalability JavaGroups ni yg dah saya postkan perbincangan tentangnya 19/04/2004 yg lepas, memang cukup menarik. Sesiapa yg berhasrat nak guna JavaGroups utk distributed cache atau yg sewaktu dgnnya, spt saya, elok memahami dan mendalaminya.

(0) comments

Monday, April 26, 2004

Portlet
Apache Jetspeed telah direlease dan rasanya ia dah sokong Portlet API sepenuhnya. Perbincangan tentangnya di theserverside.

(0) comments

Java Security
Perbincangan tentang artikel JDJ di theserverside dan komen seseorang yg membangkangnya.

Link susulan:
http://www.aspectsecurity.com/topten/

(0) comments

UML/OOAD
Satu perbincangan menarik tentang UML/OOAD di javalobby.

Perhatikan jawapan dpd mamat bernama Craig Larman, pengarang buku "Applying UML and Patterns: An Intro to OOA/D".

(0) comments

Sunday, April 25, 2004

Link ke artikel menarik
Develop Mentor dan TSS menghasilkan satu usaha sama utk kongsi artikel. Check it out.

(0) comments

Java NIO
pyrasun, satu projek NIO yg mungkin menarik. Boleh check out source code nye utk memahami cara NIO berfungsi. Atau, guna aje la lib ini.

(0) comments

Friday, April 23, 2004

Kelajuan Java 1.4
Artikel menarik tentangnya kat sini.

(0) comments

Kelajuan AOP
Kelajuan pelbagai implementation AOP dlm dunia Java:




AspectJ 1.1.10.000018 ms/call
AspectWerkz 0.10 RC10.000097 ms/call
JBoss AOP 1.0Beta0.000181 ms/call
AOP mamat Richard0.000100 ms/call
dynaop 1.0 beta0.000326 ms/call
JBoss 4.0 DR20.000625 ms/call
Spring 1.0 M40.001429 ms/call
Nanning 0.90.002000 ms/call

Dipetik dpd:
AspectWerkz
Blog Richard
DynaAOP

(0) comments

NetBeans
NetBeans selalunya dikenali sebagai salah satu IDE yg agak power utk Java. Selain IDE, ia juga boleh digunakan utk develop application biasa yg menggunakan Swing. Maklumat lebih lanjut di sini.

(0) comments

Pindah Office dan Banjir dlm Masjid
Ok, sah dah. Saya dan rakan2 sepejabat akan pindah minggu pertama bulan 5 ini. Kembali la solah jumaat kat masjid KLCC nampaknya. Selamat tinggal masjid Negara.

Betul2 dasat punya hujan ribut semasa solah jumaat semalam. First time sujud ke lantai yg penuh dgn air. Sebelum sujud pun dah basah, walaupun belum kuyup. Masa rakaat kedua, badan terasa kesejukan akibat terus menerus dilanda hujan yg ditiup kencang oleh angin. Saya solah, lebih kurang 20 kaki dpd hujung bumbung, saf kedua yg kemudiannya menjadi saf pertama akibat mereka disaf pertama masuk ke tengah masjid masa imam nak memulakan solah.

Rakan sepejabat saya yg dah solah jumaat kat situ lebih 15 tahun memberitahu, ini kali pertama berlaku begini. Ada apa2 petanda ke, dpd yg Maha Esa? Takut gak....

(0) comments

Webwork dan Spring
Cis! Sonang rupanya nak guna spring ioc dlm webwork. It's either me, or docs utk spring berteraburrr.

Jumpa caranya dlm doc spring reference, bab 10. Antaranya:

1. Menggunakan classpath

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
//.....
ApplicationContext context = new ClassPathXmlApplicationContext("myContext.xml");
ProductService productService = (ProductService) context.getBean("myProductService");



2. Menggunakan path

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
//.....
ApplicationContext context = new FileSystemXmlApplicationContext("C:/myContext.xml");
ProductService productService = (ProductService) context.getBean("myProductService");




Utk no 1 di atas, file myContext.xml perlulah berada dlm root classpath. Utk web apps, file ini boleh diletakkan di dlm web-inf/classes. Utk apps biasa, boleh letak kat mana2 root dir yg didefine dlm classpath. Pilihan saya setakat ini ialah cara 1 spt di atas dan menggunakan file 'default' spring iaitu applicationContext.xml.


(0) comments

Thursday, April 22, 2004

Artikel menarik
Java and Mysql Performance Tuning
Declarative Programming in Java
Memahami metadata dlm Java 1.5

(0) comments

Gmail - google mail
Baru je subscribe kpd gmail. Gmail adalah service terbaru dari google. Link kpd registration nye terdpt dlm page blogger ini selepas login. Yg menariknya, saiz mail box saya ialah 1GB!!! Dan ia free!! Setakat ini, email a/c saya yg paling besar ialah kat mail.com iaitu 10MB. Gmail akan scan isi kandungan email kita utk memaparkan iklan yg berkaitan dgn apa yg ditulis dlm email tersebut. Agaknya, inilah caranya mereka buat duit iaitu melalui iklan yg dicustomisekan kpd isi kandungan sesuatu email.

Kena cuba hantar dan terima email ni. Apa pun, saiz 1GB nye cukup menarik :-)

(0) comments

Fening
Masalah yg dihadapi sekarang ialah, menguasai ilmu gabungan hibernate, spring dan webwork. Kalau satu demi satu, rasanya dah a ok. Tapi, bila nak gabungkan ketiga2 sekali, boleh tahan kompleksnya. Hanya setelah menguasai ilmu gabungan ini, baru boleh masukkanya ke dlm code generator.

(0) comments

Wednesday, April 21, 2004

Hibernate
Tekan break emergency. Masalah utama dlm memasukan sokongan hibernate ke dlm code generator ialah ilmu hibernate yg masih belum dikuasai lagi. Tak cukup keyakinan lagi. Masih kena baca dan RnD lagi.

(0) comments

Mono dan .Net
Adakah Mono akan berjaya menghasilkan satu implementation yg setaraf dgn ms .net kat windows satu masa kelak? Ntah la. Hanya Allah yg lebih mengetahui. A quick google for compatibility with .net menghasilkan beberapa link menarik antaranya:
FAQ Mono
Perbincangan Java vs Mono
MS .net vs Mono
Mono Playing Catch-Up
Kesan Mono
Novell dan Mono
.net kat FreeBSD hanyalah proof of concept


Project NHibernate adalah usaha utk port Hibernate ke .net. Masalah buat masa ini ialah, environmentnya ialah ms window. Mungkin depa belum test kat mono, ntah la. Tapi, ia kurang memberi keyakinan tentang kemampuan compatibilitynya.

(0) comments

Hibernate
Cara nak generate sql utk export schema TANPA melakukan perubahan kat db terus ialah dgn mengesetkan text="yes". Dah a ok dah.

Sekarang, nak kena tambah kat code generator saya supaya menjanakan semua doclet hibernate yg diperlukan. Banyak gak keje ni...

(0) comments

Abang Saya
Dia masuk berita kat sini. Lama dah tak jumpa. Harapnya, dpt la dia balik bercuti.

(0) comments

Hibernate
YES! Dah berjaya guna xdoclet utk hibernate di dlm ant build.xml saya! Yahoooo! Sebagai bonus, schemaexport pun berjaya dimasukkan sekali.

Xdoclet utk hibernate ini akan menjanakan mapping utk hibernate secara automatik. Sementara schemaexport pula akan janakan sql utk create semua table yg diperlukan di dlm satu sql file. Selain itu, ia juga secara automatik, drop dan create table2 tersebut secara terus kat db kita. Tak payah nak buat secara manual. Dasat. Senang gak rupa2nya. Dasat. Best gak. Dasat....

Tapi.... camna nak elak schemaexport dpd drop table secara auto yek? Saya letak drop="no" tak jalan pun... Kena cari ni...

(0) comments

Tuesday, April 20, 2004

Ant
Dah berjaya guna Ant ver 1.6.1 dlm development environment saya, menggantikan Ant ver 1.5.2. Alhamdulillah, tak de apa2 masalah besar. build.xml pun tak payah ubah. Hanya kena copy catalina-ant.jar aje ke dir lib.

Next, xdoclet utk hibernate.

(0) comments

Lain2
Terjumpa kembali link lama kpd team sw yg saya ketuai mula2 dulu. Banyak gak kenangan bersama2 depa ni. Ntah kat mana mereka semua sekarang ni. Saya hanya masih contact dgn fnd dan ajak aje. Semoga mereka semua dah berjaya sekarang.

(0) comments

IoC
Setelah membaca lebih lanjut tentang PicoContainer, saya difahamkan, keupayaan utk declare dependency nye didelegatekan kpd NanoContainer. So, saya kena baca dulu tentang Nano plak sebelum buat final evaluation terdpt kedua2 IoC implementation ini.

(0) comments

Monday, April 19, 2004

Perbincangan menarik kat TheServerSide
Perbincangan tentang JavaGroups serta terdpt artikel yg membuat penilaian tentangnya. Best gak, terutamanya bila 'pesaing' JavaGroups iaitu Cameron Purdy masuk sekali dlm perbincangan ini. Syarikat Cameron ini, iaitu Tangosol adalah pembuat sw produk bernama Coherence yg menjadi saingan kpd JavaGroups. Walaupun Coherence ini komersial dan agak mahal, kalau tak silap, lebih dpd RM 5000 utk setiap CPU, dan JavaGroups adalah free dan open source, tapi keupayaan mereka al kononnya ibarat bumi dan langit. Dengar ura2, al kononnya Bela Ban, developer utama JavaGroups akan memberi tumpuan kpd melajukan JavaGroups. Kalau benar, ia bakal menjadi pesaing Coherence yg dasat. Semoga berjaya!

Perbincangan tentang menggunakan Hibernate dan Spring.

Tapestry ver 3.0 siap. Saya masih kantol dgn Tapestry. Al kononnya ver 3.1 kelak bakal mengalahkan web apps yg menggunakan JSP dari segi kelajuannya.

Perbincangan tentang IoC. Lebih tertumpu kpd kenapa pilih Constructor Injection.

(0) comments

Spring
Setakat ini, analisa saya terhadap spring adalah spt berikut:
AOP, Aspect Oriented Programming
Spring menggunakan kombinasi java interface dan class serta xml file utk melaksanakan AOPnya. Saya lebih suka dan selesa cara AspectJ. (0-1)

IoC, Inversion of Control
Spring sokong kedua2 Constructor Injection dan Setter Injection. Secara defaultnya, mereka sokong Setter Injection dan adalah penyokong kuat cara IoC ini. PicoContainer plak, juga sokong kedua2 Constructor Injection dan Setter Injection, tapi adalah penyokong kuat Constructor Injection. Saya masih baru membaca tentang PicoContainer ini dan setakat yg saya faham, saya lebih suka cara IoC spring yg menggunakan Xml file utk men'declare'kan dependency nye. (1-1)

DataSource
Spring menyokong hibernate, jdo, ibatis dan JDBC biasa. Spring dah abstractkan satu lapisan diatas semua ini. OK gak. Macam apa yg saya dah buat iaitu satu lapisan yg mengabstractkan hibernate dan castor. Saya suka keupayaan spring ini dan ia menjadi calon utk dimasukan ke dlm code generator saya. Tapi, nak kena beli buku spring utk mendalami cara2 implementationnya. (2-1)

Kesimpulan
Spring telah mendesign application framework depa sedemikian rupa di mana, kita boleh menggunakan keseluruhan application framework nye atau menggunakan sebahagian shj dpd keupayaannya. Dlm kes saya, setakat ini, saya suka kpd IoC dan DataSource nye. Tapi AOP cara AspectJ lebih serasai dgn saya.

(0) comments

Friday, April 16, 2004

Design Pattern dan AOP
Artikel tentang design pattern decorator dan command ada amat menarik. Elok gak utk sesiapa yg nak belajar tentang kedua2 pattern ini, mahupun utk mereka yg nak tahu cara tambahan menggunakannya.

Utk sesuatu application / sistem yg mempunyai algo spt kiraan utk billing (spt joining fee, penggunaan biasa dan penggunaan berlebihan) yg diimplement menggunakan design pattern command. Maka, tambahan2 business rules spt setiap fee ini dikenakan tax, boleh diimplement dgn kemasnya menggunakan design pattern decorator.

Apa yg diperlukan ialah:
1. setiap kiraan kos ini diimplement oleh satu class yg mengimplement interface DP Command ini.
2. setiap code pengguna kpd algo ini perlu diubah utk merujuk kpd class decorator ini dan bukan kpd class asal.

Itu aje.

Tapi...

Kalau implement cara AOP macam mana? Hmmm.....

Apa yg diperlukan ialah:
1. setiap kiraan kos tambahan ini diimplement oleh satu aspect. Tak perlu implement apa2 interface. Pointcut aspect ni merujuk kpd semua class2 kiraan kos yg asal.
2. Tara. Satu aje.

Analisa
1. Menggunakan AOP, kita tak perlu risau sangat dgn design sesuatu sistem. Tak leh lah plak sistem yg dihack sampai hacus giler. Tapi, asalkan developer asal ini cuba sekurang2nya utk code dgn function2 yg agak sesuai, dah kira ok la, tak perlu sampai tahap developer asal perlu tahu design pattern command pun. Cthnya, developer asal bubuh semua fungsi nak buat kiraan kos ini dlm satu class, tapi method2 yg berbeza. Ini tak menggunakan apa2 DP, tapi dgn AOP, dah mencukupi utk kita lakukan ...... 'magik' :-)
2. Kekuatan AOP adalah dlm 'melekatkan' aspect ini kpd code2 kiraan asal mahupun kpd semua code pemanggil tanpa mereka ketahuinya.

Kesimpulan
Menggunakan AOP, sesuatu sistem yg kurang canggih dari segi designnya, mampu merasai kesan mudahnya maintenance spt mana sistem yg designnya agak canggih. Tapi, kalau sistem hancus designnya, maaf aje la. Ini meningkatkan nilai dan practicality sw dev secara keseluruhan. Tak ramai yg mahir utk melakukan design yg cukup dasat utk sesuatu application yg kompleks, termasuk saya. Dan sekarang, tak perlulah nak risau2 sangat dgn design yg canggih utk mendapatkan hasilnya. AOP dah sedia membantu.

Dgn kemahiran OOAD+OOP yg sederhana dicampurkan dgn AOP, mampu meningkatkan tahap sw dev kita secara keseluruhan ke tahap yg memberangsangkan. Inilah satu cth di mana, 1 + 1 = lebih dpd 2.

Cukup la iklan AOP setakat ini :-)

(0) comments

Wednesday, April 14, 2004

AOP
Setelah mendalami manual Spring tentang keupayaan AOPnya, akhirnya saya memilih AspectJ sebagai AOP implementation pilihan saya. Antara faktor2 pemilihan AspectJ keatas AOP Spring ialah:
1. Dlm AspectJ, kita boleh define aspect, advice dan pointcut kita dlm satu file .java. Apa2 nak ubah, cari aje file aspect tersebut. Dlm Spring, ia dipecahkan kpd dua, satu kat java dan satu lagi kat xml.
2. AspectJ mempunyai sintaks utk pointcut dia sendiri yg agak kompleks. Spring pula mempunyai sokongan regular expression utk pointcut, yg juga agak kompleks utk sesiapa yg kurang mahir regex. Utk saya, setelah mencuba AspectJ selama beberapa bulan, sintaks nye tak le susah sangat. Dah boleh produktif dah, insyaAllah.

Faktor2 diatas bukanlah faktor yg besar, hanya tahap keselesaan saya dgn AspectJ adalah lebih berbanding dgn AOP Spring.

(0) comments

James Gosling
Blog dia di sini. Menarik gak. Dia citer tentang salah faham ramai tentang penyelesaian kes saman antara sun dan ms. Dia ada juga menyatakan tentang satu projek, FreeTTS yg memberikan keupayaan text ke speech. Menarik. Kena cuba ni.

(0) comments

Tuesday, April 13, 2004

JavaWorld
Dah kembali. Satu lagi artikel tentang design pattern, kali ini tentang decorator shj.

(0) comments

Hessian dan Burlap
Apa kebendanya kedua2 ini? Rupa2nya, ia adalah antara protocol yg menghubungkan remote ke server. Maklumat lebih lanjut tentang Hessian dan Burlap.

Design Pattern Command dan Decorator
Artikel tentang kedua2 design pattern ini di sini.

Iraq
Satu cerita menarik tentang pengalaman seorang sukarelawan kat iraq.

(0) comments

Monday, April 12, 2004

openadapter
Setakat analisa saya terhadap user manual dia yg agak comprehensive, ini input saya yg mungkin tak tepat:

Kelebihannya
1. niatnye bagus krn kewujudan satu framework utk fungsi EAI (enterprise application integration) menggalakkan code reuse, walaupun sedikit leceh utk membuatnya.
2. Terdpt satu community yg nampaknya macam aktif, membuat framework ini. Terdpt agak banyak adapter yg dah ada spt ke/dari file, ftp, ldap, rmi, dll.

Kelemahannya
1. Data yg nak masuk ke dlm framework ini mesti ditukar kpd DataObject kepunyaan openadapter. Utk penghantaran ke remote, sama ada array of object DataObject ini yg dihantar, atau ia ditukar menjadi xml dulu sebelum dihantar. Semua ini pertukaran ini merisaukan saya akan performance nye.
2. Utk configure adapter2 yg ada ni, memerlukan kefahaman yg detail tentang setiap satunya. Saya rasa adalahlebih senang utk jadikan adapter ini sebagai 3rd party lib dan gunakannya dpd dlm code kita. Semua maklumat konfigurasi ini, dgn perlu mengetahui element2 dan attribute2nya, meningkatkan complexitynya. Berbaloi ke?
3. Adapter yg ada, walaupun agak banyak, adalah adapter biasa aje. Tak ada yg dasat spt utk EDI, RosettaNet, dll.

Kesimpulan
KIV

(0) comments

jscreator
Aik! Awat tak sedar tentang kewujudan jscreator sebelum ini. jscreator atau Sun Java Studio Creator adalah satu development tool macam IDE, dan al kononnya cukup dasat sehinggakan mampu memberikan RAD (rapid application development) menyamai dan mungkin melebihi tahap produktiviti menggunakan MS Visual Studio.

Penerangan lebih mendalam tentangnya di sini.

Ia adalah produk komersial. Anggaran harga tak sampai us$300, iaitu tak sampai RM1,200. Wow! Mahal gak. Tak check it out lagi. Kalau ada sesiapa yg dah cuba, harap dpt bagi feedback tentang keupayaanya. Maceh.

(0) comments

Friday, April 09, 2004

Work Flow engine
jBPM nampaknya agak power, tapi, amat kompleks. Berbaloi ke? Satu cara lain utk buat sptnya ialah, good old plain OOAD dicampurkan AOP merata2. Tapi, sebelum tu, nak cuba OSWorkFlow sat. Bagi peluang utk satu lagi work flow engine.


Distributed Cache
Wah! Swarm cache dah aktif kembali. Sekarang dah ver 1.0 RC2 dah! Dah support JavaGroups 2.2. SwarmCache ver 0.91 yg saya pakai dulu guna JavaGroups 2.1.6 rasanya. Walau apa pun, ini berita yg baik utk saya. Distributed caching memang satu senjata yg dasat dan amat berguna. Best!


Senarai software open source
Blog ini punya senarai software2 open source utk java. Banyak betul senarai dia! Amat berguna kpd sw dev yg memberi peluang kpd sw open source bagi membuktikan keupayaan mereka ;-)

(0) comments

Thursday, April 08, 2004

Link menarik tentang senarai work flow engine yg open source.

(0) comments

Wednesday, April 07, 2004

Kesesuaian AOP
7. Sebagai event listener. Listener selalunya perlu didesignkan ke dlm code spt Listener utk Swing dll. Tapi, dgn AOP, kita boleh 'lekatkan' apa shj Listener kat hampir mana2 pun dlm code kita.

(0) comments

Artikel menarik
Pengenalan kpd JMS, menggunakan OpenJMS.

Lain-lain
Kena R&D jBpm dan OpenAdapter nampaknya.

(0) comments

Tuesday, April 06, 2004

Whoops! Lupa. Semalam genap anak saya berumur 3 bulan. Alhamdulillah, dia semakin montel.

(0) comments

Monday, April 05, 2004

Artikel menarik

Pengenalan kpd Java cryptography. Ada cth code utk encrypt dan decrypt menggunakan encryption algo Blowfish. Mudah gak utk difahami.

Pengenalan kpd JDBC ver 3.0. Menerangkan penambahan kpd JDBC sejak dari ver 1.0 hingga kini, spt scrollable resultset.

Pengenalan kpd POI. Lib POI boleh digunakan utk menghasilkan file ms excel dan word. Dlm artikel ini, dia menerangkan tentang POI dan excel. Menggunakan POI, kita boleh hasilkan file excel, membuat seberapa banyak sheets dlm file tersebut, membuat seberapa banyak row dan seberapa banyak cell utk setiap row. Kita juga boleh gerakkan sejumlah row ke atas mahupun ke bawah, memasukkan pelbagai nilai ke dlm cell spt string, int, dll, termasuk juga jenis font, warna dan formula sekali!

Saya dah pernah guna POI, walaupun tak secara mendalam. Farid yg lebih pakar dlm menggunakan POI ini. Tapi, artikel ini menerangkan POI ver 2.0, yg terkini lagi sensasi. Rasanya masa saya dan Farid godek2 POI dulu, lebih 1 tahun yg lepas, belum ada support utk masukkan formula rasanya. Ye ke?

Walau apa pun, POI adalah salah satu lib yg saya kategorikan sebagai FTP. Syabas!

(0) comments

Thursday, April 01, 2004

Blog Hibernate
Blog tentang hibernate di sini.

(0) comments

Kesesuaian AOP
6. Bridge. Semasa insert, saya memerlukan hubungan kpd satu module lain. Selain insert record saya sendiri, saya perlu insert record kat table lain yg digunakan oleh module lain. Kalau cara biasa, saya kena ubah code sedia ada, cara AOP, saya buat kelakuannya dan 'letakkan' kat mana2 yg saya nak.

Tambahan penerangan tentang logging dgn AOP. Salah satu objektif lib yg buat logging dlm java spt Log4J atau yg built in dlm jdk 1.4, ialah utk membuatkan kos melakukan logging ini seminima yg mungkin. Utk itu, mereka mewujudkan tahap2 dlm logging spt WARN, INFO dll. Selain itu, mereka tak terus menyimpan data dlm log tersebut ke file, tapi, mengumpulkannya dulu dan simpan secara batch.

Ini semua membantu mencapai objektif kos, tapi masih ada satu kos yg mereka tak boleh elakkan. Cthnya:
log.info("Masalah! Nilai umur " + umur + " mestilah dlm julat nilai antara " + UMUR_MINIMUM + " dan " + UMUR_MAKSIMUM);

Code logging kat atas ni tak akan kelihatan jika tahap disetkan kpd melebihi tahap INFO. Jadi tiada kos utk menyimpannya dlm file dan memaparkannya ke console. Tapi, masih terdapat kos dlm MENGGABUNGKAN semua string2 ini menjadi 1 string. Ini tak leh elak, kecuali kita letakkan spt:
if (nakLog)
log.info("Masalah! Nilai umur " + umur + " mestilah dlm julat nilai antara " + UMUR_MINIMUM + " dan " + UMUR_MAKSIMUM);


Tapi cara diatas pun semakin leceh krn setiap class yg nakkan khidmat log kena ada flag ini.

Satu cara mudah dan amat berkesan ialah dgn menggunakan AOP. Bila nak disablekan logging sepenuhnya, mahupun sebahagian, kita hanya perlu buang aspect yg berkenaan dpd projek kita dan compile semula. Code2 logging terus tak de dlm code asal.

(0) comments

Keel Framework

fnd email kat saya menanyakan tentang framework keel ini. Saya pernah tengok tapi tak ambil kisah pun. Belum lagi. Keel nampaknya nak menjadi juara dlm menggabungkan seberapa banyak open source projek yg mungkin.

Pada permukaannya, kelebihan framework ini ialah ia dah gabungkan / integrate banyak projek. Kelemahannya, mereka yg baru dgn projek2 ini mungkin tenggelam dan lemas dlm lautan projek yg banyak dan agak kompleks. Satu lagi, keel tak de atau belum ada atau saya tak perasan ada, AOP. :-)

(0) comments

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