2009-04-02 15 views
5

GWT jest głównym powodem, dla którego przenoszę się do java w celu tworzenia stron internetowych. Który framework java najlepiej z nim współpracuje, a jednocześnie zmaksymalizuje ponowne wykorzystanie kodu dla przyziemnych zadań, takich jak sprawdzanie poprawności formularzy, dostęp do baz danych, paginacja itp.?Który framework Java najlepiej działa z Google Web Toolkit?

Dzięki.

Odpowiedz

2

Zakładam, że nie masz na myśli struktury internetowej, ponieważ GWT sam jest strukturą. Używałbym JSF do obsługi strony logiki aplikacji/biznesu. Ułatwia przechowywanie i zmienianie zakresu, a także dostęp do bazy danych. Do czytania DB, dowolny smak JPA lubisz. Mam dobre doświadczenia z Eclipselink, ale teraz wszyscy wdrażają te same interfejsy. Możesz również spojrzeć na EJB, aby rzucić wszystko razem i wstrzyknąć potrzebne WZP.

+0

dlaczego jsf? czy przekazujesz JSON do przodu, czy też używasz bezpośrednich połączeń serwisowych? Tak czy inaczej, JSF nie jest potrzebny. – user37468

+0

głównie do tworzenia i odpowiedniego zakresu zarządzanych komponentów bean na instancję/żądanie/instancję aplikacji – GBa

8

Wiosna jest oczywistą, z której powinieneś korzystać. GWT ma swój własny szkielet kontrolera RPC, więc nie mogę naprawdę myśleć o tym, do czego potrzebujesz struktury aplikacji internetowych (np. JSF).

JPA to rozsądny wybór na wielu frontach, ale ma również problemy.

Po pierwsze, jest to potencjalnie problem z wysyłaniem obiektów JPA do klienta. GWT (do 1,5 co najmniej) wymusza dość surową strukturę katalogów, więc musisz umieścić swoje jednostki w drzewie źródłowym GWT. Poza tym, serializowanie (zwykle JSON) jednostek JPA do i od klienta jest potencjalnie problematyczne.

Jednostki JPA to dość sztywne obiekty, które odwzorowują prawie jeden do jednego w stosunku do twoich stołów. Nie jest to jednak sposób, w jaki korzystasz z danych w warstwie prezentacji. Bezpośredni SQL pozwala wybrać i wybrać dane, które robisz i nie chcesz, dostosowane specjalnie do tej strony. Zatem jednostki JPA zwykle mają wiele pól, które nie są zainteresowane i nie powinny być serializowane (w szczególności kolekcje relacji jeden-do-wielu).

Ten aspekt SQL - dostosowywanie go do strony - jest często wymieniany jako zaleta podmiotów: Twój kod nie kończy się zaśmieceniem obiektami wartości jednorazowych. Chodzi o to, że nadal kończy się to samo w gWT + JPA, ale zamiast znajdować się w warstwie trwałości lub w warstwie biznesowej, kończy się na nich warstwa prezentacji. Teraz możesz nazwać to zaletą. Nazywam to sześć jeden, pół tuzina innych.

Właściwie uważam, że Ibatis jest o wiele lepiej dopasowany do modelu aplikacji GWT niż JPA, ponieważ używasz bezpośredniego SQL, obiektów dostosowanych do Twojego celu i te obiekty mogą być używane w całości z bazy danych do klienta . Teraz ta koncepcja może przerazić fanatyków warstwowych, które są dość powszechne w Jawie, ale pamiętaj, że warstwowanie jest środkiem do celu, a nie celem samym w sobie. Użyj go, jeśli ci pomoże. Nie, jeśli tak nie jest.

Ale sprężyna jest absolutną koniecznością w tym stosie.

Odsyłam również do: Why isn’t Google Web Toolkit more popular? i Using an ORM or plain SQL?.

+0

Nie musisz umieszczać POJO JPA pod drzewem źródłowym GWT, importujesz je tak jak każdą inną zewnętrzną klasę i upewniasz się, że masz źródło adnotacji WZP w ścieżce klasy kompilatora. – rustyshelf

+0

Cletus, pytanie, które podzieliłeś na temat popularności GWT, minęło. Znalazłem podobny tutaj: http://stackoverflow.com/questions/654587/why-havent-gwt-and-script-style-frameworks-become-dominant –

5

Jeśli tworzysz więcej aplikacji takich jak witryny zamiast stron opartych na stronach, polecam rzucić okiem na strukturę Open Source Vaadin. Jest to framework sterowany przez serwer, który używa GWT po stronie klienta do renderowania interfejsu, ale także automatycznie obsługuje i utrzymuje wrażliwą logikę biznesową po stronie serwera. To dodaje trochę bezpieczeństwa i nie musisz się martwić o klienta (jeśli nie chcesz), ale możesz skupić się na implementacji logiki po stronie serwera w dowolny sposób. Największym plusem jest to, że naprawdę nie trzeba kodować niczego innego niż Java. Jest także dość łatwe wdrożenie własnych nowych komponentów GWT do frameworka.

Nota prawna: Tak, pracuję dla działu IT, który opracowuje Vaadin, ale jego wygląd jeszcze nikomu nie zaszkodzi, prawda?

2

Ow te reakcje ranią mi oczy. JSF, jeśli masz masochistę lub wiosnę, jeśli jesteś klinicznie szalony;) ​​

Jeśli korzystasz z wbudowanego GWT RPC, nie potrzebujesz ram WWW, po prostu używaj mechanizmu RPC do rozmowy z serwerem. W przypadku bazy danych zaplecza i logiki biznesowej wystarczy użyć standardowych ziaren sesji JPA i POJO. Jest to niezwykle lekki, łatwy w użyciu i obsługiwany stos bez żadnych bólów głowy. Jeśli masz zamiar robić formularze poza GWT, to zrób sobie przysługę i sprawdź też Stripes.

W ASCII Graphix:

Database


Fasola JPA sesji & POJOs


Web Poziom obsługiwać routing pomiędzy GWT i EJB warstwą


GWT działa jako języka JavaScript w przeglądarce, z wykorzystaniem wszystkich POJOs zdefiniowanymi w warstwie EJB

+0

Rusty, czy możesz wskazać dowolną próbkę, która używa ten stos. Widziałem mnóstwo napisanych kodów, które sprawiają, że GWT rozmawia z wiosną i hibernuje (sam napisał), ale nie używa Wezji Sezonu JPA. –

+0

Nie mam żadnych próbek, którymi mogę się podzielić. Ale wdrożyliśmy około 5 aplikacji korporacyjnych korzystających z tego środowiska. – rustyshelf

3

Teraz używam GWT + Struts + wiosna + Hibernate
lepiej jest użyć json wymianę danych zamiast korzystania z GWT Serwis internetowy.
W tym celu możemy oddzielić logikę od prezentacji.

1

Używam GWT głównie do wewnętrznych systemów, ale znajduję wszystko, czego potrzebuję, to dobrze zorganizowana baza kodów, wzorzec PAC i Hibernate. Czy to, czego potrzebuję bardzo ładnie.

Zacząłem próbować użyć narzędzi, takich jak spycharka, aby serializować fasolę na serwerze-kliencie, ale szybko okazało się to niepotrzebne. Jeśli potrzebujesz kolekcji barów na foo, następnie rozwiń listę aka getBars (foo). Musisz zapisać foo - RPC to do save(). Niech to będzie proste, ściągnij to, czego potrzebujesz, opublikuj to, czego potrzebujesz, nie więcej. Utrzymuj stan na kliencie i wszystko razem ładnie się łączy.

Najważniejsze było dla mnie zrozumienie faktu, że GWT nie dotyczy budowania aplikacji internetowej. Chodzi o zbudowanie aplikacji w internecie. Bardzo inna rzecz.

GurffT

EDIT: Zapomniałem powiedzieć, mam warstwę logiki interakcji z DAO obiektów po stronie serwera - ale są one dość proste i po prostu wystąpienia z nowym!

0

Jeśli chcesz się zabawić, dlaczego nie skorzystać z playframework.org z GWT? ten dostaje się do prędkości bardzo szybko i ma wszystko, czego potrzeba na serverside (np JPA poprzez hibernacji) :)

0

moim zdaniem najlepszy byłby stos GWT/GIN/Guice w frontend, a następnie Guice dla Twój zastrzyk backendu z JPA + pewien dostawca dla bazy danych.

Wiosna jest ciężka i ma o wiele więcej niż potrzeba. Guice jest bardzo lekki i skonstruowany specjalnie do zastrzyku zależności. Gin jest po prostu bardzo podobny do Guice tylko w kontekście GWT/JavaScript.

Uważam też, że jest wiele wartości, zwłaszcza gdy jesteś na wczesnym etapie korzystania z nowej technologii, aby mieć lekki stos z konceptualnego punktu widzenia. Wiosna przyniesie w 90% słoiki wykonane od początku czasu, co sprawia, że ​​koncepcyjnie trudniej zrozumieć, co robi co. powyższy stos przyniesie części Gin/Guice/GWT, JPA i dowolnego dostawcę (Hibernate, Toplink, itp.), rdzeń Java Web Java (środowisko uruchomieniowe serwera dla bibliotek api apletów) i to wszystko, więc patrząc na twoje słoiki jest łatwiej zrozumieć, co masz i dlaczego. Myślę, że wiosna przyniesie ponad 15 słoików, a dla mnie to zawsze sprawia, że ​​trudniej jest mi zrozumieć, co się dzieje i dlaczego. Nie jestem wścibskim wampirem, faktycznie, wiosna mvc była moją ulubioną, wiosna jest po prostu bardzo duża, a jeśli dopiero zaczynasz, będzie wystarczająco dużo nowych rzeczy, żeby się z tym pogodzić. Nie musisz dodawać złożoności większego niż wymagany szkieletu do mętnienia wód według mnie, co tylko zwiększy krzywą uczenia się.

Powiązane problemy