Przemyśl to dobrze.
Vaadin jako jedyny framework trzyma całą sesję klienta po stronie serwera. Warto o tym pamiętać gdyż wymaga to sporych zasobów pamięci ram. (Bardzo duże projekty średnio 200-300mb per user Pomniejsze około 50mb). Przy vaadinie nie masz żadnego problemu z tzw 'magią'. Możesz za pomocą 5 linijek przejąć całą sesję innego usera i wyświetlić ją sobie w przeglądarce. Każda zmiana jest automatycznie pushowana do klienta (brak zapytań http. Wszystko idzie po socketach). Sockety webowe masz zaimplementowane na strzała i nawet nie musisz wiedzieć jak działają(vaadin używa ich domyślnie). Każda zmiana w kodzie jest automatycznie wyświetlany u klienta. Nie musisz się martwić DOM-em bo vaadin sam dba o zasięgi iwidoczność po stronie klienta. Z plusów to to że framework nie wymaga wiedzy na temat js, css do podstawowego działania. Podstawowe komponenty wspierają wszystkie przeglądarki. Posiada full dodatków i zasobów które wychodzą każdego dnia. Wiedza z awt może się przydać bo koncepcja działania vaadina jest podobna. Uruchom podstawowy projekt/demo i sama zobaczysz że nie jest to trudne. Z największych plusów to tworzenie widoku za pomocą javy ;]
JSF-y są dla mnie uciążliwe. Kod większych aplikacji wygląda jakby przeżył jesień średniowiecza. Robi się bajzel i można się pogubić. Dodatkowo trzeba pisać cały wygląd ręcznie co nie jest przyjemne bo zazwyczaj po jakimś czasie włącza się 'szał kopiowania' i jest problem. Dodatkowo beany łączone z widokami które też nie są przyjemne i wymagają pisania ton linijek kodów.
Czy angular jest bardziej dla javowców? Chyba nie do końca. Sam wygląd kodu i typizacja za pomocą TypeScripta nie robi z angulara brata javy. Zresztą angular działa po stronie klienta i ciężko pisać w nim logikę biznesową ;] CIężko go załapać na strzała to fakt. Może spowodować ból głowy ale polecam dla wielbiceli frontendu. Pięknie rozwiązane zasięgi stylów. Prostota bindowania. Zachowanie formatowania i spójności kodu. Brak dużych zasobów zewnętrznych komponentów co uważam za minus bo ciężko przyśpieszyć w tym pracę.
Do małego projektu o zasięgu lokalknym w którym nie przewidujesz większej ilości userów niż 100 w jendym czasie to polecam vaadina. Można w nim walnąć w pełni funkconalną stronę z bajerami w naprawdę krótkim czasie. Dla projektów ogarniających większą ilość userów i udostępniających głównie informacje to jsf lub angular.
PS: SpringBoot to ochyda(w mojej opinii). Radzę postawić surowy projekt springowy z obsługą WebModule i odpalić na normalnym serwerze.