Jestem nowy w StackExchange, ale pomyślałem, że będziesz w stanie mi pomóc.
Tworzymy nową aplikację Java Enterprise, zastępującą starsze rozwiązanie JSP. Z powodu wielu wielu zmian interfejs użytkownika i elementy logiki biznesowej zostaną całkowicie przemyślane i ponownie wdrożone.
Naszą pierwszą myślą było JSF, ponieważ jest to standard Java EE. Na początku miałem dobre wrażenie. Ale teraz próbuję wdrożyć funkcjonalny prototyp i mam poważne obawy dotyczące jego używania.
Po pierwsze, tworzy najgorsze, najbardziej zagracone nieprawidłowe pseudo-HTML / CSS / JS, jakie kiedykolwiek widziałem. Narusza każdą zasadę, której nauczyłem się podczas tworzenia stron internetowych. Ponadto łączy w sobie to, co nigdy nie powinno być tak ściśle powiązane: układ, projekt, logika i komunikacja z serwerem. Nie rozumiem, jak mógłbym wygodnie rozszerzyć tę wydajność, czy to stylizowanie za pomocą CSS, dodawanie cukierków w interfejsie użytkownika (takich jak konfigurowalne skróty, przeciąganie i upuszczanie widżetów) czy cokolwiek innego.
Po drugie, jest to zbyt skomplikowane. Jego złożoność jest znakomita. Jeśli mnie zapytasz, jest to słaba abstrakcja podstawowych technologii sieciowych, w końcu okaleczona i bezużyteczna. Jakie mam świadczenia? Brak, jeśli pomyślisz. Setki komponentów? Widzę dodatkowo dziesięć tysięcy fragmentów kodu HTML / CSS, dziesięć tysięcy fragmentów kodu JavaScript i tysiące wtyczek jQuery. Rozwiązuje naprawdę wiele problemów - nie mielibyśmy, gdybyśmy nie korzystali z JSF. Lub w ogóle wzór przedniego kontrolera.
I wreszcie, myślę, że będziemy musieli zacząć od nowa, powiedzmy za 2 lata. Nie rozumiem, jak mogę wdrożyć wszystkie nasze pierwsze makiety GUI (poza tym; nie mamy Eksperta JSF w naszym zespole). Może moglibyśmy to jakoś zhakować. A potem będzie ich więcej. Jestem pewien, że moglibyśmy zhakować nasz hack. Ale w pewnym momencie utkniemy. Ze względu na wszystko powyżej warstwa usług kontroluje JSF. I będziemy musieli zacząć od nowa.
Moją sugestią byłoby zaimplementowanie interfejsu API REST przy użyciu JAX-RS. Następnie utwórz klienta HTML5 / Javascript z MVC po stronie klienta. (lub jakiś smak MVC ..) Przy okazji; i tak będziemy potrzebować interfejsu API REST, ponieważ opracowujemy również częściowy interfejs Androida.
Wątpię, czy JSF jest obecnie najlepszym rozwiązaniem. Ponieważ Internet ewoluuje, naprawdę nie rozumiem, dlaczego powinniśmy korzystać z tej „prowizji”.
Jakie są zalety / wady? Jak mogę podkreślić, że nie używam JSF? Jakie są mocne strony, aby użyć JSF w porównaniu z moją sugestią?
źródło
Odpowiedzi:
Jest co najmniej jeden bardzo dobry powód do rozważenia JSF.
Jest to standardowa część stosu Java EE i dlatego będzie dostępna - i działa - we WSZYSTKICH kontenerach Java EE przez bardzo, bardzo długi czas. I również utrzymane, bez konieczności robienia tego, jeśli ściśle przestrzegasz specyfikacji Java EE.
Jeśli dotyczy to ciebie, powinieneś to rozważyć. Większość oprogramowania żyje dłużej, niż myślą jego projektanci, zwłaszcza jeśli jest brane pod uwagę podczas pisania.
źródło
Wydaje się, że już podjąłeś decyzję o wadach, a ja muszę zgodzić się z niektórymi z nich (nie dzieli wystarczająco układu i logiki, a wynikowy HTML jest często okropny), ale nie zgadzam się z innymi (jeśli używasz Facelets, które bardzo poleciłbym, to wynik powinien zdecydowanie być ważny).
Oto kilka zalet:
Ale z pewnością żadna z tych zalet nie jest tak duża, że powinieneś używać JSF w stosunku do innych struktur, z którymi Twój zespół ma już doświadczenie.
źródło
JSF to odpowiedni stanowy framework internetowy dla Javy, który jest standardem, co oznacza, że jest obsługiwany od samego początku przez wielu głównych dostawców (w tym FOSS). Ma silne wsparcie bibliotek zewnętrznych (PrimeFaces, IceFaces itp.). Jednak zasadniczo „zrywa sieć” ze względu na jej stanową naturę (i kilka innych rzeczy). Zobacz porównanie przez Matta Raible'a frameworków internetowych opartych na JVM , JSF zwykle jest bliski końca.
Edycja - za pomocą JSF 2.2 - możesz zacząć argumentować, że nie psuje sieci tak bardzo jak kiedyś. W rzeczywistości integracja z HTML5 nie jest wcale taka straszna :-).
źródło
Mieliśmy starszą aplikację JSP / Struts 1.0. Ominęliśmy Struts 2, JSF i wszystko inne, co wydarzyło się od Struts 1 i wskoczyliśmy do Spring 3.0. Obsługuje (i aktywną społeczność) naszą listę życzeń - Eclipse IDE, MVC i REST. Poza tym porzuciliśmy naszą klasyczną wersję Javascript / ajax dla jquery.
YMMV, ale Spring był dla nas płynną migracją.
źródło