I use Java and jcreator in my classroom. Both free. There are also free tools that help students get a grasp of concepts before mastering the syntax (bluej, scratch, alice)
There are also packages that help with teaching, karel J robot comes to mind.
I also use codehs.com as a supplement for my class.