Quote:
Originally Posted by Game_Ender
No, Java was designed to be used on a wide variety of consumer devices and appliances. That is the driving force for all of its features, the JVM (portability), no pointers (reliability), and garbage collection (reliability).
|
Well, that was the intent.
In practice, like any feature of any programming language or environment (Java includes aspects of both), those features have trade-offs.
Portability via the JVM gives an effect known as "write once, debug everywhere" (as different JVMs work differently), "no pointers" contributes to some loss of expressiveness which makes some things more difficult to code, and "garbage collection" is only a partial solution (it addresses some problems with memory usage but not with other resources such as file handles) that can make a program behave unpredictably at times because of the way the garbage collector works.
The above is not at shot at Java; I can equally describe trade-offs of the counter-part features of C++ (not relying on a JVM, supporting pointers, and garbage collection not being the default).
I agree with others who have said that there is no universal "best". Each language suits some applications better than the other, and each has weaknesses. Despite claims by zealots in either language.