I'm at a bit of an impasse now and I don't know what to learn next.
I already know core java skills, I passed the associate certification exam by Oracle, and created a few desktop applications using Swing.
However, I can't seem to wrap my head around the Spring framework, and I don't know how much of it I'm gonna be expected to know for job interviews.
I didn't really learn much of anything related to Java web development yet, and when I do I get confused and discouraged.
I know the core skills including classes, interfaces, objects, collections, etc and have a few projects on my GitHub.
I was hoping I had enough to get entry level and learn the rest in the training labs, as learning them on my own is turning into an impossible task. Also, due to the pandemic, there aren't any jobs open or internships for me to test the waters.
I'm also majoring in a graduate degree in software engineering, but none of the content seems to be relevant to coding anymore after the 2nd programming class, and the rest is just the principles of software design and agile principles.
Are there still java desktop programmers? The problem with trying to learn Spring is that it is a different language to me, and I'm becoming raw with my core java skills.
The Spring Framework is based on Inversion of Control (IoC). IoC is pretty fundamental to Java these days. It's not just the core of Spring, but it's also used in other systems such as JavaServer Faces. So you really should learn IoC. Once you do, Spring will make more sense. Be aware that Spring is not one product but many, however. There's a core IoC factory facility, but there are numerous optional modules that projects can use as well to assist in database access (Spring Data), scheduled processes (Spring Scheduler), self-container web application/server modules (Spring Boot), and many many more. You don't have to learn all of those, however, just be aware that if you have a particular problem there may be a Spring Module that can help.
I found the Manning "Spring In Action" book to be a good intro. Although I'd been doing IoC professionally for several years before I that came out. And since I'm not really up-to-date on books, I'm sure that there are other introductions available as well.
Shelter-in-place is no excuse for not improving yourself. I work on projects for people who are literally on the other side of the planet. I've never been within 5000 miles of them, but I still deliver software even though I never set foot out of the house. The key is to find projects that need doing and work on them - either something you've thought up yourself or joining an open-source product development team off someplace like Github.
While the course offerings on software development and Agile don't seem useful at the moment, they are important if you want to work professionally. While some of us do work almost entirely alone, most work in teams and a lot of work has been spent on making teams more effective. And a lot of nonsense and soul-crushing crap, but that's business for you. You didn't mention DevOps, but that, too is important these days.
Desktop applications are still around, and some of the best ones are in Java, but admittedly the preference at the moment is for web-based stuff and portable devices. You definitely should familiarize yourself with how HTTP works and how Enterprise Java supports it.
"privilege" comes from the Latin words for "private" and "law" (legal) and dates to feudal times. To "claim privilege" meant that you were above the laws that applied to the common people.
I'm going to wax a bit philosophical here so just be warned before you read on.
Shu Ha Ri defines three stages of mastery. There are other models like the Dreyfus Model but I'll talk about ShuHaRi here. You're at the Shu stage right now, the beginner. You've learned the mechanics, the basic moves, and a basic understanding of core concepts. Next is the Ha stage, where you start digging deeper, exploring the principles behind the mechanics. This is where you start asking "Why?" more than you ask "What?" and "How?"
In software development, Ha is probably where we all spend most of our time when we're learning something. It took me a few months to get out of my white belt in Aikido and start moving up the ranks to brown belt. From brown belt, it took about four years to get my black belt. By the time I was awarded my black belt, I understood why it was just the start of my journey rather than the culmination. It will take many more years of continuous practice to get promoted up to my third dan black belt rank and at this point I doubt that will ever even happen. I just don't have the time to put into the practice it takes to get to that level of expertise.
Principles. That's what the core of the Ha stage of learning is about. So the short answer to your question of "What do I learn next?" is that: Principles. Learn about the different design principles that help you write good programs that are easy to read and maintain.
And I can't end a post like this without mentioning testing. Testing and using tests to drive your thinking around design is an essential tool to have in your development repertoire. Without it, you're no different from 80% of the developers out there. If you want to differentiate yourself and get ahead of your peers in the job market, learn how to do Test-Driven Development. If anything, learning how to do it properly will lead you to learning about Refactoring and Code Smells, which is an important skill, regardless of whether you practice TDD or not.
The best ideas are the crazy ones. If you have a crazy idea and it works, it's really valuable.—Kent Beck