Why did Java succeed ?

It seems like the number of pronouncements about the “next java” is on the rise. Folks are boldly announcing their pick, Ruby, Python, Erlang, JavaScript are all apparently in the running. I have seen folks also back Haskell. But, the one question that has bothered me for a while is I don’t understand why Java succeeded in the first place. Shouldn’t the successor for Java then follow the same/similar recipe or have the times changed and the old rules don’t apply.

I have heard so many reasons for Java’s success. Reasons including

  • It was a shrewd marketing campaign, folks just assumed that Java had something to do with the internet. Applets were a nice selling point, even though Java’s eventual success was on the server.
  • Java was a better C++ (at the time).
  • Write Once Run Anywhere cracked open the platform portability problem. Certainly was better than using #ifdef’s all over the place.
  • Java took Smalltalk and made the syntax more palatable (although Alan Kay makes it a point in some of his keynotes that Java and C++ are not what he had in mind when he coined the term OOP).
  • From the Paul Graham school of thought – Java is a mediocre language for mediocre programmers. It thus become a “safe” option for IT middle management, because in theory Java programmers were replaceable. After a point, there were so many of them (us), it minimizes the risk associated with programmers leaving a project.
  • J2EE is a standard and provided an API for for anything an “enterprise” would want to do. Being a standard meant that vendors were replaceable, once again working into the IT middle management’s risk averse mindset.
  • This reason is the one I like best – J2EE application servers provided IT operations staff with a standard deployment environment. One they could provision, deploy, maintain and operate without having to worry about the language du jour.
  • Eclipse is a great tools platform, made Java development a snap.

So, which of these reasons is it ? Or is it a combination of some or all of them ? I am probably missing some reasons, but, if Erlang is to become the next Java, which reason will it go after. I like Erlang, I think message passing concurrency, a system built to handle failures are fantastic design principles. However, is technology enough of a forcing function ? Businesses only react when their competition is able to gain an edge through technology or when their business goes away because of technology.

Will the “next Java” replace Java in an existing customer set or create a whole new customer set ? I have a sneaking suspicion that existing customer sets will not replace Java, there is way too much invested in the language, the libraries, the VM and in J2EE application servers. The change has to come from a new customer set.


 
 
 

15 Responses to “Why did Java succeed ?”

  1. Patrick Mueller
    14. August 2007 at 02:43

    Java was a better C++? Absolutely. But that’s not saying much; low bar to cross.

    Java took Smalltalk and made the syntax more palatable? Nope. Smalltalkers hated Java, and vice versa, when it came out. Java barely uses OO at all.

    I do think that languages that veer too far off the imperative path won’t become wildly popular for some time. Ruling out Smalltalk, Lisp, erlang. But not ruling out Ruby, Python, JavaScript.

  2. Affar
    15. August 2007 at 18:25

    I want to add one reason.
    • Java is heavily being supported by the Open Source committee and by the leader IT companies (IBM, Oracle, …).

  3. Stephan Schmidt
    15. August 2007 at 18:31

    1.) Java worked
    2.) Java was good enough
    3.) There was a sufficient complete JDK not something buggy like Delphi, something incomplete like STL, something alpha like CPAN or nothing like ST. In the end, programmers want to get things done. The easier the better. Language syntax is only a small part of that equation (Hello Anders! Hello Betrand! Hello Bjarne!). And implementing OO the wrong way doesn’t matter at all.
    3.) Paul Graham is most often wrong
    4.) There will be no next Java. Either the industry changes and a new language will rise with the change or Java (as was proven by the ecosphere) will absorb the best ideas and adopt.

    Peace
    -stephan


    Stephan Schmidt :: stephan@reposita.org
    Reposita Open Source – Monitor your software development
    http://www.reposita.org
    Blog at http://stephan.reposita.org – No signal. No noise.

  4. There will be no next Java at Stephans Blog
    15. August 2007 at 20:08

    [...] the post at contekst.org about “Why did Java succeed ?” I thought to myself, there will be no next Java. The post mentions some ideas people have about why [...]

  5. Tech Per
    15. August 2007 at 21:32

    Great post! I had one in the pipeline to my blog just like it, though it had a twist on all those people saying “my favourite xxx lang will be the king of the WOOORLD” :-)

    But I like the more constructive tone in yours better. I think I will drop mine now.

    My cents on what made Java popular at that time:

    I think the Java platform came out at the exact right time for virtual machine based platforms. From there on, other major players have gone the bytecode, virtual machine way.

    Processing power, memory and VM technology was “good enough”, to let real production programs run on VMs. We simply bought the idea at ful, and gave in to the nice, garbage collected, no dangling pointers world.

    So what was it? Java solved a problem for us AT THAT TIME. Problems that another great platform C++ had.

    So, what shall the next upcoming language do, to become the “next great thing”. Which main problem or problems are we facing today?

    Some say the change in processing power going the multi-core way, will make us want a programming language, that better supports parallel programming. Maybe. Then Erlang could be a contender. Fortress (http://research.sun.com/projects/plrg/Fortress/overview.html) could also.

  6. a java dev
    15. August 2007 at 23:30

    Your list omits: Memory management.

    I think it’s appeal at the time of it’s launch (and it was not considered mediocre but cool and appealing) was a combination of:
    * memory management
    * clean small OO language with C-like syntax (contrast with C++)
    * platform independent binaries and class libraries
    * could be used for web browser apps before MS forked it and triggered the lawsuit. If not for that, a lot of stuff done with AJAX today would have be developed more easily in Java applets, but they became largely irrelevant.

    In the server space, platform neutrality made J2EE appealing to all the not-Microsoft-or-Intel companies.

    The Paul Graham school of thought point does not stand up to scrutiny. Java had to become popular *before* a lot of programmers learnt it and colleges started teaching it.

    Eclipse came too late to be a factor in it’s adoption either (not knocking Eclipse, but Java was well established by then).

  7. mind
    16. August 2007 at 06:50

    how about the fact that java is such a simple and verbose syntax that there are tons of tools for it to automate things, mostly out of necessity. so these tool vendors drank the java kool-aid, created their tool, and now market it. so now you’ve got a marketing force trying to sell their solutions to companies, and all these companies hear all day long is JAVA JAVA JAVA JAVA JAVA. they can’t help but think it’s the next big thing.

    and i’ll agree with the paul graham reasoning as well (which actually goes along with the tool reasoning as well. the theory goes that as long as you use these design tools and turn the crank, you’ll get a working program no matter how brilliant your programmers are, right?)

  8. pkphilip
    16. August 2007 at 07:23

    I think one of the reasons Java succeeded was because there was no single at that time standardized API which could be used for creating web-based applications as well as desktop applications. Also, the fact that you could send the code in bytecode format without handing over the source code was a big draw.

    I mean, we did have ASP, but ASP was missing even simple language primitives and data structures such as hashed lists (without using the abomination called the “dictionary”), there was no API for doing a lot of things in ASP.

    With Java, the web developer had access to pretty much the same API (with the exception of Swing) for developing his web based app. Also, parts could be “compiled” for speedy access and for reuse between applications even web pages could be developed with code in java (JSP).

    Perl was the next best choice to Java.

  9. Jason
    16. August 2007 at 08:00

    Java succeeded cause it was the right language at the right time. Just as it was appearing, the dot com boom exploded. A million new companies were born, and they started coding in the shiny sexy new language – which was java at the time. If there was a similar boom happening now, 10 years down the line everyone would be using ruby.
    If you look at some of the older companies that are around from before the dot com boom, most of these are using c++ or c (or even cobal) still, and in 10 years time, internet companies will still be using java.
    Companies can not invest to recode their entire code base to a new language just cause its more productive, or more in fashion.

  10. Discussing Java Hosting? Why did.. Four People Hurt in.. » Host News . biz
    16. August 2007 at 08:15

    [...] Why did Java succeed? [link][more] [...]

  11. Squall
    16. August 2007 at 13:42

    I don’t agree that Java is not interesting language. When I was a student, I loved Java from the first time when I used it, just because it is a beautiful language (please read “Thinking in Java” if you don’t believe me). I love Java now because of the immense possibility it gives me in terme of programming language and development infrastructure (JEE). I will always love Java because it is now my everyday language as a Java developer.
    I agree that there are a lot of “mediocre Java programmers”, but it is only the consequence of the Java’s popularity, some people chose Java just because it gives them a job to earn money. I think that at its summit, Visual Basic has had a lot of mediocre programmers too. Onother languages have mediocre programmers too, but theirs market are so small that we don’t see them.
    On the other hand, Java has “produced” a lot of “génie programmers” too. Take a look at Spring, Hibernate, Eclipse, … You (like manager) can replace easily a Java programmer because there are many good Java programmers on the market, but not because there are many mediocre Java programmers.

  12. Frank Silbermann
    16. August 2007 at 14:42

    A new major language poses a bar to existing programmers; so its success requires a new and fast-growing problem domain for which the current dominant language is clearly inadequate. As the new problem domain becomes dominant, so can a new language designed for it.

    In the early 1950s engineering calculations were the most common computer application, and Fortran was the dominant language. The rise of data processing (for which Fortran was extremely hard to use) allowed COBOL to become dominant.

    The integration of mini-computers with industrial processes required access to the machine at the bit level — which neither Fortran nor COBOL provided.
    This allowed C (and later C++) to thrive.

    C and C++ were very difficult to use for client-server programming; so people began to use other languages, such as PowerBuilder, VisualBasic and Delphi. Before a single approach could win, client-server was largely replaced by web programming and more flexible distributed applications, increasing the importance of maximized portability — hence Java.

    If parallel processing becomes the next big problem domain, then perhaps Erlang will come to dominate.

  13. Scott Vachalek
    16. August 2007 at 20:38

    I don’t think you can credit any one thing. I think it was a combination of:

    (1) modern features like objects and exceptions without the complexity of C++
    (2) very complete and user-friendly standard libraries for the time
    (3) price (free)
    (4) broad platform and tools support
    (5) hype

    Most of the new competition has these things to a lesser degree, but contrary to the myth a merely “better” mousetrap won’t sell. In order for a takeover, a new language will have to offer everything that’s important to the Java world plus something so new and compelling it’s worth all the pain of making the transition.

  14. Thomas Hansen
    19. August 2007 at 07:15

    I am obviously biased, but with the current state of Mono and the specs for C#3.0 I’d propose .Net as the “next java”. Though I think this discussion is really just a religious war and of no actual interst… ;)

  15. contekst.org » Blog Archive » Why did Java succeed ? at 16cards
    24. September 2007 at 15:35

    [...] contekst.org » Blog Archive » Why did Java succeed ? I have a sneaking suspicion that existing customer sets will not replace Java, there is way too much invested in the language, the libraries, the VM and in J2EE application servers. The change has to come from a new customer set. [...]

Leave a Reply


-->