Rozważam stworzenie własnej strony internetowej w Javie i próbuję zdecydować, jakiego frameworka użyć. Jednak szybkie wyszukiwanie struktur Java zwraca ponad 50 do wyboru!
Moja strona internetowa będzie służyła mojej własnej przyjemności z budowania jej na początku, ale jeśli stanie się popularna, dobrze byłoby, gdyby miała pewną skalowalność lub przynajmniej móc ją przeprojektować.
Jakie są główne różnice między bardziej popularnymi frameworkami? Czy są sytuacje, w których jeden 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 ruchu. Zastanawiam się również, czy niektóre są znacznie łatwiejsze do nauczenia się i używania niż inne.
Czy jest ktoś, kto ma doświadczenie z niektórymi z tych frameworków i może udzielić rekomendacji? Czy sama liczba wyborów służy jedynie jako wczesne ostrzeżenie, aby w miarę możliwości unikać tworzenia stron internetowych w języku Java?
Odpowiedzi:
Dość często używałem Tapestry 3 , Wicket , Echo i JSF . Naprawdę radziłbym przejrzeć je i wybrać ten, który wydaje się najłatwiejszy i najlepiej pasuje do sposobu, w jaki wolisz pracować.
Spośród nich najwygodniejszy dla mnie był Wicket , ze względu na lekki charakter budowania komponentów i prostotę tworzenia szablonów stron. Działa to podwójnie, więc jeśli używasz własnego kodu db zamiast Hibernate lub innego frameworka (nigdy nie byłem całkowicie zadowolony z Wicket Hibernate lub Spring Integration).
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 produkt służy dość wąskiej niszy. Wygląda na to, że zmieniają model rozwoju z każdą główną wersją.
Gobelin to świetny produkt, ale oczywiście bardzo różni się od innych pod względem modelu rozwoju, ponieważ prowadzi go głównie jeden gość. Howard Lewis Ship jest bez wątpienia całkiem sprytny, ale jestem rozczarowany ich decyzją o zapomnieniu wstecznej kompatybilności z każdym wydaniem. Znowu jednak, dla twoich potrzeb może to nie mieć znaczenia i zawsze uważałem, że praca z produktami Tapestry jest przyjemna.
JSF istnieje od lat i nadal wydaje się być czymś, co człowiek ze Struts zbudował, aby rozwiązać wszystkie problemy Struts. Bez zrozumienia wszystkich problemów z Struts. Nadal ma niedokończony wygląd, chociaż produkt jest oczywiście bardzo elastyczny. Używam go i mam do niego sentyment, z wielką nadzieją na przyszłość. Myślę, że następne wydanie (2.0), które ma być dostarczone w JEE6, naprawdę wprowadzi je w swoje własne, z nową składnią szablonów (podobną do Facelets) i uproszczonym modelem komponentów (niestandardowe komponenty tylko w 1 pliku ... wreszcie).
I oczywiście istnieje milion mniejszych frameworków i narzędzi, które zyskują własne poparcie ( Velocity dla podstawowych potrzeb, surowe strony JSP , Struts itp.). Generalnie wolę jednak frameworki zorientowane na komponenty.
Na koniec poleciłbym po prostu przyjrzeć się Tapestry, Wicket i JSF i wybrać ten, który najbardziej Ci odpowiada. Prawdopodobnie znajdziesz taki, który po prostu pasuje do sposobu, w jaki lubisz bardzo szybko pracować.
źródło
Moim ulubionym jest Spring Framework. Z 2.5 Spring MVC jest super, z nowymi adnotacjami, konwencją nad funkcjami konfiguracyjnymi itp.
Jeśli robisz coś bardzo prostego, możesz po prostu spróbować użyć zwykłego Servlet API i nie zawracać sobie głowy frameworkiem.
źródło
Polecam ramę Wicket zorientowaną na komponenty . Pozwala na pisanie aplikacji internetowych w zwykłym, starym kodzie Java, możesz używać POJO jako modelu dla wszystkich komponentów i nie musisz bawić się ogromnymi plikami konfiguracyjnymi XML.
Z powodzeniem stworzyłem aplikację bankowości internetowej w Struts, kiedy odkryłem Wicket i zobaczyłem, jak łatwe może być tworzenie aplikacji internetowych!
źródło
Niedawno zacząłem używać Stripes Framework . Jeśli szukasz platformy opartej na żądaniach, która jest naprawdę łatwa w użyciu, ale nie nakłada żadnych ograniczeń na to, co robisz, gorąco ją polecam.
Jest podobny do rozpórki, ale wykracza poza to. Istnieją nawet projekty wtyczek, które umożliwiają używanie hibernacji lub jpa przy bardzo małej konfiguracji.
Istnieje wiele dobrych frameworków, chociaż słyszałem, że furtka jest również dobra, ale nie używałem jej.
źródło
Sam tego nie próbowałem, ale myślę
http://www.playframework.org/
ma duży potencjał ...
pochodzi z php i klasycznego asp, jest to pierwszy framework sieciowy java, który brzmi obiecująco ...
źródło
AKTUALIZACJA: Tapestry 5.2 jest już niedostępny, więc nie jest porzucony, jak się wcześniej wydawało. Moje doświadczenie dotyczy Tapestry 4, a nie 5, więc Twój przebieg może się różnić. Moja opinia o Tapestry zmieniła się na przestrzeni lat; Zmodyfikowałem ten post, aby to odzwierciedlić.
Nie mogę już polecać Tapestry, tak jak wcześniej. Tapestry 5 wydaje się być znaczącym ulepszeniem, ale mój główny problem z Tapestry nie dotyczy samej platformy; jest z ludźmi, którzy za tym stoją.
Historycznie rzecz biorąc, każda większa aktualizacja Tapestry łamała wsteczną kompatybilność ze skrajnymi uprzedzeniami, znacznie bardziej niż można by się spodziewać. Wydaje się, że jest to spowodowane włączeniem nowych technik lub technologii kodowania, które wymagają znacznych przeróbek.
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. Rozwój Tapestry 5 rozpoczął się niemal natychmiast po wysłaniu Tapestry 4. Z tego, co wiem, Ship poświęcił się temu, pozostawiając Tapestry 4 w rękach innych autorów, którzy moim zdaniem nie są tak zdolni jak Ship. Po bolesnym przejściu z Tapestry 3 na Tapestry 4 poczułem, że prawie natychmiast zostałem porzucony.
Oczywiście, wraz z wydaniem Tapestry 5, Tapestry 4 stał się starszym produktem. Nie miałbym z tym problemu, gdyby ścieżka aktualizacji nie była znowu tak brutalna . Więc teraz nasz zespół programistów jest w raczej nie do pozazdroszczenia sytuacji: 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ę przy użyciu innej platformy. Żadna z tych opcji nie jest zbyt atrakcyjna.
Tapestry 5 jest podobno napisany tak, aby zmniejszyć prawdopodobieństwo zerwania aktualizacji od tego momentu. Dobrym przykładem są klasy stron: w poprzednich wcieleniach klasy stron wywodziły się z klasy bazowej dostarczonej przez Tapestry; niezgodne zmiany API w tej klasie były przyczyną dużej liczby problemów ze zgodnością wsteczną. W Tapestry 5 strony są POJO, które w czasie wykonywania są ulepszane za pomocą „magicznego czarodziejskiego pyłu Tapestry” poprzez adnotacje. Tak długo, jak zachowana jest umowa dotycząca adnotacji, zmiany w Tapestry nie wpłyną na klasy stron.
Jeśli tak jest, to napisanie nowej aplikacji przy użyciu Tapestry 5 może się dobrze zakończyć. Ale osobiście nie mam ochoty ponownie położyć ręki na palniku.
źródło
Disclamer: Pracuję w Vaadin (wcześniej IT Mill)
Jeśli robisz coś RIAish, możesz przyjrzeć się Vaadinowi . Jest to framework AJAX zorientowany na interfejs użytkownika typu open source, który według mnie jest przyjemny w użyciu (sam pochodzę z tła PHP).
Istnieje studium przypadku, które porównuje wykonanie tej samej aplikacji (tj. Dwóch aplikacji z tym samym zestawem funkcji) w Icefaces i Vaadin. W skrócie stwierdza, że rozwój interfejsu użytkownika był znacznie szybszy.
Mimo że badanie znajduje się na firmowej wiki, mogę zapewnić, że jest obiektywne, autentyczne i zgodne z prawdą, chociaż nie mogę cię zmusić do wiary.
źródło
Po dłuższej chwili testowania różnych rozwiązań okazało się, że to:
Spring MVC dla warstwy prezentacji i kontrolera (brak Spring Webflow, ponieważ moje przepływy są oparte na Ajax)
jQuery dla wszystkich rzeczy po stronie klienta
Spring Security w aspekcie bezpieczeństwa
Hibernacja / JPA2
Molo ze względu na kontynuację (kometa)
Miesiąc niezwykle stromej nauki, ale teraz jestem szczęśliwy.
Chciałbym również wspomnieć, że byłem tylko o krok od pominięcia całej tej Javy i nauczenia się Scala / LIFT. Jeśli o mnie chodzi, wszystko w Javie, co jest związane z najnowocześniejszym tworzeniem stron internetowych (kometa, komunikacja asynchroniczna, bezpieczeństwo (tak, nawet z Spring Security!)) Nadal jest trochę hackem (udowodnij mi, że się mylę, proszę !). Dla mnie Scala / LIFT wydaje się być rozwiązaniem bardziej gotowym do użycia i kompleksowym.
Powodem, dla którego w końcu zdecydowałem się nie iść ze Scalą, jest
Jako lider projektu muszę wziąć pod uwagę zasoby ludzkie, a programistów Java jest znacznie łatwiejszych niż programistów Scala
dla większości programistów w moim zespole funkcjonalna koncepcja Scali, choć jest doskonała, jest trudna do zrozumienia
Pozdrawiam Er
źródło
Słyszałem też dobre rzeczy o Spring Framework. Ogólnie rzecz biorąc, byłem rozczarowany większością przeglądanych przeze mnie frameworków Java (szczególnie Struts).
W przypadku prostej aplikacji zdecydowanie rozważyłbym użycie „surowych” serwletów i stron JSP i nie martwiłbym się o przyjęcie struktury. Jeśli serwlety są dobrze napisane, w przyszłości powinno być łatwo przenieść do frameworka, jeśli będzie to konieczne, gdy aplikacja stanie się bardziej złożona.
źródło
Mój wybór to Wicket !!
źródło
Wszyscy - w tym problem ;-)
źródło
Myślę, że dla twoich skromnych wymagań wystarczy zakodować serwlety lub proste strony jsp, które możesz obsługiwać z serwera Tomcat. Nie sądzę, abyś potrzebował żadnego rodzaju struktury internetowej (takiej jak rozpórki) do osobistych danych witryn internetowych
źródło
Powiedzenie „użyj JSF” jest zbyt proste. Decydując się na użycie JSF, musisz wybrać bibliotekę komponentów. Czy użyjesz MyFaces Tomahawk, Trinidad, Tobago ( http://myfaces.apache.org/ )? A może ICEfaces ( http://www.icefaces.org/ )? Aha, a jeśli użyjesz ICEfaces, czy użyjesz stron JSP lub Facelets do swoich widoków?
Moim zdaniem trudno powiedzieć. Nikt nie ma czasu, aby ocenić wszystkie obiecujące alternatywy, przynajmniej w projektach, nad którymi pracuję, ponieważ nie są one wystarczająco duże, aby przeprowadzić trzymiesięczne fazy oceny. Jednak powinieneś rozejrzeć się za niektórymi, którzy mają dużą i aktywną społeczność i nie znikną w ciągu roku. JSF istnieje od jakiegoś czasu, a ponieważ jest popychany przez słońce, będzie w pobliżu jeszcze przez jakiś czas. Nie mogę powiedzieć, czy to najlepszy wybór, ale będzie to dobry wybór.
źródło
http://zkoss.org - ten dobry
źródło
W przypadku witryn o dużym natężeniu ruchu użyłbym struktury, która nie zarządza stanem klienta na serwerze - Wicket, JSF i Tapestry zarządzają stanem klienta na serwerze. Używałbym tylko tych frameworków (Wicket jest moim ulubionym), jeśli aplikacja powinna bardziej przypominać aplikację komputerową. Ale spróbuję użyć bardziej skalowalnego i prostszego podejścia REST + AJAX.
Spring MVC byłby kandydatem, ale od Spring MVC 3 ma dziwny model programowania przeciążony adnotacjami, który nie wykorzystuje zalet statycznego pisania. Istnieje wiele innych brzydkich rzeczy, takich jak parametry wyjściowe w metodach w połączeniu ze zwykłym zwrotem, więc są dwa kanały wyjściowe jednej metody. Spring MVC ma również tendencję do ponownego odkrywania koła, dzięki czemu będziesz mieć więcej do skonfigurowania w porównaniu z innymi frameworkami. Naprawdę nie mogę polecić Spring MVC, chociaż ma kilka fajnych pomysłów.
Grails to wygodny sposób na użycie Spring MVC i innych uznanych frameworków, takich jak Hibernate. Kodowanie jest fajne i szybko zobaczysz wyniki.
I nie zapominaj, że Servlet API z kilkoma małymi pomocnikami, takimi jak FreeMarker do tworzenia szablonów, jest bardzo potężny.
źródło
Oceniłem sporo frameworków i Vaadin ( http://vaadin.com/home ) przeniknął aż do samego szczytu.
Powinieneś przynajmniej poddać to krótkiej ocenie.
Twoje zdrowie!
źródło
Moim wyborem byłby Wicket (dla dużych projektów i przewidywalnej bazy użytkowników), GWT (dla dużych projektów, które są głównie dostępne publicznie) lub po prostu framework usług (jak Jersey / JAXRS) wraz z zestawem narzędzi JavaScript (dla małych i średnich projektów) .
źródło
Polecam Seam, zwłaszcza jeśli potrzebujesz wytrwałości.
źródło
Zobacz kilka komentarzy na temat niektórych struktur aplikacji Java (drugi akapit):
http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html
źródło
Aby uzyskać szybkie i wyszukane GUI, możesz użyć JSF z biblioteką Richfaces . Komponenty interfejsu użytkownika Richfaces to łatwe w użyciu i przydatne odniesienia dostępne wraz z demonstracją kodu w witrynie demonstracyjnej. Prawdopodobnie później, gdy Twoja witryna będzie miała więcej danych do obsłużenia i wiele informacji będzie musiało zostać przetworzonych w bazie danych, możesz podłączyć do niej dowolną strukturę dostępu do bazy danych (ORM).
źródło
Nie mogę uwierzyć, że nikt nie wspomniał o GWT
źródło
Moim ulubionym sposobem na naprawdę proste aplikacje jest Apache VelocityTools (VelocityLayoutServlet) z Velosurf ( http://velosurf.sourceforge.net ).
W przypadku bardziej złożonych aplikacji Spring MVC lub Struts 2.
źródło
Wypróbuj HybridJava - to znacznie prostsze niż cokolwiek innego.
źródło
Powiedziałbym vaadin lub furtkę
źródło