For me an intro programming language should have one of two qualities. It should either:
a) have simple, easy-to-understand syntax so that students can learn the fundamentals of stitching together a series of logical steps into a working program
OR
b) be low-level so that students learn computers and programming from the ground up. I mean registers and pointer arithmetic and memory allocation/deallocation.
Either is a valid approach. For a) the most obvious candidate (to me) is Python. For b) it's either some sort of assembler language (my first language was 8086 assembler) or C
Java is a "tweener" language; it's not simple enough to teach programming and logic, but not low-level enough for students to understand computers at a basic level.