I’m not a big fan of YAPL’s (Yet Another Proprietary Language), so I’m biased. I will say that Java is much better than VB, and it’s probably a good choice for a lot of applications, but it suffers from the cultural and design flaws that always seem to crop up in proprietary languages. I blame marketing. The marketing departments of the companies promoting their YAPL’s foster tribalism among programmers. I.E. they encourage programmers to identify themselves as  “I’m a YAPL-X programmer. YAPL-Y programmers suck”. It’s kinda like the console wars: retarded. The correct behaviour is to isolate the best language for a particular task, based on the constraints you are working under.    This leads to frustrating books, articles, blog entries and forum posts, with people attacking and defending their particular YAPL, rather than discussing the technical issues as neutrally as possible. This leads to a high noise to signal ratio when you’re trying to figure things out.
For example, I wanted to use Java SAX (Simple API for XML) for a very simple application. Using google to search for tutorials or what not gets you really out of date information. For example, the top hit for “Java SAX” gets you www.sasxproject.org, which would seem promising, but it was last updated in 2004. Much of the methods have changed, as have the include paths, as have the status of the libraries, etc. etc. The official JavaDoc documentation is up to date, which is better than nothing, but it’s not a very efficient starting point.
As another example, consider the problem of converting a byte array to a string representation and back. As of the date of this posting, entering “java convert byte array to string” into google gets you the following link
Googling “java byte array to string and back” gives you this as the number one link. When I hit that link I got an ad with sound, and of course there’s no information on how to solve the problem. Someone has posted a clue, which may be accurate, that when calling new String(byteArray) it’s actually Object.toString that’s being called -> i.e. loss of information. Ok, that’s cool, but how to get the desired effect? Not only that, but if the responder is correct, that says very bad things about all the information arrived at by “java convert byte array to string”.
I wonder whas going to happen now that Oracle has aquired Sun’s holdings. Franckly I’m not particularly hopeful, but in the absence of data I attempt to remain neutral.