It really depends on what you’re already comfortable with, what your end goal is, your style of learning, etc. It’s pretty hard to give you a one-size-fits-all suggestion, because there isn’t one. What’s “best” is different for every single person.
If you’re asking me for my two cents though, I would really suggest starting out in Processing, and working through the basics. Get a Pong clone working (shameless self-promotion: the tutorials I posted take you through exactly that), and then try adding features to it- powerups, enemies, whatever you can think of.
Then work through cloning other simple games- flappy bird, space invaders, asteroids, etc.
After you have a few of those types of games under your belt, then think about creating your own simple game.
When you’re comfortable with making simple games in Processing, then you might think about moving to Java, and on to more complicated frameworks like LWJGL, libGDX, JOGL. JMonkeyEngine, etc.
Processing is great for getting something up and running very quickly, and is perfect for simple games. Eventually you’ll want to move on to “real” Java, and you might make a few Java2D games just to get the feel of things. You’ll eventually want to move on to something like libGDX (fancier graphics, physics, lighting, deploying to Android, etc). But I wouldn’t recommend jumping right into libGDX, which is why I’m recommending trying Processing first, then working your way up through pure Java and eventually on to libGDX.
So that’s my two cents: if you’re just starting out, try Processing just to get your feet wet. Don’t worry about what comes next until after you’ve made a few simple games. It’s easy to get overwhelmed, so focus on the next goal. If I were you, that goal would be making Pong in Processing.
As for books, I don’t really know. I don’t really learn programming from books very well. I’d much rather follow tutorials!