It was 1995 and C++ was the language of choice for building large-scale
software systems. C++ was a powerful object-oriented programming language, the
successor of widely used procedural language called C. But not only was C++
powerful, it was also quite complicated. Seasoned programmers enjoyed the intricacies and
the possibilities, but newbies would get burned after the first
mishandled copy constructor.
Enter Java - a language of great elegance, power and, most importantly, simplicity. Designed by James Gosling and his team at Sun Microsystems, Java became a phenomenon that won hearts and minds, changed the rules of enterprise programming and seriously wounded Microsoft. Yet despite its glory, Java lost one of the most important battles - the battle for the web browser. In this post we look at what happened to Java in the last decade, from its glorious rise, to market politics, to the battle for the browser.
The first great thing about the core Java language was that it was simple. The creators of the language made assumptions and compromises and decided to take away some power from programmers, but the benefits by far outweighed the limitations. The second great thing was the virtual machine. To make a C++ program run on another platform required a lot of effort. Java programs, on the other hand, were portable automatically.

Then there were the libraries. Java's libraries made a huge impact because they shifted developer focus from worrying about the infrastructure to worrying about the application. Some of the earlier Java libraries truly set the bar for innovation, flexibility and utility. For example, the JavaBeans framework showed that component development can be easy (unlike COM and ActiveX). And the collections framework delivered reusable and extensible standard data structures and algorithms.
But probably the most important thing that Java taught many of us was to think about interfaces. The power of any object-oriented language is abstraction, and by emphasizing the interface, Java brought that power forward. Debunking the inheritance myth, Java named the interface to be a king of object-oriented programming.
As Java's popularity grew, so did the ambitions of its creators. Sun wanted Java everywhere: on the web, on the desktop, on mobiles and in the enterprise. The enterprise market looked particularly attractive because Sun would have the opportunity to sell its servers as well. Thus was born J2EE - a powerful infrastructure for building large-scale enterprise applications. Unfortunately, unlike the earlier Java libraries J2EE was quite complicated and even rather cumbersome.

Nevertheless J2EE gave rise to numerous standards, including probably the most important one - the modern application server. In a rather unexpected turn of events competitors like BEA, IBM, Oracle and Sun converged to create a set of standards that benefited first and foremost, the customers. All this was accomplished though the Java Community Process (JCP) - an industry round table for generating standard Java specifications.
Since its early days, the software community has lacked standards. In the 1980s and early 1990s consulting companies made a fortune building adapters that transformed output from one application into the input for another. Among the remarkable things that Sun managed to do with Java was introduce a process for generating industry-wide standards.
In a brilliant move, Sun shared its baby with everyone by inviting people to participate in the Java Community Process. The process consisted of phases, starting with the introduction of a new specification. If the need was established and approved, the draft and review phase focused on generating the first version of the spec and doing a public review. Anyone could provide feedback during the process, and then a group of authors would incorporate it into the draft.
Sun has done many wonderful things with Java, but it also fell short at a few critical moments in history. First, it was a shame when Java was running faster on Windows than on Solaris. Their case for selling Sparcs as machines optimized for Java fell through. Sun recovered, but too late for people to buy into the benefits. Next, Sun did not develop a serious Java Integrated Development Environment (IDE) until late in the game.

IBM took advantage of this mistake and released a product ironically called Eclipse. This open source IDE allowed IBM to not only take over the basic development shell, but also release and distribute its own version of Java. IBM then made another clever move: it added standard development applications including testing tools, profiling tools, version control, etc. to Eclipse. And all of this it gave away free. With this move, IBM effectively cornered the developer tools market and cleared the path for selling more Web Spheres (IBM Application Servers) and Blades (IBM Servers).
Just like IBM out-maneuvered Sun, so did Microsoft. Microsoft has long maintained that Java is slow. Perhaps it was in the early days, but certainly that is no longer true. In fact, in most cases it runs as fast as native applications because of just in time compilation and various other optimizations. But Microsoft stuck to its guns, saying continuously that Java was slow, and added that Java user interfaces were also poor.

The image above is from Swing, written by Information Laboratory in 2003, and shows that Swing can draw its UI with thousands of objects.
Unfortunately for Java its first UI toolkit, AWT, was indeed not up to par. Eventually Sun came out with Swing, which was a superb UI framework; much faster than its predecessor and capable of creating the same kind of applications as Microsoft's tools. However, the myth had already been spread and middle management throughout the country trumpeted Microsoft's tune: Java was not good for the desktop.
And then there was the applet fiasco. Java applications where little applets that everyone grew to hate, thanks to their initial slowness and later inertia. Because of people's hatred for applets, Java lost the battle for being the programming language inside the browser.That loss is huge, given that the web is becoming more and more ubiquitous. What's sad is that Java lost to JavaScript (which has nothing to do with Java) and Flash - both inferior programming languages. The irony, of course, is that Java started with the web in mind.
There are great lessons to be learned from Java's story. The first is the lesson of simplicity and elegance. Java taught us that software can be simple to write. But another side of the Java story is about politics. Java won over people's hearts and minds and that alone made it a desirable target. IBM and Microsoft, both companies that have controlled dominant programming languages at different times in their histories, understood the value of Java and went after it. IBM executed perfectly. Microsoft pushed as hard as it could to block Java from the desktop and from the browser and succeeded.

The problem with politics, though, is that it's the people that get hurt, not the politicians. The fact is that AJAX, which has received a ton of positive press over the past couple of years, is a hacky, inelegant technology that pales in comparison to what exists in Java. If Java was part of the browser, it could manipulate HTML/DOM in exactly the same way that JavaScript does. But with Java we would get a first class programming language, a set of standards, robust libraries and a wide range of development tools. Alas, that's not to be.
The first decade of Java is a history of rapid rise and wide adoption. It is also a history of political battles and wrong choices made for the sake of marketing.
It is difficult to justify using inferior languages and tools to develop modern software. Java has come a long way and to throw it away would be a big mistake. Before inventing new languages and re-inventing new ways of doing things, the industry should pause and re-think the fate of Java in the browser.
This is sure to be a contentious post with people falling on both sides of the fence. Please, do not hold back, bare it all! Let's have some great discussion on this issue - leave your thoughts in the comments below.
Comments
Subscribe to comments for this post OR Subscribe to comments for all Read/WriteWeb posts
What a brilliant article, Alex. Thank you!
Posted by: Barnaby Capel-Dunn | October 19, 2007 12:41 AMok, I might sit on the other side of the fence.
Javascript might be a small language, but it's unfair to call it a hack. The real problem is with cross-browser DOM manipulation. But as you said Java in the browser could also do DOM manipulation but would *also* have to deal with that, and it would be just as much of a hack.
So maybe javascript wins on a technical level too, with it's simplicity and lack of baggage that Java carries.
Posted by: Malcolm | October 19, 2007 1:08 AMI am a developer who has worked both in Java and Dotnet technologies. You are very true in saying that Java is very elegant a language and Eclipse,the IDE by IBM is also awesome. Same is the case with C#, from Microsoft. Which means a lot of companies/tools/languages has basked in the glory of Java. But this is the way normally in which technologies involve, at least in software side.
Posted by: varun | October 19, 2007 1:19 AMAlso I agree to you that AJAX is not that elegant and also it has a steep leraning curve for newbies.Having said that, I think Mircosoft's DLR which allows IronPython and VB.Net(Closet language to English) etc as well as Adobe's Flex etc will be the technologies to watch on browser front
I'm confused. This article talks about Java as if it were dead, but clearly this is not the case. Just look at the popularity table at http://www.tiobe.com/tpci.htm
It seems to me that Sun's biggest mistake on the Windows platform was not forging a deal with Microsoft that allowed a JVM (either Sun's or Microsoft's) to be part of the default install of Windows. This immediately meant that developers could not rely on Java being available on the client machine. In the meantime, .NET came along with C# being faster than Java and just as easy (if not easier) to write in. And because .NET is pretty much a part of Windows now, it's popularity will continue to grow.
Thinking about that popularity table a bit more, it's a wonder that we don't see more Java apps around. The only ones I can think of off the top of my head are Java related tools. Whereas the ATI control panel was written in .NET. I think what really happened is that most companies have stuck with C and C++ for development, at least partially because that's what they know. Maybe they'll eventually switch to Java, but it's important to remember that each language has it's positives and negatives. Choose the right tool/language for the job.
Posted by: BenN | October 19, 2007 1:36 AMWonderful :)
You could have also insisted on Java for the mobile. J2ME has become a standard for mobile dev. Will it remains so? I don't think so... ergonomics is the key word on those devices and J2ME certainly lacks it.
Posted by: Maz | October 19, 2007 1:40 AMIf sun had not sued Microsoft because of it's use of Java, we would have Java from Microsoft in every Browser !
Currently, Microsoft can't even ship Java with its browsers because of the agreement with Sun. This leads to more and more browsers without a virtual machine.
This legal action hurt Java a lot.
Imagine what we would have if Microsoft built a windows user interface for Java istead of developing C# ...
Posted by: Heimetli | October 19, 2007 1:44 AMExcellent article Alex, the utility that Java is today doesn't really get much of a mention these days in the mist of the web 2.0 hype.
I really think Sun must be held accountable for some of the failings of Java. They didn't realize what they had until it was too late, and lost the game on the desktop.
Sun did a great job with Swing on the desktop but after the initial push, they all but gave up, only tweaking here and there.
What happened to the GUI frameworks, for building on top of Swing?
But I will forgive Sun for their failings on the desktop as Java has radically moved software development forward on the server.
Posted by: Craig Baker | October 19, 2007 1:48 AMAlex, you are one of the best writers in blog sphere! Thanks for another great article.
Posted by: javaeater | October 19, 2007 2:49 AMFirstly - great article. Just a few thoughts to add.
Having been there at the time, the pain of writing cross-platform C/C++ has been greatly exagerated - you need only look at the huge amount of cross-platform open source projects to see that.
The key thing you will note is that they are generally non-GUI based - but then that is also where Java failed, because with Windows so dominant there was no strong case for a cross-platform GUI.
It is something developers, rather than users, wanted. We wanted to cut our development costs - Mac users, on the other hand, have rewarded native rather than x-platform developers.
It should also be mentioned that other cross-platform RAD tools of the time would generate native applications for Windows, Mac, X-Windows, wheras Java's solution was to introduce a 'cuckoo' platform.
For me, the huge advantage Java did offer for server-side app development wasn't that it made writing cross-platform code easier, but that it made testing and shipping
cross-platform code easier (at one point we had to have VAX, SCO and IBM kit in order to compile and ship binaries to our customers).
Mind you, some of that ease has been removed by application server incompatibility - we've introduced a layer of dependency that kind of undoes the standardisation that the JVM achieved. Plus ca change.
>Thinking about that popularity table a bit more, it's a wonder that we don't see more Java apps around.
Every time you go on the web??
As for the future - I'm guessing more of the same. The key difference between Sun, Microsoft and Apple, is that the latter two actually produce their own O/S and apps.
Posted by: JulesLt | October 19, 2007 4:06 AMThey are not speculatively constructing a UI framework, but building a foundation for their own applications. (That's also a key factor behind Eclipse RCP - the application drives the platform).
Great article, thanks for that!
But I don't really see JAVA developing further as a programming language. We all witness that the language is "stuck" to a certain level. Take for example C# 3 and VB9 - full of new features!
Posted by: ajaxus | October 19, 2007 5:04 AMYes the applet was the first true Rich Internet Application platform
Posted by: The Business of Software | October 19, 2007 5:39 AMHi,
regarding applets versus flash in the browser - Sun really did drag their feet on this subject - I know the MS JVM messed things up (as even now it's still around and you can program using the more modern features of java).
I run a site that uses java (http:/play3dpool.com) and you can do great things with it - however I'm starting to wonder if its time to move over to flash/shockwave - as the loadup time is much quicker and therefore the user's impression is the same.
Its a shame as the java language is truly great language (Microsoft did basically copy it for their c# after all). However Sun needs to move more quicky (and it maybe already too late) - the plugin installation needs to be :
Posted by: wjp | October 19, 2007 6:02 AM- much smaller
- faster startup
- no blank page - at least something informing the user whats happening.
- better built-in support for reach media (video, audio, 3d/vector rendering)
Excellent article!
Posted by: zhouqb | October 19, 2007 7:13 AMNow Java is mostly used in web apps. Writing server-side logic in Java is great enjoyment, with comparison to ASP (not ASP.NET) and PHP.
Great article Alex. I think the tone of your writing here is spot on - Java isn't the cool kid anymore.
As far as I am concerned, Java is important mainly because of the impact it had on software development as a whole. IMHO, C# and .NET are better in every way than Java, but that most likely would not have happened if the world had not seen Java first.
Posted by: Mack D. Male | October 19, 2007 7:44 AMThis article brings up several good points, but makes it seem like Java is over. This is completely not true, Java dominates in many fields and its soon to be dominant on desktops...again :).
Sun just rewrote the plugin for the browsers and its faster than ever -- if you feel that you need a comparison, it will act like flash (http://ajaxian.com/archives/ken-russell-on-the-new-java-plugin and http://ajaxian.com/archives/sun-has-rewritten-the-browser-java-plugin).
Java is also rapidly moving into all of the handheld devices, past J2ME (which already owns the mobile market), Java is coming out with Java FX -- a completely new concept for building interactive apps.
Lastly, Java has libraries that PHP, Ruby (with Rails and without), Python, and many other languages are only now beginning to think about -- threading any one?
Posted by: Felix | October 19, 2007 7:52 AMThe thing about Java is that it's not going away and keeps improving. So there will always be the possibility for Java to make a come back to the browser at a later time.
We just need someone to build a Flash like IDE for Java to generate graphics on the fly and do movies.
I have done some programming with Flash and its all hack. Javascript is very time consuming to develop for multiple browsers. Eventually Java will get its foothold and make a return.
Posted by: Don Vaillancourt | October 19, 2007 8:55 AMAlex,
This was definitely an interesting read and a nice chance to reminisce about Java, but as you wrote, this is definitely a contentious post! :-)
> AJAX . . . is a hacky, inelegant technology that pales
> in comparison to what exists in Java.
Bait taken, but where are the facts? I'm not so big on the whole term AJAX to begin with, but to so casually dismiss its contribution to the web we experience today is both shameful and negligent, though cleverly engaging. Java and AJAX both serve a purpose. Java is now proven server-side and AJAX is a key proponent of the front-end revolution that’s brought us the mashup and social networking trends that have transformed and opened the web to many. Java applets should/could have done that, but they didn’t; AJAX though young and immature has.
> If Java was part of the browser, it could manipulate
> HTML/DOM in exactly the same way that JavaScript does.
I disagree; Java is not as flexible as JavaScript and would, in my opinion, require more effort to adapt to the varying HTML/DOM variations present in browsers. Java is known for its structured nature, but web development has advanced due to the simplicity of HTML and flexibility of JavaScript; two qualities lacking in Java’s web offering (applets).
> ...with Java we would get a first class programming
> language, a set of standards, robust libraries and a
> wide range of development tools
Likely true, but we do have standards (CSS & DOM) and I‚Äôm not convinced that a ‚Äúfirst class‚Ä? programming language is necessary for effective front-end development. AJAX (branding) has brought attention to JavaScript as a viable language for web development and vendors are now responding. As with every language adoption takes time, and vendors invest where profits can be made. Fortunately the open-source concept has fostered the creation of excellent development tools (Aptana) not restricted by a need to generate profit.
> What's sad is that Java lost to JavaScript (which has
> nothing to do with Java) and Flash - both inferior
> programming languages.
Java hasn't lost to JavaScript. In the browser space it always partnered with it (see Netscape) and it now incorporates it within the core language (see Java 6). This leads me to believe Sun has and continues to be aware of JavaScript's strengths and potential.
> The irony, of course, is that Java started with the
> web in mind.
And I would argue it still does. In my opinion we owe Sun our thanks for moving past applets! The idea was great, but the execution was lacking. Sun was smart enough to recognize Java's strength on the back-end and did us all a favor by leaving the front-end to other better-suited technologies.
We don't watch Java videos or ads do we? And would you really want to?
Posted by: Michael Lee | October 19, 2007 9:41 AMVery nice article. Besides the useful history; interesting facts and observations -- especially: the real power of OOP is in the interfaces.
Posted by: Ken Ewell | October 19, 2007 9:44 AMGreat article. As a "simple" language, Java naturally influences development towards a certain paradigm. As a Perl programmer who learned Java, I was struck by Java's relative formalism and rigidity. I don't regard those as negative traits, quite to the contrary. Creativity is often enhanced within constraints as opposed to when there are no constraints. In Java (far more than in Perl and other more relaxed languages), there is a "correct" way to write code (with all the boilerplate that entails). I would argue that this constraint leaves the programmer free of the task of decided how to write code and better able to decide what he wants his application to do.
One sphere in which Java's (relative) rigidity seems to help in particular, is in the expression of business logic. This, I believe, accounts for Java's success on the enterprise server.
The only caveat to everything I've said about Java above is that without Eclipse I would not be a Java programmer. Without a powerful IDE like Eclipse, the boilerplate details of Java are too time consuming and distracting to bother with, and have the effect of making Java very difficult to learn.
Bottom line, in the competition between Sun, IBM & Microsoft, its the developers and their customers and clients who win.
Posted by: Joel Helbling | October 19, 2007 11:11 AMGreat article. However, I want to point out that Sun is -- finally it seems -- waking up to Java's deficiencies in the browser. The main problem with applets is the "cold" startup time, the time it takes for the system to load the applet just after a reboot, which can range from 5 to 45 seconds. This cold-start time is 95% due to hard-drive seeking of core JAR files. If the cold-start time is eliminated, then Java applets start up in 1-2 seconds, not quite at Flash levels but close. Three technologies are converging right now to eliminate the cold-start time:
1) Java Update N. The latest JRE, to be released this Spring, elminates cold-start time entirely on Windows.
2) Windows Vista Superfetch. Vista super-fetching technology drastically reduces hard-drive seek-time for applet startup.
3) 7200 RPM and SSD hard-drives. These also substantially reduce all seek-related operations.
Once this barrier is eliminated, Java will have another shot at the browser. Why? Because it's a far more powerful language, and lets programmers do things that still aren't possible in Flash: 3D graphics with hardware acceleration, heavy multi-threading, and more.
Full disclosure: I work on a new applet-based 3D local search engine, www.upnext.com. Check it out for an example of what we're doing with Applets 2.0 (warning: we're still in an alpha-state of testing with this thing!)
Posted by: Raj Advani | October 19, 2007 4:41 PMAre you serious?
Java reads nothing like English. If it did most people would never go to other languages like Ruby or Python.
If you are considering JavaScript an inferior language you are really missing the point.
Java went down because Sun had a fit with Microsoft because they were releasing a version of Java that was destroying its cross platform nature by making it fast for Windows.
Another problem was Java was large and the speed issues were horrible. They had plenty of time to speed up for the browser. If they did a better job we would have been using Java instead of Flash and JavaScript.
Another problem that caused Java to lose the web browser was there was no simple tools that any old bloke could use to whip out an app which was the major selling point of Flash.
It seems like you didn't do any of your homework on this and I feel annoyed to even comment on this.
Posted by: A | October 19, 2007 7:59 PMJava
Very interesting observations, and a nice walk down memory lane. I agree that the large Java community has succeeded in making an amazing amount of useful code. Most of what you say is correct, so I’ll only mention a few areas where I disagree.
1) The greatest innovation of Java was not in its very nice set of features (VM, libraries, & late-bound interfaces, all of which help me through my current projects). Many languages before Java offered these (some better, some worse). No, Sun’s great innovation with Java was to show that an amazingly huge amount of marketing could make a language be a winner (marketing can make Britney Spears a celebrity, so why not a computer language?). Prior to Java, a programming language’s acceptance was largely based on the merits of the language. Java showed that marketing was much more important than merit. With marketing comes lots of acceptance, magazine articles, communities, VC, trained programmers, and libraries. A bad language (I’m not saying Java is a bad language) with a big community and large libraries beats a good but little-used language anytime.
2) Your first bullet point about Simplicity is just plain wrong. Java is not simple, and is nowhere near to thinking like English. Java is a very powerful system-level programming language, and as such it will never be ‚Äúsimple‚Ä? to any but a relatively elite group of computer scientists.
3) Java lost the desktop battle because Java applications were always butt ugly. I never knew why they always came out so poorly, they just did. They usually still do look awful.
4) Java lost the browser battle because it‚Äôs a very wrong type of language for the browser model. Client-side browser applications success is based on a) gluing components together at a late late late binding time, b) spread in a virus-like fashion (like html), and c) simplicity of implementation and tweaking and plagiarism less-than-top-notch programmers. A system language, such as Java, is NOT the right tool for this job. A script language is the right tool. When we introduced scripting into the browser (what we called Cmm back then, but which eventually became JavaScript for political reasons) it almost immediately took off like wildfire, despite lack of any Sun-like marketing (we had no marketing budget), because it is the right tool for that particular kind of job. (Some parts of Sun ‚Äúget it‚Ä?, as shown in portions of JSP and as finally seen in JavaFX.)
--------------
For more in-depth arguments along these same lines see the ‚ÄúJava, The Illusion‚Ä? posting I wrote almost 12 years ago (we didn‚Äôt call them ‚Äúblogs‚Ä? back then) as preserved here. For deeper thinking into inherent problems with developing languages through a combination of marketing and committee (i.e. Java), read the many excellent essays of Paul Graham here.
Posted by: Brent Noorda | October 19, 2007 10:53 PMThanks for the great little history lesson. I skipped right over Java in my edu-ma-cation. I have a few Java developer friends and judging by their salaries, I wished I had bothered. Even though my resume says PHP and that I'm learning Ruby on Rails, I get calls all the time asking if I knew J2EE (or in some cases would be willing to learn). Hey, I took my obligatory C++ classes back in the day. That was enough for me. Then I lost interest in computers for a while and when I woke up, PHP was the just on the cutting edge of web app development.
I always wondered where Java's place was and I figured it was just for standalone and server apps - not web stuff. So, this was interesting to read. Makes me want to learn more about it.
However, in seeing some of the comments here, it seems like some people are expecting Java to have some sort of rebirth (like JS has had recently). I'm a little skeptical. I think better to move forward. After starting to learn RoR (after learning Perl a long time ago), I'm sort of wondering if the future is all about agile development, convention over configuration (times 10), and basically less programming overall. The next big language could be the one that holds for the next 20 years (and I don't think it will be RoR, but that may be the inspiration for it).
As for the comment directly above by #21, I don't know two cents of Java, but I can read it and make some reasonable sense of it. That was the author's point. He was contrasting Java's readability with C++, not Python or Ruby. If Ruby had been given the muscle of a company like Sun (since it was created about the same time as Java), we'd all have been using it the past 13 years - not discovering it (and Python) because of web apps and broadband. Too bad it didn't happen that way, but Java is much more readable than C++ - and I don't even know Java, but when I see an example of it in a book, it is obvious what is going on.
Just my two cents worth. Thanks again for the great summary.
Posted by: Lawrence Salberg | October 20, 2007 10:22 AMIf Sun's belated attempt at a small initial download (and fast initial bootup) of a "consumer" Java Runtime for the browser/desktop finally delivers, then all it would take is for some yet to be popular web site to elevate Java as a prominent player alongside Flash, et al.
And if Sun doesn't deliver, that doesn't necessarily mean the party is over for Java on the browser as a third party could potentially write those C/C++ based browser plugins to allow an open sourced Java implementation to shine.
Yes, Java is not available by default on most Windows desktops, but an innocuous plugin installation (equivalent to any Flash upgrade that your average user deals with) could alter the story so far.
"Java has come a long way and to throw it away would be a big mistake. Before inventing new languages and re-inventing new ways of doing things, the industry should pause and re-think the fate of Java in the browser."
Indeed.
Posted by: Dario Laverde | October 21, 2007 10:27 PMThis is an excellent article. Thought provoking.
Posted by: Sajal Dutta | October 22, 2007 4:15 AMFlash has 2 things that Java does not have;
1) Easy deployment (install of JRE, release of program)
2) Multimedia (sound & video streaming). See Youtube.
And why on earth did SUN split Java in two parts? J2SE and J2EE? Not a good ide if you want to appeal to the masses of programmers out there.
Posted by: Fireblaze | October 22, 2007 8:52 AMSaying that the beauty of java is in the "interface" doesn't say much for OOP. The interface hides the construction, so who cares what goes on behind it. The interface could disguise a RPG program for all we know.
I agree with the interface concept. Most of my work is gluing APIs together. Do I use OOP concepts to do that? Sometimes yes, sometimes no.
Posted by: John Bailo | October 22, 2007 10:53 AMJava
Very interesting observations, and a nice walk down memory lane. I agree that the large Java community has succeeded in making an amazing amount of useful code. Most of what you say is correct, so I’ll only mention a few areas where I disagree.
1) The greatest innovation of Java was not in its very nice set of features (VM, libraries, & late-bound interfaces, all of which help me through my current projects). Many languages before Java offered these (some better, some worse). No, Sun’s great innovation with Java was to show that an amazingly huge amount of marketing could make a language be a winner (marketing can make Britney Spears a celebrity, so why not a computer language?). Prior to Java, a programming language’s acceptance was largely based on the merits of the language. Java showed that marketing was much more important than merit. With marketing comes lots of acceptance, magazine articles, communities, VC, trained programmers, and libraries. A bad language (I’m not saying Java is a bad language) with a big community and large libraries beats a good but little-used language anytime.
2) Your first bullet point about Simplicity is just plain wrong. Java is not simple, and is nowhere near to thinking like English. Java is a very powerful system-level programming language, and as such it will never be ‚Äúsimple‚Ä? to any but a relatively elite group of computer scientists.
3) Java lost the desktop battle because Java applications were always butt ugly. I never knew why they always came out so poorly, they just did. They usually still do look awful.
4) Java lost the browser battle because it‚Äôs a very wrong type of language for the browser model. Client-side browser applications success is based on a) gluing components together at a late late late binding time, b) spread in a virus-like fashion (like html), and c) simplicity of implementation and tweaking and plagiarism less-than-top-notch programmers. A system language, such as Java, is NOT the right tool for this job. A script language is the right tool. When we introduced scripting into the browser (what we called Cmm back then, but which eventually became JavaScript for political reasons) it almost immediately took off like wildfire, despite lack of any Sun-like marketing (we had no marketing budget), because it is the right tool for that particular kind of job. (Some parts of Sun ‚Äúget it‚Ä?, as shown in portions of JSP and as finally seen in JavaFX.)
--------------
For more in-depth arguments along these same lines see the ‚ÄúJava, The Illusion‚Ä? posting I wrote almost 12 years ago (we didn‚Äôt call them ‚Äúblogs‚Ä? back then). For deeper thinking into inherent problems with developing languages through a combination of marketing and committee (i.e. Java), read the many excellent essays of Paul Graham.
Posted by: Brent Noorda | October 22, 2007 11:15 AM