I am as of right now, only a Java dev. There are a few APIs out there for game development, most notably, the light weight java game library (LWJGL) which allows for implementation of OpenGL and a few other useful stuff. Slick2D is good for 2D games (obviously) but I believe has some support for 3D.
As for the language, it depends on what platform you want to develop for.
If you're going the Android or in-browser, Java is probably your best bet, although Flash would be OK for in-browser games.
iOS uses a native programming language called Objective-C which is like C+=2 in the sense that C++ was 1 step above C, Objective-C is 1 step above C++. I think it makes better use of object orientation than C++, but is really only compatible with iOS and Mac OS X.
Python is technically a scripting language, NOT a programming language, some developers get kinda cranky when you mix the two up. However, it is a viable option for game development. It's a bit different coming from a C-like language (C++, Java, Objective-C, etc.) so I don't suggest it if you already know one of those languages.
C++ is one of the best programming languages out there. It basically compiles for any device, and you can do whatever the heck you want with it, unlike Java. It's definitely what you want to use if you plan on developing for PS3, XBox, Wii, or any other gaming specific console. It's probably also the fastest option for any system, including Android and iOS (but I don't suggest using it for those platforms).
Java is great for in-browser stuff (called applets) and is preferred to Flash (DIE FLASH! DIE!). It's similar to C++, being based off of it, and is ONLY object oriented. It has some limitations in terms of memory management. It's also terribly slow for anything too graphically heavy (and anything else for that matter) as a result of it actually being compile into a Assembly-like code called Java Bytecode, which is interpreted by the Java Virtual Machine (JVM) and then executed by the actual computer. It has constant updates (usually security) that make it a pain to keep up to date. It is also pretty much the only language you can use to program for Android (though there is a C# translator type thing called Mono).
C# is like Microsoft's and C++ retarded baby. DON'T USE IT if you can avoid it. It's similar to C++ but lacks all the good stuff. It is also only officially available on Windows computers, but there is a translator called Mono that allows you to use it on Mac OS X, Linux, Android, and iOS.
Which language you use really depends what platform the game is intended for. I personally suggest Java or C++ just because they work on almost anything. If you're going to be making something really graphically intensive, do C++. Otherwise I'd choose Java. But that's just my opinion
Sorry for the super long post, I had a lot to say!