Jakie są zalety i wady różnych frameworków internetowych Java? [zamknięte]

Rozważam stworzenie własnej strony internetowej przy użyciu Javy i staram się zdecydować, jakiego frameworka użyć. Jednak szybkie wyszukiwanie frameworków Java zwraca ponad 50 do wyboru!

Moja strona będzie po prostu dla mojej własnej przyjemności budowania jej na początku, ale jeśli stanie się popularna, dobrze byłoby, aby miała trochę skalowalności lub przynajmniej była w stanie przeprojektować.

Jakie są główne różnice między bardziej popularnymi frameworkami? Są są przypadki, w których jedna znacznie przewyższa inne? Na przykład aplikacje korporacyjne o dużym natężeniu ruchu w porównaniu z małymi aplikacjami o małym natężeniu ruchu. Zastanawiam się również, czy niektóre są dużo łatwiejsze do nauczenia się i wykorzystania niż inne.

Czy jest ktoś, kto ma doświadczenie z niektórymi z tych frameworków i może wydać rekomendację? Czy sama liczba wyborów służy tylko jako wczesne ostrzeżenie, aby uniknąć tworzenia stron internetowych opartych na Javie, gdzie to możliwe?

Author: Pops, 2008-08-24

24 answers

Użyłem gobelinu 3, Wicket, Echo i JSF dość obszernie. Naprawdę polecam Ci przejrzeć te i wybrać ten, który wydaje się najłatwiejszy dla Ciebie, i jak najlepiej dopasować sposób, w jaki wolisz pracować.

Z nich najwygodniejszą dla mnie pracą był Wicket, ze względu na lekki charakter budowania komponentów i prostotę szablonów stron. To idzie podwójnie, więc jeśli używasz własnego kodu db zamiast Hibernate lub jakiś inny framework (nigdy nie byłem całkowicie zadowolony z integracji Wicket Hibernate lub Spring).

Echo jest świetne, jeśli nie masz nic przeciwko pisaniu całego układu w Javie. Wiem, że teraz jest inaczej, ale nadal uważam, że ten produkt służy dość wąskiej niszy. Zmieniają model rozwoju z każdym głównym wydaniem, jak się wydaje.

Gobelin to świetny produkt, ale oczywiście bardzo różni się od innych pod względem rozwoju model jak to jest prowadzone głównie przez jednego kolesia. Howard Lewis Ship jest bez wątpienia całkiem sprytny, ale jestem rozczarowany ich decyzją, aby w zasadzie zapomnieć o wstecznej kompatybilności z każdym wydaniem. Ponownie jednak, dla Twoich potrzeb może to nie mieć znaczenia, a ja zawsze uważałem, że produkty gobelinowe są przyjemne do pracy.

JSF istnieje od lat i nadal czuje się jak coś, co Rozpórki facet zbudowany, aby naprawić wszystkie problemy rozpórek. Bez prawdziwego zrozumienia wszystkie problemy z rozpórkami. Nadal ma niedokończone wyczucie, chociaż produkt jest oczywiście bardzo elastyczny. Używam go i mam do niego sentyment, z wielką nadzieją na jego przyszłość. Myślę, że następne wydanie (2.0), które zostanie dostarczone w JEE6, naprawdę wprowadzi go w swoją własną składnię, z nową składnią szablonu (podobną do Facelets) i uproszczonym modelem komponentu (niestandardowe komponenty tylko w 1 Pliku... wreszcie).

I oczywiście istnieje milion mniejszych frameworków i narzędzi, które zdobądź własne następujące ( Velocity dla podstawowych potrzeb, raw JSPs , Struts, itp.). Generalnie jednak wolę frameworki zorientowane na komponenty.

W końcu, polecam po prostu spojrzeć na Gobelin, Wicket, i JSF i po prostu wybrać ten, który czuje się najlepiej dla Ciebie. Prawdopodobnie znajdziesz taki, który po prostu pasuje do sposobu, w jaki lubisz pracować bardzo szybko.

 58
Author: jsight,
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-12-15 15:21:32

Moim ulubionym jest Spring Framework. Z 2.5 Spring MVC jest soooo kick ass, z nowymi adnotacjami, konwencją nad funkcjami konfiguracyjnymi itp.

Jeśli robisz coś bardzo prostego, możesz po prostu spróbować użyć zwykłego API Servleta i nie zawracać sobie głowy frameworkiem.

 38
Author: bpapa,
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
2008-08-23 21:55:11

Polecam Framework zorientowany na komponenty Wicket . Pozwala to na pisanie aplikacji internetowej w zwykłym starym kodzie Java, można użyć POJOs jako modelu dla wszystkich komponentów i nie trzeba bawić się z ogromnymi plikami konfiguracyjnymi XML.

Z powodzeniem opracowałem aplikację bankowości internetowej z Struts, kiedy odkryłem Wicket i zobaczyłem, jak łatwe może być tworzenie aplikacji internetowych!

 25
Author: Johannes K. Lehnert,
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
2008-08-25 21:16:28

Ostatnio zacząłem używać frameworka Stripes . Jeśli szukasz frameworku opartego na żądaniach, który jest naprawdę łatwy w użyciu, ale nie nakłada żadnych ograniczeń na to, co robisz, gorąco go polecam.

Jest podobny do rozpórek, ale wykracza daleko poza to. Istnieją nawet niektóre projekty wtyczek, które umożliwiają użycie hibernate lub jpa z bardzo małą konfiguracją.

Istnieje wiele dobrych frameworków, choć słyszałem, że jest też dobry, ale nie używałem go.

 17
Author: ScArcher2,
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
2008-08-25 14:04:20

Nie próbowałem sam, ale myślę

Http://www.playframework.org/

Ma duży potencjał...

Pochodzący z php i klasycznej asp, jest to pierwszy Framework internetowy java, który brzmi dla mnie obiecująco....

 16
Author: opensas,
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
2009-10-25 19:08:36

UPDATE: Tapestry 5.2 jest już dostępny, więc nie jest porzucony, jak się wcześniej wydawało. Moje doświadczenie jest z Tapestry 4, nie 5, więc przebieg może się różnić. Moja opinia o gobelinie zmieniła się na przestrzeni lat; zmodyfikowałem ten post, aby go odzwierciedlić.

Nie mogę już polecić gobelinu tak jak wcześniej. Tapestry 5 wydaje się być znaczącym ulepszeniem, ale mój główny problem z Tapestry Nie dotyczy samej platformy, ale ludzi za nią stojących.

Historycznie każdy główna aktualizacja wersji Tapestry złamała wsteczną kompatybilność ze skrajnymi uprzedzeniami, znacznie więcej niż można się spodziewać. Wydaje się, że wynika to z włączenia nowych technik kodowania lub technologii, które wymagają znaczących poprawek.

Howard Lewis Ship (główny autor Tapestry) jest z pewnością genialnym deweloperem, ale nie mogę powiedzieć, że zależy mi na jego zarządzaniu projektem Tapestry. Prace nad gobelinem 5 rozpoczęły się niemal natychmiast po wysłaniu gobelinu 4. Z tego co ja widać, że Ship poświęcił się temu, zostawiając Gobestry 4 w rękach innych współpracowników, którzy moim zdaniem nie są tak zdolni jak Ship. Po bolesnym przejściu z gobelinu 3 na gobelinu 4 poczułam, że prawie natychmiast zostałam porzucona.

Oczywiście, wraz z wydaniem Tapestry 5, Tapestry 4 stał się dziedzicznym produktem. Nie miałbym z tym problemu, gdyby ścieżka aktualizacji nie była tak brutalna ponownie. Więc teraz nasz zespół programistów jest w raczej nie do przyjęcia pozycja: moglibyśmy nadal korzystać z zasadniczo porzuconej platformy internetowej (Tapestry 4), dokonać ohydnej aktualizacji do Tapestry 5 lub całkowicie zrezygnować z Tapestry i przepisać naszą aplikację za pomocą innej platformy. Żadna z tych opcji nie jest bardzo atrakcyjna.

Tapestry 5 jest podobno napisany tak, aby zmniejszyć prawdopodobieństwo pęknięcia aktualizacji od tego momentu. Dobrym przykładem jest klasa strony: w poprzednich wcieleniach, klasy strony pochodzą z klasy bazowej dostarczone przez Tapestry; niezgodne zmiany API w tej klasie były przyczyną dużej liczby problemów z kompatybilnością wsteczną. W Tapestry 5 strony są Pojami, które są ulepszane w czasie wykonywania za pomocą" magic Tapestry fairy dust " poprzez adnotacje. Tak długo, jak umowa na adnotacje jest utrzymywana, zmiany w Tapestry nie będą miały wpływu na klasy strony.

Jeśli to prawda, to pisanie nowej aplikacji przy użyciu Tapestry 5 może się dobrze skończyć. Ale osobiście nie mam ochoty znowu moja ręka na palniku.

 11
Author: Robert J. Walker,
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-08-31 21:25:38

pracuję w Vaadin (wcześniej IT Mill)

Jeśli robisz coś RIAish, może warto spojrzeć na Vaadin . Jest to framework AJAX zorientowany na UI open source, który, jak dla mnie, jest przyjemny w użyciu(sam pochodzę z tła PHP).

Istnieje studium przypadku , które porównuje wykonywanie tej samej aplikacji (tj. dwie aplikacje z tym samym zestawem funkcji) w Icefaces i Vaadin. W skrócie, stwierdza, że rozwój interfejsu został znacznie szybciej.

Mimo, że badanie jest prowadzone na wiki firmy, mogę zapewnić, że jest obiektywne, prawdziwe i prawdziwe, chociaż nie mogę zmusić cię, abyś mi uwierzył.

 9
Author: Henrik Paul,
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
2011-02-24 23:15:12

Po długim czasie testowania różnych rozwiązań okazało się dla mnie:

  • Spring MVC na prezentację i warstwa kontrolera (bez Spring Webflow, ponieważ moje przepływy są oparte na ajax)

  • JQuery dla wszystkich rzeczy po stronie klienta

  • Spring Security dla, dobrze, aspekt bezpieczeństwa

  • Hibernate / JPA2

  • Jetty for the sake of continuations (comet)

Jeden miesiąc niezwykle stroma krzywa uczenia się, ale teraz jestem szczęśliwy.

Chciałbym również wspomnieć, że byłem tylko o krok od pominięcia wszystkich rzeczy Java i nauki Scala / LIFT zamiast. Jeśli chodzi o mnie, wszystko w Javie, co jest związane z najnowocześniejszym tworzeniem stron internetowych (comet, async communication, security (tak, nawet z Spring Security!)) nadal jest trochę hack (proove mnie źle przez dowody, pleeease!). Dla mnie Scala / LIFT wydaje się być bardziej out-of-the-box i kompleksowe rozwiązanie.

Powodem, dla którego w końcu zdecydowałem Nie , aby przejść do Scali Jest

  • Jako lider projektu muszę wziąć pod uwagę zasoby ludzkie i programistów Java są znacznie łatwiejsze do znalezienia niż Programiści Scala

  • Dla większości programistów w moim zespole, koncepcja funkcjonalna Scali, mimo że jest doskonała, jest trudna do zrozumienia

Cheers Er

 7
Author: Ta Sas,
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-08-03 07:21:40

Też słyszałem dobre rzeczy o wiosennym frameworku. Ogólnie rzecz biorąc, byłem rozczarowany większością frameworków internetowych Java, na które patrzyłem (Struts esp).

Dla prostej aplikacji zdecydowanie rozważyłbym użycie "surowych" serwletów i JSP i nie martwiłbym się o przyjęcie frameworka. Jeśli serwlety są dobrze napisane, powinno być proste w przyszłości, aby port do frameworka, jeśli to konieczne, gdy aplikacja rośnie w złożoności.

 5
Author: Russell Mayor,
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
2008-08-23 23:10:20

Mój wybór to Wicket!!

 5
Author: Franklin,
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
2009-02-24 09:44:20

Wszystkie - w tym problem; -)

 4
Author: ,
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
2008-09-26 11:36:22

Myślę, że dla Twoich skromnych wymagań wystarczy zakodować servlety lub proste strony jsp, które możesz obsługiwać z serwera Tomcat. Nie sądzę, że potrzebujesz jakiegokolwiek frameworka internetowego (jak rozpórki) dla osobistych danych strony internetowej

 3
Author: ,
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
2008-08-23 21:40:54

Powiedzenie "użyj JSF" jest trochę proste. Kiedy zdecydujesz się użyć JSF, musisz wybrać bibliotekę komponentów na jej szczycie. Czy użyjesz MyFaces Tomahawk, Trynidad, Tobago (http://myfaces.apache.org/)? a może ICEfaces ( http://www.icefaces.org / )? Aha, a jeśli używasz ICEfaces, będziesz używał JSPs czy Facelets do swoich poglądów?

Moim zdaniem trudno powiedzieć. Nikt nie ma czasu na ocenę wszystkich obiecujących alternatyw, przynajmniej w projektach, nad którymi pracuję, ponieważ nie są one wystarczająco duże, aby wykonać trzymiesięczne fazy oceny. Jednak powinieneś rozejrzeć się za niektórymi, które mają dużą i aktywną społeczność i nie zniknęły w ciągu roku. JSF jest już od jakiegoś czasu, a ponieważ zostanie popchnięty przez sun, będzie jeszcze przez jakiś czas. Nie mogę powiedzieć, czy to najlepszy wybór, ale będzie dobry.

 3
Author: Tim Büthe,
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
2009-02-24 10:23:50
 3
Author: ziftech,
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
2009-09-09 13:38:09

Dla stron o dużym natężeniu ruchu używałbym frameworka, który nie zarządza stanem klienta na serwerze-Wicket, JSF i Tapestry zarządzają stanem klienta na serwerze. Używałbym tych frameworków (Wicket jest moim ulubionym) tylko wtedy, gdy aplikacja powinna być bardziej jak aplikacja desktopowa. Ale spróbowałbym użyć bardziej skalowalnego i prostego podejścia REST+AJAX.

Spring MVC byłby kandydatem, ale od Spring MVC 3 ma dziwny przeciążony model programowania, który nie używa korzyści płynące z typowania statycznego. Istnieją inne brzydkie rzeczy, takie jak parametry wyjściowe w metodach połączone ze zwykłym zwrotem, więc istnieją dwa kanały wyjściowe jednej metody. Spring MVC ma również tendencję do ponownego obracania koła i będziesz miał więcej do skonfigurowania w porównaniu do innych ram. Naprawdę nie mogę polecić Spring MVC, choć ma kilka fajnych pomysłów.

Grails jest wygodnym sposobem użycia Spring MVC i innych uznanych frameworków, takich jak Hibernate. Kodowanie jest zabawne i szybko zobaczysz wyniki.

I nie zapominaj, że API Servlet z kilkoma małymi pomocnikami, takimi jak FreeMarker dla szablonów, jest bardzo potężne.

 3
Author: deamon,
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
2009-12-30 10:08:21

Oceniłem sporo frameworków i Vaadin ( http://vaadin.com/home ) przesunęła się aż na sam szczyt.

Powinieneś przynajmniej dać mu krótką ocenę.

Zdrówko!
 3
Author: Gilles,
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-07-27 16:17:58

Moim wyborem będzie Wicket( dla dużych projektów i przewidywalnej bazy użytkowników), GWT (dla dużych projektów, które są głównie publiczne) lub po prostu framework (jak Jersey/ JAXRS) wraz z zestawem narzędzi JavaScript (dla małych i średnich projektów).

 2
Author: Eelco,
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-01-31 23:30:31

Polecam Seam, szczególnie jeśli potrzebujesz wytrwałości.

 2
Author: Navi,
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-03-06 17:48:23

Zobacz kilka uwag na temat niektórych frameworków aplikacji Java (drugi akapit):

Http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html

 1
Author: Bob Yoplait,
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-08-02 17:48:14

Dla szybkiego i fantazyjnego GUI możesz używać JSF z biblioteką Richfaces. Komponenty Richfaces UI są łatwe w użyciu i poręczne, dostępne z demonstracją kodu w witrynie demo. Prawdopodobnie później, gdy Twoja witryna ma więcej danych do obsługi i wiele informacji musi zostać przetransferowanych w bazie danych, możesz podłączyć do niej dowolny framework dostępu do bazy danych (ORM).

 1
Author: user709798,
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-11-24 17:05:17

Nie mogę uwierzyć, że nikt nie wspomniał o GWT

 0
Author: Kevin Wong,
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
2008-09-11 04:43:14

Moim ulubionym sposobem na naprawdę proste aplikacje jest Apache VelocityTools (VelocityLayoutServlet) z Velosurf ( http://velosurf.sourceforge.net).

Dla bardziej złożonych aplikacji, Spring MVC lub Struts 2.

 0
Author: Nathan Bubna,
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
2008-09-15 16:03:02

Spróbuj HybridJava - to jest dużo prostsze niż cokolwiek innego.

 0
Author: Alex,
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-07-28 05:32:44

Powiedziałbym vaadin lub wicket

 0
Author: fmucar,
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
2011-02-08 11:08:06