What are the factors that have made Java a success as a programming language in enterprise computing?
|
migrated from stackoverflow.com Jan 24 '11 at 12:52
|
Disclaimer - I'm a JUG leader and writing a book on Java - so I'm biased :)
There's loads more, but I should get back to actually writing some nice integration tests dealing with Lists and Maps (no manual memory allocation!), using a free open source Java API (JUnit and pals) and then deploy to my 3 environments (Unix, Mac OS X and Windoze). |
|||||||||||||||||||||
|
|
Robustness and garbage collection. The JVM is very good at running for very long. Also Java code is easy to write in a way that unused objects do not linger giving memory leaks. Also stack traces are useful but that is just icing on the cake. Edit: Completely forgot: Java has multi-threading built in, in a well defined cross-platform way. This goes very well together with web servers. To my understanding this was much harder in C and C++ at that time. |
|||||||||||||||||||
|
|
Language simplicity (easy to parse and analyse) + reflection (easy to obtain properties of the compiled and running code) = great tools ecosystem. Just what the industry needs. |
|||||||||||||||||||||
|
|
It wasn't c++. In a world where everything was expected to be rigid, solid, and stable, Java came along dressed up like c++, proclaimed to be easier to use, and stole away all the c++ developers that were tired. Plus, Sun threw trucks of money away marketing the language. Most vocal at the right time. |
|||||||||
|
|
There's a very simple explanation for Java's adoption into the enterprise. It was IBM. Once IBM committed to Java, their customers followed suit (didn't really have a choice). Then the case studies came out about large applications being successfully ported to Java, and Java on the mainframe. Time this with the rise in popularity of Java in academia. And you have a perfect storm. The factors that others have mentioned (simpler memory management, easy transition to C++, multi-platform) made it easier once it got moving. But IBM is what gave it the initial traction. |
|||||||||||||
|
|
A lot of it was the hype. Java rode the rise of internet technologies in the mid-90s, and managed to establish a critical mass of mindshare and tooling in a relatively short time. By the time people figured out that applets really weren't worthwhile, Tomcat and the JSP spec were out, and people were creating dynamic data-driven web sites with something other than CGI scripts. It also didn't hurt that Microsoft was a Java supporter early on. And once developers got comfortable with JSPs, Java got EJBs. And when everyone figured out that EJBs were a nightmare, we got Spring and a bunch of ORM solutions. So I think the key is that Java got a good start, and has managed to overcome its mistakes and adapt to changing technologies. It's sliding out of favor, but I haven't seen anything up-and-coming that has enough mass appeal to replace it. |
|||||||||||||
|
|
In the mid-1990s, java was cleverly hyped by the marketing departent of Sun Microsystems. They flooded computer books publishers, computer magazines, web sites on the internet with articles on java, tutorials, giving the JDK away for free etc, quickly pushing java servlet API and other server-side technologies. Java gained a user share rapidly, then lots of young graduates entered the job market, getting IT pro and developer jobs during the first internet bubble, with a desire to reuse existing java skills (could be used for anything). Sun marketed agressively, in response to , and just as Microsoft did back then, threatening to take over low-end computer-industry markets with cheap windows 95, windows NT etc. |
||||
|
|
|
It's not just for the language excellence or platform advance. Back then, beginning of '90s, Java is the only web oriented enterprise computing capable framework. There were no other. My personal impression of Java was Java applet run on the Netscape browser. It was really cool! Java was widely recognized as one and only Internet programming language at that time. |
|||
|
|
|
I'd like to stress the point knivil makes that the single most important advantage of Java is that it has a good and very large standard library. The feature set of Java resembles C++'s, but the latter only has a very limited standard library. Imagine: C++ even lacks a GUI library! Just about every non-driver application needs one, but in C++ you're left on your own. So if you want to start a new application, you first have to choose one of the available third party libraries, all of which have severe shortcomings. This heightens the threshold for using the programming language considerably. |
|||
|
|
|
You do not have to be very skilled. (I am not saying that Java programmers are unskilled.) Garbage collection: You do not have to balance your new and delete. You do not need to think about object ownership. Rich standard Libraries: C++ still suffers form that fact. Old C++ libraries like Qt have its own string implementation. Single inheritance: You do not have to think about the pitfalls of multiple inheritance. You do not have to think about ... in the first place. |
|||||||
|
|
Dynamic loading/linking with Class.forName("mypackage.SomeClass"), and it was free. Many comparable toolsets just for GUIs were $10,000 per developer seat. |
|||
|
|
