I am a programmer for ~15 years, currently freelancing. Know Java SE, PHP MVC frameworks, Fortran, Swift etc. I'd like to learn Java EE since this is where the most profitable gigs are (and probably will be for some time). However, to me the environment looks complex as it evolved over many years, so I don't know where to start. Any tips for useful resources on how to get into the current state of the art? Ideally, a single book :-)
I'd suggest learning it while you go along. If you know Java SE already Java EE isn't that big a leap conceptually. The difference is really mostly in additional APIs, libraries and tools like application servers (which also for the most part are nothing more than a glorified Tomcat). Those can be learned and Googled as needed.<p>Moreover, many of the intricacies of enterprise tools like WebSphere AS for instance (which is a pretty notorious example) can't be learned from any book.<p>Knowing the Spring framework, Hibernate and technologies like JPA is vital, though. Those aren't part of Java EE, however (although they're mostly used in enterprise environments).<p>Spring.io and Mkyong.com are great resources for getting started with that.
Java EE is like a number of other enterprise software environments. There's an implicit assumption of use by teams and hence team level knowledge versus individual knowledge. This allows the sofware to have more moving parts and more interfaces to tune. The level of granularity means that knowing Java EE can mean a lot of different things and most of them boil down to knowing part of Java EE rather than the whole.