Wicket czy Playframework?

Jestem zupełnie nowy w Java Web development i chciałbym wybrać dobry Java web framework do nauki. Znalazłem naprawdę dobre ECHA dotyczące Apache Wicket framework i Playframework . Postanowiłem wybrać jedną z nich, ale muszę wybrać; -)

Więc co wybrać i dlaczego?

EDIT

Moje wymagania:

  • miałem dobre doświadczenie w rozwijaniu z Django, więc podobny framework byłby świetny,
  • I potrzebujesz frameworka, który może wchodzić w interakcje z innymi popularnymi gadżetami Javy (bibliotekami, narzędziami ..itp), Więc mogę skorzystać z tego, co oferuje Java.
Author: MrSmith42, 2010-11-10

4 answers

Wicket i Play to dwa bardzo różne rodzaje frameworków.

Play to framework MVC, z którym prawdopodobnie będziesz się czuł zaznajomiony z Django. Podobnie jak Django, oferuje więcej niż tylko bity sieciowe i dostarcza Framework ORM oparty na JPA, narzędzia do rusztowania i prawdopodobnie wiele więcej(nie mam z tym praktycznego doświadczenia). Mają świetny samouczek na swojej stronie i prawdopodobnie zobaczysz tam podobieństwa Django.

Wicket jest frameworkiem zorientowanym na komponenty (jak JSF i Tapestry) i skupia się głównie na projektowaniu obiektowym. Jest to również MVC, ale strony są zwykle budowane przez komponowanie samodzielnych i wielokrotnego użytku komponentów (widok i kontroler, modele pluggable). Komponenty te mogą być rozszerzane o standardowe dziedziczenie, a skład i znaczniki są bardzo czysto oddzielone od kodu i łatwo modyfikowane.

Wicket może zarządzać wywołaniami zdarzeń i stanami automatycznie, dzięki czemu nie musisz mieć do myślenia adresów URL, bez względu na to, jak skomplikowane Twoja strona jest. Szybki przykład klikalnego przycisku, który odchodzi po kliknięciu (bardzo przydatny):

  // In a page constructor
  add(new Link("link") {
        public void onClick() {
          setVisible(false);
        }
    });

Chcę podkreślić, że nie musisz używać stanu po stronie serwera i że jest całkiem możliwe użycie Wicket jako" normalnego " frameworka MVC, jeśli chcesz (i tak, łatwo jest uzyskać ładne adresy URL).

Projekt Wicket skupia się tylko na podstawowym frameworku internetowym i nie ma dodatkowych "miłych", takich jak specjalne Wsparcie ORM lub rusztowanie. Ja osobiście zgadzam się z bramką Filozofia projektu tutaj, ale dla nowych programistów przybywających do frameworka, robienie "prostych" rzeczy ,takich jak sortowalna i stronicowana tabela, może być nieco zniechęcające, ponieważ wstępnie zbudowane komponenty są trochę rzadkie. Krzywa uczenia się i produktywności dla Wicket może być nieco stroma, ale plusem jest to, że gdy już stworzysz komponenty (i "zachowania" - dłuższą historię), które pasują do Twoich potrzeb, są one niezwykle wielokrotnego użytku.

Chociaż osobiście kocham Wicket, Mam przeczucie, że prawdopodobnie będzie Ci najlepiej z zabawą. Twoje pytanie wskazuje, że chcesz mieć "Django" z dostępem do bibliotek Javy i w takim przypadku myślę, że Play (lub jakiś inny MVC Javy) jest bezpiecznym wyborem. Z drugiej strony, być może używałeś Django, ponieważ nie wiedziałeś, jak niewiarygodnie potężny jest Wicket. ;) Jeśli podasz więcej informacji na temat swojego projektu, będziemy mogli udzielić bardziej wykwalifikowanej odpowiedzi.

Jako boczny węzeł: ponieważ gra nie jest zbyt mainstreamowa( przynajmniej na razie), rozważyłbym również Grails, który ma silne komercyjne wsparcie i jeszcze więcej gotowych modułów.

 51
Author: DaGGeRRz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-10 23:17:32

Graj! jest zaprojektowany tak, aby był wygodny dla programistów wywodzących się z języków skryptowych, takich jak Python i PHP. Dostarcza własny system budowania i skrypty zarządzania, podobnie jak Rails czy Django. Istniejące narzędzia do budowania i infrastruktura (jak repozytoria Maven powszechnie używane do zarządzania zależnościami w Java-land) nie będą dobrze integrować się z Play.

Wicket będzie wygodniejszy dla programistów wywodzących się z desktopów w Javie. Nie zapewnia specjalnych narzędzia, więc łatwiej będzie zintegrować się z konkretnym narzędziem budowania, jeśli masz preferencje (i istnieje wiele narzędzi budowania dostarczających rzeczy takich jak automatyczne pobieranie zależności dostępne w ekosystemie Java.)

Więc istnieje spora różnica między tymi dwoma opcjami :) jeśli możesz dowiedzieć się, które doświadczenie przyniesie Ci największe korzyści, decyzja powinna być dość jasna.

 17
Author: David Winslow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-10 20:03:44

Jeśli Twój system jest tylko dla warstwy internetowej , Graj! ramy są bardzo odpowiednie. But, jeśli twoje modele danych nie są przeznaczone tylko dla sieci, może exported as REST by Spring with CXF i są używane przez GWT lub inne usługi sieciowe, i chcesz mieć pewność, że spójne stany z warstwą sieci web, Wicket (Z Spring/hibernate) jest dobrym wyborem.

Coś, co nie czuje się dobrze w grze! jest mechanizmem buforowania. Musisz ręcznie nazwać/wstawić/pobrać/unieważnić / wyczyścić pamięć podręczną . To sprawi, że cała architektura podatne na błędy. Natomiast przy użyciu spring/JPA (hibernate)/ehcache(lub innych dostawców) można zdefiniować spójną warstwę buforowania/dao dla warstwy górnej (web / REST...), co nie narzuci niespójności stanu.

Kolejną zaletą wicket jest wbudowana obsługa AJAX wspierana przez Javę . Chociaż te stany AJAX są utrzymywane po stronie serwera (i może trochę powolne) , jeśli nie chcesz uczyć się JavaScript , nadal możesz zbudować "nie tak złą" stronę AJAX .

Z Graj! Jeśli nie wiesz o JS i nie chcesz się go nauczyć , nie chcesz manipulować uciążliwymi domami, możesz zbudować tylko "przeciętną" stronę. OTOH, jeśli jesteś wykwalifikowany z JS / jQuery, możesz wybrać Play! .

 7
Author: smallufo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 01:12:36

Używam PLay! dużo i użyłem Wicket do trochę oceny. Moje doświadczenie jest takie, że trzeba napisać o wiele więcej kodu, aby wykonać tę samą pracę z Wicket. Masz więcej "indrection" z Wicket. Osobiście wolę kod, który ma jak najmniej "ceremonii" i który jest łatwy do naśladowania.

Sztuka! architekci dodają również obsługę Scali do Play!, co moim zdaniem jest świetnym pomysłem, ponieważ Scala jest w pełni interoperacyjna z kodem i bibliotekami Javy, ale o wiele bardziej Zaawansowane, a następnie Java.

 3
Author: eriq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-17 21:33:11