|
[ kernel82 @ 18.04.2008. 14:14 ] @
| Pozdrav svima,
Pocetkom 2006 sam radio na razvoju jednog projekta u JSF-u i moram prizati da je bilo prava nocna mora. Sam framework je bio bugovit (sam engine se "zaglupljivao"), razvojna okruzenja dosta losa (Exadel - spor, bug-ovit).
Od tada nisam imao nikakvu zelju da se vise mucim i trazim resenja za svakodnevne probleme.
Jedino sto mi se kod JSF-a svidelo je ideja kako to sve treba da funkcionise i skup mogucnosti koje je nudio. Sada ponovo razmisljam da mu se vratim, ovaj put koristeci NetBeans kao okruzenje za razvoj.
Sada me zanima da li je neko uspeo da razvije ozbiljan projekat (recimo preko 150 jsf stranica, preko 2000 klasa, sklalabilan) koriscenjem ovog frameworka i kakva su iskustva? |
[ anon315 @ 18.04.2008. 15:35 ] @
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]
[ kernel82 @ 18.04.2008. 16:18 ] @
Citat: Vanja Petreski: NE, NE, NE, NE, NE i NE!!!
Znaci bezi od toga ko djavo od krsta.
[Ovu poruku je menjao Vanja Petreski dana 18.04.2008. u 17:09 GMT+1]
Ovako sam i ja savetovao svima pre 2 godine.
Znaci nista se nije promenilo, a ocekivanja su bila ogromna.
Hvala na (nazalost ocekivanom) odgovoru.
[ anon315 @ 18.04.2008. 16:39 ] @
Pa dobro, ne treba biti tuzan, sad makar znamo sta ne valja
Mada mi se sve vise i vise cini da je problem mnogo kompleksniji od samog web frameworka (ne mislim na JSF, nego uopste).
Nekako je sve previse komplikovano. Da bi se odradile osnovne funkcionalnosti, potrebno je mnogo vremena i napora.
Ako pogledamo, postoji toliko LAMP aplikacija. Sto bi reko jedan anonimus ( http://highscalability.com/whats-your-scalability-plan): Language: PHP 5 - no bloated frameworks, waste of time for me. You spend too much time trying to figure out the framework instead of getting work done.
Naravno, nemoguce je preci na PHP posle Jave, da ne ulazimo sada u raspravu, ali u sustini je poenta uraditi posao, a ne zajebavati se previse sa frameworkom, sto je realnost i ono sto radimo svaki dan - previse.
Sve vise pocinjem da verujem u COC ( http://en.wikipedia.org/wiki/Convention_over_Configuration) 
[ bags @ 18.04.2008. 16:55 ] @
Onda ces se oduseviti sa RoR.
Sve do prve prilike kad ti bude nesto trebalo izvan "Conventions"-a. :)
[ anon315 @ 18.04.2008. 17:06 ] @
Nije valjda tako? :)
Ja optimistican zbog ovoga sto je James Duncan Davidson pricao:
Citat:
The attention would also be short-lived if Ruby on Rails had no depth--that is, if once you tried to use it for anything beyond the simplest of web applications, you suddenly found yourself hitting a wall, unable to proceed due to inherent limitations. Experienced developers who know their way around the Web have repeatedly reported that this is not the case with Rails. For example, Tomcat, Ant, and the Servlet API author James Duncan Davidson recently wrote:
Rails is the most well thought-out web development framework I've ever used. And that's in a decade of doing web applications for a living. I've built my own frameworks, helped develop the Servlet API, and have created more than a few web servers from scratch. Nobody has done it like this before. That's not to say they got it all right. It's by no means "perfect". I've got more than a few nits and picks about how things are put together. But "perfect" isn't the point. The point is that it gets you up and going fast and has plenty of depth to keep you going. And Rails does that very well.
[ Skaarj @ 18.04.2008. 17:15 ] @
Moram da se slozim da su Java frameworci koji se koriste za web toliko nepotrebno zakomplikovani da to stvarno nije normalo. Pa ljudi koliko nivoa apstrakcije je potrebno da se generise jedan HTML stanica? I generalno Java i web se nekako sve vise udaljavaju. Radio sam na par velikih Java web orijentisanih projekata pre 6-7 godina i stvarno komplikacija do komplikacije (a stvar i dan danas nije mnogo bolja). Jedno vreme sam pratio sta se desava u Java svetu po pitanju toga i jednostavno odustao. Verovatno bih da mi sada treba neka web aplikacija u Javi koristio obicne servlete i par dodatnih biblioteka.
Trenutno gulim PHP i za nove projekte koristim Zend framework. Najvise zbog toga sto je modularan i sto mozes tacno da odaberes koje klase koristis za razliku od nekih drugih...
[ aleksandar.dragojlovic @ 19.04.2008. 01:06 ] @
Zdravo svima. Znam da se ovo ne tiče konkretno teme, ali imamo problem. Da li je neko imao iskustva sa AppFuse-om? Pitam ovde zbog JSF-a...
Da ukratko objasnim. Moja devojka ima zadatak da napravi neku aplikaciju koristeći AppFuse. Čitali smo šta sve on "može", za pojedine elementenašli primere, a za ostalo je ostalo na tome "može".
Dakle ako je neko koristio AppFuse i bio bi ljubazan da podeli znanje sa nama, bio bih zahvalan (dakle ukratko bi nam trebale smernice, možda neki link i slično - ne da nam da projekat i sl).
Saša 
[ degojs @ 19.04.2008. 01:21 ] @
Citat: Moram da se slozim da su Java frameworci koji se koriste za web toliko nepotrebno zakomplikovani da to stvarno nije normalo. Pa ljudi koliko nivoa apstrakcije je potrebno da se generise jedan HTML stanica?
A šta konkretno zameraš najobičnijim JSP stranicama?
Meni je to sasvim OK, pogotovo ako ćeš da porediš sa PHP-om.
Dalje, radio sam malo sa verovatno najraširenijim Java MVC frameworkom, Struts-om, i takođe mi je bio OK. Malo jeste potrebno da se uhodaš, ali bože moj, mislim da je to istina za svaki MVC.
[ anon156554 @ 19.04.2008. 08:18 ] @
Dreamweaver + JSP/SERVLET + CSS = moc...
[ Skaarj @ 19.04.2008. 10:32 ] @
Citat: degojs: A šta konkretno zameraš najobičnijim JSP stranicama?
Meni je to sasvim OK, pogotovo ako ćeš da porediš sa PHP-om.
Dalje, radio sam malo sa verovatno najraširenijim Java MVC frameworkom, Struts-om, i takođe mi je bio OK. Malo jeste potrebno da se uhodaš, ali bože moj, mislim da je to istina za svaki MVC.
Nisam rekao da ista zameram JSP/Servletima. Sta fali JSP/Servletima? Nista. Da, nisu resenje u svakoj situaciji ali za neke normalne potrebe su sasvim ok.
Komentar je generalno namenjen Java web frameworcima i sklonosti da se umire u lepoti softverske arhitekture i da se prave stvari koje su komplikovane bez potrebe. Takav pristup dovodi do toga da se jako jednostavan projekat jako komplikuje i samim tim poskupljuje. To onda automatski suzava krug klijenata koji su uopste zaintereovani da nesto rade u Javi. Na stranu problem sa hostingom.
Priznajem da vec duze vreme ne pratim aktivno tu scenu ali vidim da su sada tu i GWT i Grails i jos neki projekti koji mi se cine perspektivnim. Jos samo da nadjem vremena da ih isporbam...
I na kraju da li je neko isprobavao Apache Wicket i kakvi su utisci?
[ franticnick @ 19.04.2008. 11:29 ] @
Kad se vec pominje RoR, da li je neko probao Grails http://grails.codehaus.org/ ? Ja sam odradio jedan mali projekat u njemu i moram priznati da nesto jednostavnije za razvoj web aplikacija jos nisam video.
Evo screencastova koji to ilustruju: http://grails.codehaus.org/Grails+Screencasts
[ dejankr @ 21.04.2008. 09:20 ] @
Ja sam uspešno koristio JSF na više projekata i vrlo sam zadovoljan sa njime. Doduše, ne čist JSF nego u kombinaciji sa Seam frameworkom. Pošto je Seam dizajniran dosta po ugledu na RoR, mnogo je jednostavnije raditi sa njime nego spajati druge frameworke. Naravno, pod uslovom da nemate problem sa smanjenom kontrolom nad generisanim kodom i samim dizajnom aplikacije.
E sad, većina stvari koje je Vanja rekao stoje, mada meni lično nisu smetale. Razlog je što sam Seam koristio za relativno jednostavne aplikacije, što nisam imao potrebe da pravim svoje komponente i čitljive URL-ove. Dalje, neke od navedenih problema JSF-a Seam rešava, poput Back dugmeta, GET metoda, a čini mi se da su skoro uveli i podršku za čitljive URL-ove. Saem podžava i koncept konverzacija koje većina drugih frameworka ne podržava. Praktično radi se o još jednom scope-u između Session i Request-a.
E sad, lično ne bih koristio JSF/Seam za svaki projekat. Ne kažem da ne može da se koristi ali još uvek mi ne deluje dovoljno ubedljivo što se tiče performansi kod high-traffic aplikacija. Takođe, ako želite da imate potpunu kontrolu nad generisanim HTML-om/JavaScriptom, JSF bolje zaobiđite...
[ anon315 @ 21.04.2008. 20:35 ] @
Citat:
Ja sam uspešno koristio JSF na više projekata i vrlo sam zadovoljan sa njime.
Pretpostavljam da se ti projekti vrte na intranetu?
Ali kada imas projekat koji ide na internet, pojavljuje se gomila novih problema i potreba (pocevsi od najbanalnijih kao sto je nemogucnost da kazes "koristite Firefox"  )..
Citat:
Saem podžava i koncept konverzacija koje većina drugih frameworka ne podržava. Praktično radi se o još jednom scope-u između Session i Request-a.
Ovo zvuci zanimljivo, jel mozes malo vise o tome?
Naime, bas imam osecaj da postoji potreba za nekim scope-om koji nije request (jer imas konverzaciju i treba da se pamti neko stanje), ali opet ne zelis da imas u sesiji gomilu stvari i cekas da prodje expiry time ili da korisnik uradi logout. Ako je to to sto mi se cini, zanima me kako/kada se zavrsava konverzacija, odnosno kako/kada se ciste objekti iz tog scope-a?
[ dejankr @ 22.04.2008. 09:30 ] @
Po meni je glavni problem što nisam siguran da JSF može da skalira. Tj, da se koristi za sajtove sa velikim saobraćajem. Pošto se stanje svake komponente čuva ili na serveru ili na klijentu možeš ili da opteretiš server sa velikom količinom podataka u sesiji ili da stanje stalno šalješ preko mreže na klijenta i sa klijenta čime opet povećavaš saobraćaj. Opet, za najveći broj aplikacija ti nemaš ovakve probleme pošto ih ne koristi veliki broj korisnika.
Što se tiče konverzacija, klasičan primer je neki wizard. Tj, kad imaš neki niz stranica kroz koje korisnik prolazi, i gde ti treba stanje od početka tog niza, ali ti to stanje ne treba jednom kada se završi wizard.
Kada koristiš konverzacije, Seam tvom URL-u doda novi parametar koji predstavlja id konverzacije. Ti onda možeš paralelno da imaš više konverzacija koje se ne sudaraju međusobono pošto svaka ima svoj scope. Tehnički, taj scope nije ništa drugo do Mapa koja se čuva u Sesiji, i koja na osnovu conversation id vadi odgovarajuće atribute za tu konverzaciju.
Ima više načina da se otpočne/završi konverzacija - preko samog url-a, dodavanjem anotacija na metod itd.
Za više informacija pogledaj http://docs.jboss.com/seam/2.0...nce/en/html/conversations.html
[ anon315 @ 04.05.2008. 02:05 ] @
Koga zanima, moze da vidi sta ostatak sveta misli o ovoj temi. Pazite kakve reakcije je ova tema izazvala na DZone-u ;)
http://www.comesolvego.com/200...3/game-over-java-server-faces/
http://www.dzone.com/links/game_over_java_server_faces.html
[Ovu poruku je menjao Vanja Petreski dana 04.05.2008. u 03:22 GMT+1]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|