I'm a web (frontend) developer with 7+ years of experience. I want to become a full stack developer and want to get to know the business side of java. Already know the language and can easily write small CLI or GUI apps (mostly thanks to knowledge of other languages) but have no experience at all with anything business-related. What libraries/solutions would you recommend to me to learn (DB libs, queueing, http server, sockets, etc, anything else)?
Spring is the industry standard for basically everything you mentioned. Not sure how much its used in FAANG (I know for a fact Netflix uses it) but its used by a large majority of other companies such as Edward Jones, Enterprise Rent a Car, John Deere and tons of others. Its a well designed framework that has libraries for basically everything you'd want to do. They have tutorials on their website and for anything they don't cover a quick google search will reveal 100's more. I like Baeldung for a lot of in depth guides as well. Finally I'll mention that IMO the Spring site has some of the most extensive and comprehensive documentation I've seen and is a great resource
As for where to start I'd start with Spring Boot, it's a module focused on quickly getting something up and running. So it makes things like dependency management a bit easier as well as running a web-server and connecting to a database. Speaking of dependency management you'll want to take a brief look Maven and Gradle. They're both build tools similar to NPM in concept. Spring supports both equally its just preference. I personally use Maven b/c that's what I was introduced to first through an internship back in the day
Outside of Spring Boot you'll want to take a look at Spring Framework and Spring Data. Spring Framework is the core project that all the others are kinda built on top of and will introduce you to a lot of the concepts you need to learn such as dependency injection. Spring Data is focused on interacting with databases so it helps manage the connection to the db and modeling to/from POJOs and the query language. The nice thing about it is that they do their best to abstract things from the underlying db technology. Working with a tradition sql db or a nosql db are pretty similar from a Spring perspective so go with whatever you're more comfortable with or more interested in
EDIT: Quick edit to clarify, you'll be exposed to Spring Framework and Spring Data just by going through and messing with Spring Boot. I was just suggesting that those would be good places to do deep dives once you're comfortable with the basics in Spring Boot
As a frontend dev I think this is where I'm legally obligated to make the "java sucks" joke. So, there you go.
On the opposite end, I still wouldn't touch it with a 10 foot pole because I despise that object oriented nonsense, but honestly pick a project you already know inside out. Something that YOU enjoy. Whether that's some frontend shit, some script you use regularly, whatever. Then, rewrite that in java. You already know exactly how it should work, so all you need to focus on is the syntax, build system, libraries, etc.
It's my absolute favorite way to get started on writing things in a new language. Of course, I would never traumatize myself by doing it in Java, but the same principle applies even for those who enjoy self flaggelation.
Ok, I think that's my quota of "java bad" comments for the day.
Now, for real, go rewrite something you're already intimately familiar with in Java and thank me later.
I'm gonna go screw with Haskell some more now. Have fun.
Imho, the java aspect of it matters much less than the backend concepts. Are you already familiar with those ?
There's quite a lot of stuff to learn on the backend and it really depends on which layer you want to focus on. If you're interested in developing business services then i would recommend writing a restful API (for example for a to-do app) with spring boot and your preferred flavor of SQL database. That covers a lot already. From there you can look at how to scale performance up (caching, queuing, asynchronous).