I think java can be a very good first programming language if you start with first-rate tools.

Using these tools allows you to overcome “public static void main” problem. I follow something like following

I teach “public static void main” more than 10-12 hours later as entry point of a Program, when you do not use BlueJ or Greenfoot.

These tools has a lot very good features and they are designed for teaching. http://www.bluej.org/about.html

I have successfully used simple and elegant IDE of BlueJ in more than 20 professional and 2 academic courses and I am satisfied by it compared to python and C#.

Problem with most of the other languages, students demand real Enterprise applicable language as their first programming language, at least it is this way in my country. They want to learn a language which is used by Enterprise. When you are trying to make them like programming, this argument is very hard to overcome.

You can use a different metrics like - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html - http://stackoverflow.com/tags - ..

But in the most of the metrics: C,C#,Java,Javascript leads the pack in the popularity. Among these, I found that Java offers best tool support for teaching.