I have been a Java back end developer for some years. The last time I did front end development was like 5 years ago. In those years I used JSF, AJAX to create web applications.
Today I am in the need to pick up front end development again. With all the new technologies like HTML5, Angular2, JQuery, etc. Is JSF still relevant and worth it to learn?
What would be the areas where Java web technologies will have an advantage over the other technologies and what areas would be better to choose something else like HMTL5 and Angular2?
I would say JSF, JSP and all those old technologies are obsolete.
Basically, by using JSF, you pack your app with both front end and back end code. Ugly :/
When those technologies where developed, the average computer where slow. Thus, having a front end app using Anulgar or React was a bad idea. Everything would look sluggish and laggy.
Rendering on server side is redundant as for today. It's cumbersome a complete waste of resources and CPU power.
JSF is a good thing to know if you need to design an industrial-grade webapp with lots of user input and validation, although I've never been sure that its overhead is low enough to run something the size of Amazon.com on it.
Java in general is expensive to implement, since apps cannot be just slapped out in an afternoon. Java is best for things where you need lots of design options and where performance and/or security are critical.
For lightweight stuff, I usually use PHP or node.js myself. Note that many extensions to JSF use jQuery internally, but usually with less coding required (they also usually allow direct use of jQuery also).
One thing to bear in mind, however, is that while some things benefit from being offloaded onto the client, anything to do with data validation should ultimately be done on the server. That's simply because anything done on the client can be hacked or spoofed. It does no good to have client-side code validating data if some ill-intentioned person takes over and pushes bad data down anyway.
An IDE is no substitute for an Intelligent Developer.
So, if you're deciding which one to learn I would definately go for Angular/React. It's really worth it.