I hear a lot of people speak poorly of Java, especially the ones coming from C/C++. Is there a historical reason why? Is it because it used to be machines were too slow to run the JVM without lag?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
closed as not constructive by BЈовић, Kilian Foth, Morons, Jalayn, Yannis♦ Sep 27 '12 at 7:17
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.
For every language you will find People who Speak poorly of it. It's just the way it is.
Java is no exception.
Programmers from the 'real programmers code in binary' clan will probably hate Java till the end of time. But for the rest of us, Java helps get the job done fast and with a (slightly) shorter learning curve.
The C/C++ times gave good programmers the fun of being able to play with memory the way they wished. Java made garbage collection automatic, so that fun was lost. Also those languages compiled to machine code, and so was statistically faster because of the absence of the JVM process. But times have changed and with today's hardware this is hardly even noticeable (unless you're trying to encode video or something). Also, i must say, there is a certain added satisfaction when you pull something off (non-trivial) in C/C++ where-in you had to do all the memory management etc the hard way.
Generally speaking Java gets a bad rap because it's essentially relatively weak at both of it's touted strong points:
There is no inherent fatal flaw with Java except that it's really not much better at anything than other languages.
However, it DOES have an impressive collection of libraries available across platforms, and it's disingenuous to consider the language only without the libraries. As a tool to "get the job done" it's VERY general purpose "out of the box" to cover a lot of bases more than well enough for real-world usage. It's an advanced swiss army knife, if you will (one with a lot of safety features to avoid hurting yourself).
C++ developers specifically may have a dislike for Java for some other reasons as well:
From the end-user point of view, many older Java programs (actually the JVM) used humongous amounts of memory for the simplest of programs. Often well over 100 MB for a simple FTP client or similar. Especially during times when most systems had 256 MB to 512 MB of RAM, that was simply unacceptable. And as Java programs were quite common in the desktop area, many people came to the same conclusion about memory usage.
Also, the Java Runtime Environment has a long history for severe security issues (even right now), so the reputation has dropped quite sharply with the increasing use of Java in general public.
Java Security Alerts:
http://www.oracle.com/technetwork/topics/security/alerts-086861.html#SecurityAlerts (2009 - 2012) http://www.oracle.com/technetwork/topics/security/beaarchive-159946.html (2006 - 2009) http://www.oracle.com/technetwork/topics/security/alertsarchive-101846.html (pre-2006)
To me, the size of those lists is just horrendous.