JSF i dlaczego jestem zdumiony

Jak wspomniałem w jednym z poprzednich wpisów nabyłem trochę ciekawych książek o wiadomym temacie. No i po tym jak ‘prześlizgnąłem się’ po Head-First JSP i Servlety zabrałem się od razu za Core JSF. I ZONK! Po raz kolejny podejście wzięte z PHP sprawiło, że uderzyłem o ścianę. Ale tym razem cholera miało być inaczej.

Tok mego rozumowania był prosty – mamy JSP i serwlety. Służy to do pisania aplikacji webowych dla platformy JEE (nie całych, ale na pewno widoku i kontrolera). Znaczy się może służyć, bo wiadomym jest, że dzisiaj raczej w czystych językach nikt nie pisze – używa się różnych bibliotek i komponentów, których połączenie często okazuje się na tyle fajne, że powstaje framework. I takie coś mamy w PHP – język językiem, no ale w okolicy wersji 5.1 kiedy to OOP przestało być czymś na papierze, a stało się rzeczywistością pojawiły się pierwsze frameworki. Kiedy rozpoczynałem pracę jako koder PHP dostałem się w szpony Zend Frameworka i wciąż w nich tkwię. Po drodze bawiłem się trochę Symphony, a także RORem (choć to inny język). Dla mnie zatem framework to zestaw przynajmniej gotowych komponentów, które rutynowe czynności w budowie aplikacji sprowadzają do inicjalizacji kilku obiektów i wywołania ich metod. To co potrafi momentami Symphony czy ROR to już w ogóle kosmos i nic dziwnego, że ludzie tego używają.

Wracając do Javy – myślałem, że JSP to takie PHP, no a JSF to framework, czyli liznę tego pierwszego na razie byle się tylko orientować, przepatrzę książkę o JSFie i wezmę się za pisanie projektu łączącego tę wiedzę w jednym. Może to wina książki, albo i samego narzędzia. Jednakże załamało mnie to, iż po lekturze 100 stron to wiem na pewno, że wszystko o czym czytam zostanie omówione w następnych rozdziałach. No nic, przepatruję z ciekawości spis treści. Przerobiłem na chwilę obecną wstęp, coś o beansach, rozdzialik o nawigacji (XML rządzi) i zacząłem znaczniki standardowe. Zostaje mi rozdział o znacznikach niestandardowych, weryfikacji danych, obsłudze zdarzeń i… w sumie nic. Bo następne rozdziały to niestandardowe elementy, potem JDBC/LDAP, AJAX no i omówienie bardzo pokrótkie inych frameworków!!! Na koniec mam rozdział zatytułowany ‘Jak to zrobić?’. Mam pomysł by na tym pytaniu oprzeć ćwiczeniowy projekt pisany w JSP (aplikacji internetowej) zatem przerzuciłem te 400 stron i wziąłem się za szybkie przeglądanie rozdziału. ZONK!

Rozbiło mnie już pytanie trzecie (sic!) na łącznie około 35. Jak zaimplementować obsługę wysyłania plików na serwer?. O nareszcie coś z bliskich mi klimatów. Dla niezorientowanych w temacie PHP wyjaśniam – w tym języku jest to kwestia sprawdzenia czy przesłano element “file” z formularza, po czym sprawdza się czy plik doszedł i zapisuje się go w docelowym katalogu. W wersji spartańskiej robi się to może 5 linijkami kodu (wliczając po nawiasach klamrowych na linię). W Zend Frameworku mam do tego jego element w postaci Zend_File, a w nim cuda niewidy – walidatory, filtry, plus adaptery dla wysyłania plików. Można to łatwo zobaczyć – kilka linii kodu i działamy.

A co mamy w JSF? Chwilka, już liczę… Serwlet filtrujący (109 linii kodu) plus klasa renderująca (89 linii) plus klasa dla znacznika ( 28 linii ) plus sam plik JSP ( 18 linii ), ale to można pominąć. Szybkie dodawanie i okazuje się, że by wysłać plik na serwer i wiedzieć, że dotarł cały i bezpieczny muszę sklepać ponad 200 linii kodu!!! Cholera no to jest framework czy jakiś #$@#@%^^%? Jak można nazywać taką technologię frameworkiem, skoro zamiast usprawniać tworzenie aplikacji niewiele ona w sobie zawiera? No niby co poza jasno określonym MVC (ale przecież JSP też to ma, a tu jeszcze od cholery XMLa na ścieżki nawigacji), pomocą z renderowaniem widoku (View) czy w końcu znacznikami JSF technologia ta może zaoferować?

Ufff, przepraszam, uniosłem się, to był przedostatni raz. Naprawdę zaczynam rozumieć, dlaczego w ogłoszeniach o pracę dla javowców wymienia się po 4 elementy z każdej dziedziny (Struts, Spring, JSF, Ant, Maven, Hiberante, TopLink, iBATIS, JBoss, WebSphere, Tomcat). Nie wiem, ja generalnie młody jestem, zaczynam bawić się w te klocki, ale błagam, niech ktoś mi powie: “potem będzie lepiej”. Framework będzie frameworkiem z zapleczem, a nie tylko ulepszonymi grabiami czy łopatą. Proszę niech ktoś powie: “młody jesteś, ucz się dalej”. Jak już poznasz to zrozumiesz.

Proszę 🙂

Advertisements

4 thoughts on “JSF i dlaczego jestem zdumiony

  1. kretes

    Wiesz, nic nie jest pewne, anie stałe. frameworki się zmieniają, raz używa się tego,raz tamtego.

    Generalnie JSF jest bardzo surowym frameworkiem, abstrakcyjnym i na nim budowane są kolejne ;-), i wtedy wrzucanie plików masz dość prosto.
    np; tu http://www.onjava.com/pub/a/onjava/2005/07/13/jsfupload.html?page=3 wygląda na ok 😉

    Później jest lepiej, bo wiesz, czego się spodziewasz, a ilość popularnych frameworków nie jest nieskończona.

    powodzenia!

  2. Paweł Ryznar

    jeszcze nie dotarłem do do JSF ale rozmawiałem kiedyś ze znajomym o tym i owym i mówił coś takiego że w przypadku JSF z debugowaniem jest ciężko, że od niedawna Netbeans to wspiera
    ciekawe, ogólnie rzecz biorąc to strasznie to trochę wygląda 😛

  3. Łukasz Dywicki

    Wydaje mi się że spodziewałeś się zbyt wiele po JSF. Moim zdaniem to tak na prawdę coś al’a Smarty w PHP. Celem Java Servlet Faces było budowanie aplikacji z komponentów (klocków) tak jak ma to się w Swingu. Czyli odpalasz graficzny edytor, dodajesz biblioteki i ładnie drag-and-dropem załatwiasz kolejne strony. W JSF nie masz zarządzania bazą danych, transakcjami itp. ponieważ twórcy na tym się nie skupiali. Stąd powstały dodatki (rich faces, myfaces itp), które bądź co bądź to cały czas GUI.

    Ja również miałem inną wizję JSF dopóki go nie zacząłem używać. W swoim projekcie jego braki uzupełniałem Springiem, a JSF potraktowałem jako sposób na renderowanie HTML i wywoływanie akcji (z czym też bywało różnie).

    Jeśli szukasz frameworka, który wspiera developera, pomaga mu w pracy a nie przeszkadza uproszczając zagadnienia złożone to polecam właśnie Springa – IMO najlepszego rozwiązanie na rynku J2EE/JEE, z którym można tworzyć na prawdę świetne aplikacje z przejrzystą strukturą (architekturą) i pięknym kodem.

  4. Krzysiek

    W JSF też da się pisać, jak się weźmie dobrą bibliotekę komponentów i doda np. Facelets (szablony i zamiast JSP, bardzo upraszcza życie).

    No i jest jeszcze Seam. Seam bardzo upraszcza JSF i presystencje, do tego domyślnie stosuje bardzo dobre komponenty RichFaces. W trybie kryzysowym zmieniałem kiedyś technologię widoku do projektu na studiach (to znaczy w Piątek, gdy mnie wkurzyło coś, to powiedziałem dość, a oddanie było w poniedziałek. Od zera do aplikacji w 2 dni) i co prawda jest duużo do nauki, ale później śmiga.

    JSF 2.0 będzie lepsze, w dużej mierze oparte na tym co robił Seam.

    No, ale jak już Grails się ruszyło to pewnie trudno zmienić technologie na inną 😉

    ps. w Seam można używać Groovy.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s