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ą?