Java not popular? Au contraire! As water2j alluded to, Java developers are theoretically overtaking C/C++ developers. Even if you accept their numbers, however, as Anthracite noted, the word “developers” is a bit hazy. If you can write “Hello, world!” in Java, are you a developer? Or are you only a developer if you are writing consumer applications? The number of people who are familiar with Java is certainly increasing, and will continue to do so, especially with the AP CS curriculum switching to Java. I think this is a poor move, but nobody asked me.
The factual arguments against Java can be found in articles like this one. More importantly though, there is anti-Java sentiment from Microsoft. Furthermore, there tends to be an innate prejudice against non-scripting, non-C derived languages in Linux. Heck, there is a lot of prejudice against C++ in Linux. (Yeah, it’s fading, and important things like KDE are written in it, but I daresay it’s still there.)
Computer language preferences can be as strongly held as religious convictions, and holy wars can be waged just as easily. I dislike Java for two reasons: 1) it is proprietary, owned by Sun, and 2) it is slower than C/C++. I vastly prefer a non-proprietary language like C, with standardization done by national and international standardization organizations (ANSI, ISO). As for speed, I do most of my coding in C, and with Java there tends to be a noticeable slowdown. Despite the fact that there is an ever-increasing amount of “Java developers,” you don’t really see a lot of Java applications, precisely because it tends to be slower. Yeah, some people say that with increasing hardware power this won’t matter – well, for some things it still does matter, and for everything speed is nice, especially to a perfectionist like me. I am not afraid to drop down into assembly to do some optimizations for a particularly critical function. Furthermore, Java tends to end up much more bloated than C. Code bloat is evil.
The fact that it is object oriented is great, but object orientation is not all about classes, inheritance, polymorphism, etc. A lot of it is about programming structure and thinking. You can take many of the good concepts and apply them to C or another language. Furthermore, the whole “object oriented paradigm” (buzzword alert!) is not the be all and end all of computer programming, though it probably is more than just the latest fad. It’s not the only way to go about solving a problem, however, and is not even the best solution in many cases.
A poster on this board once wrote that “Java will be the Pascal of this decade” (sorry, can’t remember who). I agree. It has fundamental weaknesses as described by the Salon article I linked to above, it faces prejudice from Microsoft, Linux folks tend not to like it, and most geeks are reluctant to change languages once they have found one that works for them.