anon315
Član broj: 315 Poruke: 1657 *.adsl-1.sezampro.yu.
|
NE, NE, NE, NE, NE i NE!!!
Znaci bezi od toga ko djavo od krsta.
Ja se dve godine zezam sa tim, mada iskreno receno, uvek sam se bavio nizim slojevima, a tu i tamo ceprknuo po nesto u JSFu. Poslednjih mesec dana radim web aplikaciju u JSF-u i moram ti priznati da je to i poslednji put. Ovaj pilot mi je definitivno pokazao da je JSF tesko s*****.
Elem, JSF 1.2 (RI) sam napumpao steroidima: Jboss RichFaces, Facelets, Spring Controller anotacije i njegov EL resolver. I pored svega toga - bulja.
Sta je to sto mi smeta: skoro sve, ali ajde da navedem samo par teskih jsf debilizama:
1) Nepotpuna kontrola nad generisanim HTML kodom. Na primer, neke RichFaces komponente pljuju nekompatibilan XHTML kod.
2) Nepotpuna kontrola samih custom komponenti: dokle god ti je potrebno bazicno funkcionisanje komponente sve radi. Cim treba da modifikujes komponentu, koja je jelte konfigurabilna, dolazi do problema, pa tako na primer scroller komponenta uopste ne radi pravi paging, nego svaki put ide u bazu i dovlaci sve, a onda iz memorije uzima range. Ako ovo hoces da promenis, moras maltene da izmenis pola komponente.
3) Razvoj custom komponenti je strasno komplikovan
4) IZUZETNO kretenska stvar - s obzirom da postoji vise faza u zivotnom ciklusu, cesto se desava da se neki geteri pozovu vise puta!!! E sad zamisli da ti geter zove servisnu metodu koja na kraju preko dao-a pogodi DB. Znaci imas vise cimanja baze, umesto samo jednom. Trik sa != null ne resava problem ako ti je bean request scope-a, sto je najcesce slucaj. Cak i nova @PostConstruct anotacija ne pomaze, jer se ta metoda svaki put poziva ako imas request scope, opet si puko. Resenje se svodi na budzenje frameworka i trpanje odredjenih stvari u sesiju, ali tada kod postaje ocajno ruzan i nelako odrziv. O bagovima da ne govorim.
5) Ne postoji podrska za back dugme, mada ovo i nije problem frameworka. Problem sam resio pisanjem custom PhaseListenera koji ubija kesiranje browsera.
6) Necitljivi URL-ovi - ako radis web 2.0 aplikaciju ili cak i obicnu aplikaciju koja ima potrebu za citljivim url-ovim od toga nista jer JSF uvek radi post. Resenje se svodi na budzenje frameworka i pisanje custom phaselistenera.
7) Jos jedna kretenska stvar - JSF radi submit forme sa neke stranice na samu tu stranicu, kako bi mogao da pozove backing bean metodu da handluje event. Naravno, ako imas request, opet dolazi do kompletne inicijalizacije svega zivoga, komponenti, pozivanje getera, postconstructa itd. Samo da bi submitovao formu i otisao eventualno na drugu stranu. Ovo ponasanje je nemoguce izmeniti.
8) Prava reusabilnost ne postoji - dakle ako zelis da iskoristis postojece custom komponente da bi napravio novu - to ne moze. Na srecu faceleti imaju dobru podrsku za to, templating i komponente, pa mozes da pravis svoje tagove i da ih parametrizujes.
9) Sto se tice IDE-a, sada mislim da skori svi podrzavaju JSF. Ja koristim Ideu, ali cak i ona nije mogla da se snadje kada sam ubacio Facelete, pa se pisanje stranice maltene svelo na obican editor.
I ne mogu sada svega da se setim, ali jednostavno framework je tesko razocaranje. Ucini sebi uslugu i bezi od toga.
Jedina dobra stvar je sto postoje neke komponente custom koji ti lako zavrsavaju posao - recimo file upload itd.
Ali ako uzmemo u obzir teske mane koje sam naveo, nemogucnost kompletne kontrole html koda, i ponasanje komponenti, potpuno je jasno da ovaj framework treba izbegavati.
Sta umesto toga? Nemam pojma, treba izabrati. Iskreno, ozbiljno razmisljam da dam sansu RoR (Ruby on Rails), a sto se tice Jave, razmisljam o WebWorku, Wicketu, Spring MVC-u u kombinaciji sa nekim Prototypom, Dojom i sl, mada treba izvagati to dobro..
[Ovu poruku je menjao Vanja Petreski dana 18.04.2008. u 17:09 GMT+1]
|