Originally posted by: manly
Originally posted by: BingBongWongFooey
BS. I know more than one sysadmin who deals with java garbage at work. Java, to me, is a failure. Java was meant to be portable, yet it doesn't work that well on any platform (except maybe mobile devices? dunno), let alone work well on all of them. Java is an unwieldly, bloated resource hog.
Why DID java get so popular anyways? I know in the late 90's or so, colleges started teaching it alot, why?
Generally I trust your opinion, because you're objective and informed. But really, in this case, it seems like you have an old bias against Java and cling to that without much technical basis.
Call it a failure if you want to. I specifically cited its widespread use in enterprise application development; generally speaking, companies do not adopt IT platforms that are failures or that have horrible runtimes. And yes, the resource issue is important but name any other platform (besides C) that scales from embedded cell phones all the way up to big iron.
As far as it not working well on many platforms, that's again a matter of opinion that's generally refuted by the marketplace. If you're referring to client apps, then the that's a very hard problem to solve. In fact, Java is one of the few true single-source solutions for cross platform GUI apps. I'll concede that it doesn't work as well as native apps, but every time this question is raised in the software forum, even many of the die-hard Windows fans cite Java as being one of the best choices for cross platform GUIs (for example, singh comes to mind). Generally speaking, Java Swing is no longer the problem; it's Swing apps that remain bloated.
Now if you're not talking about GUI apps, then Java portability is very good. Although Sun only supports the JVM on three platforms, there are officially supported ports on dozens of others. Most of the Java application servers will run on any platform with a JVM, hosting your enterprise apps. Java doesn't have the quite platform breadth of C (or GCC) but C doesn't have the seamless binary portability of Java either. Java wins in a landslide with all the standard libraries.
In native code development, you usually have to try (hard) to achieve source portability. In Java, you don't have to try hard, but you do have to occasionally debug some differences in platforms. Your opinion that it doesn't work well on any platform is weak if it's based on your trust in a sysadmin that has bad experiences.
As far as why Java became popular, in a word, simplicity. Learning C++ and developing in C++ is HARD. The funny thing is that for some time, C++ was strongly associated with OOP, and thus was the primary language used to teach OOP. It wasn't until Java came around that not only academia but the industry realized that while C++ has been successful, the level of complexity involved is much higher than most languages out there. By most accounts, Java is not a beatiful programming language, but it's practical and productive. Beyond complexity, C++ had other issues I'll summarize as politics. If not C++, I suppose they could have picked Smalltalk or Objective C but I've never really analyzed that question in detail.
I just feel your argument is not based on technical reasons, which I find surprising having seen your discussion in countless threads to date. I personally think your bias shows through with terms such as "failure" and "garbage". In sum, the fact that you admit you've rejected Java to date and don't have extensive experience with it makes you an unlikely candidate to argue both its true strengths and weaknesses.