Programming on the Java platform Virtual machines, Languages, and Tools