Let's not be shortsighted. Do we live in a world of human brains that get more and more complex, powerful, and unfallible? No. We do live, however, in a world of increasingly complex problems to be solved. And we live in a world of computing technology evolving at an extremely high pace. Now, should we worry about the computers being overloaded or rather our brains?
The way to cope with high complexity is abstraction. Java (and other strictly object-oriented languages, like C#) is abstraction. That's all.
Yes let's abstract Java and C# to the bin where they belong.
Are computers getting more advanced? Hrm. It's the same stuff from the 70s only getting faster and smaller. Where's the next big step? Atomic computing has not evolved to the level of general purpose yet. Multi-cores... yeah, a newer achievement but still another build on top of previous designs. Where's the next big thing? Oh well maybe it'll never come.
Java and other languages that run inside a VM provide nothing more to OO than a language like C++ does. Good programming practices and leaving a lot of things to the compiler reduce run-time overhead and make efficient code. Trying to say a language is good because it may help against the human element is ludicrous when you consider the runtime sacrifice.
Besides, if Java is so powerful and flexible why are JVMs written in C++?
The problem is that in C and C++ you can, but you don't have to. Programming in a clean and modern way often seems overkill to beginners and if they are given a programming language that allows ugly, old-fashioned procedural coding, then they will go ahead and do it that way. Then, however, they will never appreciate the real advantages of clean OOP - as probably you never did.
Let's see. For over 8 years I worked at a medical device company, and the last 4 years of that was for hard realtime embedded systems running on small footprint PCs under Linux. The realtime and kernel side was done with C (RTAI and kernel modules) while the GUI was done in c++. In 2000, I designed an entire set of GUI classes (framebuffer) for C++ and then abstracted that to work with other output devices. (An LCD screen over a parallel port, and curses for a text-based interface.)
Don't presume to tell me that I don't understand OOP.
Hehe, that statement just adds to the impression that you have no idea what you're talking about, yet quite a big mouth. Actually I used to reason the same way before I really got deep into large-scale Java and C# projects.
Oh yes, I don't know what I'm talking about.
Clearly you can't hold a real discussion so you're going to insult me instead.
Would you like a copy of some of the tests I wrote in java and c++? They're sorting algorithms. They also have the exact same syntax. On one of them, the c++ version was over 1000 times faster on my (at the time) 1 ghz g4 PB. Wow!
And as for the comment about the bloat? Well, guess which used less memory? (way less)