While it is true that there are many untruths written about java's capabilities, nonsense like "it's faster than C++" etc, you have to look at the bigger picture.
1) Economically, employers like a saturated market, it makes for cheaper salaries and abundant programming staff; programmers will not 'leave java' once the market is saturated simply because it's the lingua franca taught in universities. Java is the modern cobol - it will be around for decades.
2) Java's development policy at Sun was 'conservative.' This was and still is a fantastic idea. What this means is that you don't go changing the syntax and core features on the whimsical enhancement requests of thousands of nerdy academics trying to look clever. In java's enhancement history, there are innumerous rejected requests from computer scientists and students asking for totally obscure features : "java doesn't have sproutal functor chamferings" or "hyperbolic cheese factoring." These get rejected politely by pointing out the conservative development policy and the fact that quite often, tiny syntax enhancements require major re-architecturing of the JVM and a consequent footprint increase. Computer scientists and programming geeks - If you want Algebraic flumpal loops or Herzian antisoup filters - I don't care, and neither does the java world. Go and use Haskell or Scala or whatever turns you on , java is simply not designed for that.
3) The normal distribution curve of Intelligence . Under a classic bell-shaped curve representing the spread of IQ in society, a far greater 'area' represents people of an intelligence being capable of learning and becoming expert in simpler programming languages like java; another reason for companies to invest heavily in it. What's the point of Haskell if only 37 people in the world can understand it to an expert level? And what about 'cheaper' maintenance programmers - how can a company expect to survive after having its systems rewritten in Haskell / Scala / insert flavour-of-the-month-language only for that programmer to leave after 6 monthsleaving nobody on earth at an employable wage anyway having the fainest idea of how to decipher it ? The problem with computer scientists who extol the virtues of their newest academic language, Sheep++ or Objective-Meerkat or whatever it is this month, is that they assume everybody else in the world is as clever as they are. We're not. This is where simpler programming languages are worth a million times more to a company than obscure mathematical abstractions that only quantum physicists can understand. KISS!! Keep it Simple, Stupid.
4) On the subject of Oracle. 10 years ago, Oracle started rewriting it's own internal software and much of the software it sells in java; their internal investment is enormous; the ranch is bet on java. Oracle acquiring java is not a flash in a pan - it's a logical progression; java will have much stronger stewardship now it's in the hands of a financially successful company with the bucks to look after it.
5) Beards. What people forget is that ALL of the most mega-successful, used- worldwide, destined-to-be-around for 50-years programming languages were all designed by REAL academics with BEARDS. Gosling, Stroustrup, Kernighan + Richie, all beardies. C#? non-beardy. Ada? non-beardy. Scala? non-beardy. These are all destined to ultimately fail. Cobol doesn't count as the designer was female. Objective-C's designer had a moustache, so the language is partially successful in Apple.
6) Finally, a message to all you programming geeks who constantly whinge that "java cannot do so and so." Usually there is a very good reason WHY java was designed to not do so-and-so:
"Java isn't pure OO unlike Smalltalk!"
-> java's designers added primitives for performance purposes.
-> java's designers rejected multiple-inheritance in favour of interfaces
-> java's designers rejected un-castupability-of-objects because of performance reasons
(you cast a reference up, not the object.)
"Java hasn't got programmer-controllable pointers!"
-> this is so developers don't crash the programs they are writing.
-> this is so the language is 100 times easier to read, and quicker to fix.
-> Use pointers and C where they are absolutely needed; libraries, drivers, databases..
"Java is slow!"
- Java used to be slow. Java itself has gotten quicker, but what people forget is that when java came out you were lucky to be running it on 486 - woohoo! Commodity hardware is now both cheaper and orders of magniture faster than what was around in 1993. The maintenance advantages of java now far, far, outweigh any performance gain of faster languages that are much more expensive to maintain, like C and C++.
"Why was java's syntax based on C? why not rewrite it?"
--> C was a minimalistic language with a very clear syntax (except for pointers, which unfortunately make up 95% of code of real world C systems.) Why not keep what is good?
In summary, if there were an olympic games of programming languages, with say 500 events, true - java would only take gold in a small number of them - unlike maybe C or C++ which would get multiple golds. BUT! java would take silver or bronze or come in the top 5 in MOST OTHER EVENTS, whereas things like C or Lisp or Ada would come last or near the back in the events they are not winning gold in. Java is the ultimate compromise language, and the more you get to know java, the more you come to appreciate WHY it's designers left out the 100 features that academics moan about it not having. ( I'm still bitter and twisted that they allowed Generics in it, but there you go.) It is for this reason (among others like the ability to run in a browser in the early nineties) that has led to its ubiquity . No other language can tick as many boxes as java, taking the holistic view: programming features, APIs available, 3rd party libraries available, cost, performance, availability of cheapish programming labour due to preferential teaching in universities, well documented, secure, internet-ready, multithreaded.. built-in exception handling.. cool logo.. and all designed by a cool-looking dude with a beard. It just can't be beaten, and will not be going away for decades - accept it!
thankyou, Java !!!