- JSP, JSF and PrimeFaces in Java are essentially dead (server side and hybrid rendering technologies)
- Vaadin and GWT are essentially dead (Java to JS transpilation of sorts)
- AngularJS is essentially dead (Angular 2+ are way different)
- jQuery is on its way out
- class based React is on its way out
Each of those have a lot of internal complexity that i'd suggest is more than just a paint job. Of course, it's inevitable that technologies that didn't work out for one reason or another will be sunset and will die out, however at the same time there is definitely churn.For example, we don't know if something like Bulma or TailwindCSS will work out and will be around in their current form in 5 years. You could say the same about how state was managed in React, nowadays we have MobX and Redux, but also the Context API. You can say the same about most languages, approaches, frameworks and libraries - nothing is set in stone.
I'm not sure whether that's a bad thing or a good thing, i just personally hope that eventually the more stable approaches will survive and the developer experience will be all the better for it, as opposed to introducing more and more complexity to the point of rivaling that of JSF/PrimeFaces.
My personal approach is just vaguely along the lines of:
- learn the fundamentals that are unlikely to change much (abstract concepts, architecture etc.)
- learn the most common technologies, refresh knowledge every few years (HTML, CSS, JS)
- learn the frameworks and libraries to the point where you feel vaguely competent with them (React, Angular, Vue, have a vague idea of how to do stuff with CSS libraries/frameworks like Bootstrap)
- maybe pick up a few useful tricks here and there, if you have the time explore a new technology or two in non-prod projects every now and then