2) The thing is, Java can be debugged/developed on a Windows box and deployed on a Linux box, without any further testing.
I mean, you'd be nuts to actually do it without testing, but if your coders are smart and multi-OS aware there won't be any problems.
I myself wrote a calendar app for personal use, on Windows 2000. One day I tried it on Ubuntu, and everything worked fine - although it looked like shit because Gnome skinning didn't work. Not the same category as a business app, but it didn't even need a recompile. When you can write something java in 2002, and it runs flawlessly on a 2009 OS that didn't exist when it was created, without a recompile... you have to factor that in as a feature.
3) Python? :P
Java's VM is impressive. When flipping from C-based to JVM-based, Python gets about a 2-5x speedup. At this point, Java is "the wheel", for a lot of non-business apps. Re-inventing the wheel in other languages is pointless - just build on top of it.
4) I agree with you here. Although Java encourages readable syntax, it's certainly not the best language available for it.
5) Java running in Server mode is effectively compiled. That's why it starts so slow. Java running in Desktop mode is quasi-compiled. Quasi-compiled works okay, because the Java interpreter is very fast, and it lets Java apps start quicker than C# apps.
6) Python and C/C++ are more popular for front-end apps - probably because there are more front-end apps than back-end apps. Java is extremely popular for DB stuff that connects with webservers. There seems to be a lot of government, banking, and business sites running on Apache Tomcat - but because of the nature of the JVM, each site is running its own unique applications.