Typically what I do is install the official Oracle release of the Java SDK into /opt/java. Update /etc/profile.d/java.sh with JAVA_HOME to point to /opt/java, and update my path to point to ${JAVA_HOME}/bin:${PATH} and start hacking away. Many distributions come with open jdk which is good for a lot of coding, but would rather work with what's in production for the stuff I deal with. Problem is that it gets auto-installed with my (packaged) dev tools and java-ee software. Other than that, previous poster had it right. There are some IDE's that you might be interested depending on what libraries/SDK/type-of-programming you'd be interested in. I think off the top of my head Netbeans and Eclipse. Warning with those, though, you need a hefty system with much memory to run them. Happy coding!