I'm a JAVA developer with a little experience of working on web using and HTML, CSS and JS, But the frontend world doesn't look the same from a few years ago, There are so many practices, tools and libraries to learn
How can i get started with learning frontend development and get up to speed with the latest trends?
I was a mainframe and java developer a few years back and I had a good interest in designing as well. Luckily I was in my masters degree and I happen to work with a small design firm. So when I started with them I directly started learning HTML and CSS with a live project. The designers here created the design in photoshop and my role is to make it working with HTML, CSS and JS. So take up a project or select some photoshop templates, try to code them using HTML,CSS and JS (master this). Once you code things in HTML, CSS and JS , using anything like angularjs, reactjs, JSP or whatever is just matter of understanding the file structures, templating and framework concepts.
FreeCodeCamp is an awesome resource for getting up to speed on frontend development, plus it has a great community. Code Academy is where I got started but that was a few years ago, not sure how it is today.
Even though there are plenty Java libraries for building frontends (JSP, JSF, SpringMVC, Struts, Tapestry, GWT, ...), my experience with them is that they are very slow to develop in and due to the complexity of modern UIs, it's no longer feasible to use these tools unless what you are looking for is static pages that are rendered server-side (like isomorphic apps) in which case these will do.
If you are looking at building Single Page Apps (something which GWT shines at, but will still slow you down compared to writing directly in HTML5), start with Jquery and learn how to write basic POST, GET, PUT and DELETE requests via AJAX and let your Java controller / servlet respond to these requests. Try doing it now using pure javascript and no Jquery (hint, XHR). If you've managed that, try using Dart to do those AJAX requests, it will have a very familiar feel to Java.
Once you've mastered doing AJAX requests to Java controllers / servlets, start manipulating the DOM with each of those tools (Jquery, pure JavaScript and then Dart) - if I click this button, do an AJAX call to Java which will respond with JSON and then display the JSON on the page.
Once you've mastered that, it's just playing around with HTML and CSS - if you want to make apps look beautiful, start playing around with Bootstrap (otherwise you start wasting a lot of time messing with CSS instead of mastering the basics), copy snippets, and make those snippets talk to your Java backend and then try and understand what Bootstrap is doing.
Start playing around with Webcomponents / Polymer to see how much easier it is than copying the same snippets over and over again.
Only once you've mastered all the basics without using frameworks, should you start looking at frontend frameworks - there are lots of them, avoid buying into the hype and jumping to the latest greatest every 6 months, otherwise you'll forever be learning new frameworks and not building anything useful.