I think java proved itself as quite a viable programming language for programming games the same way that C# did with libraries such as XNA. It may not be as efficient as a low-level language like C++ in some situations because it is managed but it doesn't change the fact that it removes the need to manage memory by yourself (but then you have to deal with the garbage collector though).
Some successful java games: Minecraft, Runescape, other java games
Things java might be missing for game development.
I guess you could start out learning with this link and move on with other online tutorials after that.
Even though java can do the job, I'd still recommend trying out C# with XNA. C#'s syntax is, in a way, similar to java and won't take too much time to learn (if you know java).
Here are some resources for learning XNA and let me add this link that I recently discovered that is simply fantastic too.
But, hey, if you like java, program in java! Just program games in the language you prefer. Don't worry too much about how "efficient" or "viable" a language is until you feel like you master the game development's concepts enough to chose a language to use it at its full potential.
Just my little 2 cents on the subject.