There has been so much hype and misinformation spread about the Java language and related technologies that it feels imperative to correct some of those myths associated with it. Far from attempting to put to rest many false acclamations about the language, here is just a small collection of my favourite quotes about the Java language and its ‘killer features’, some of them by the people who have a special interest in programming language design.

“Ten years from now, Java will be taught in every university. Not in the engineering or computer science departments, but in the business and marketing courses. Java is one of the best examples of the triumph of marketing over technology.” –Jim Turley

Isn’t it both true and funny? Or is it funny only because it is true? Just as one example, remind yourself about the hype created over the plarform indenpendence of the Java language. Write once, Run everywhere. How true this statement has turned out to be is no big secret today. The following extract from the book ‘Inside Java Virtual Machines’ is NOT a humorous quote. Well, read it on your
own and find out if it sounds funny or not regarding the BIG promise of Java about the platform independence.

Seven Steps to Platform Independence

  1. Choose a set of host computers and devices that you will claim your program runs on (your “target hosts”).
  2. Choose an edition and version of the Java Platform that you feel is well enough distributed among your target hosts. Write your program to run on this version of the Java Platform.
  3. For each target host, choose a set of Java Platform implementations that you will claim your program runs on (your “target runtimes”).
  4. Write your program so that it accesses the host computer only through the standard runtime libraries of the Java API. (Don’t invoke native methods, or use vendor-specific libraries that invoke native methods.)
  5. Write your program so that it doesn’t depend for correctness on timely finalization by the garbage collector or on thread prioritization.
  6. Strive to design a user interface that works well on all of your target hosts.
  7. Test your program on all of your target runtimes and all of your target hosts.
  8. If you follow the seven steps outlined above, your Java program will definitely run on all your target hosts.
    –Bill Venners[Chapter 2 of Inside the Java Virtual Machine]

After criticising all the features of C++ that were not included in Java to be ‘unncessary sources of complexities in the programs’, generics(and enums etc) were added to the language eventually(perhaps too late in the day). After referring to C++ as a legacy/obsolete language right since the first release of the Java language, C++ language support is now being included in even a popular Java IDE like NetBeans.

Sun announces C/C++ support for NetBeans IDE
March 23, 2006

Why support an old, legacy, complex and idiotic language in 2006??
–Unknown Source


Alexander Stepanov
is the creator of STL. He claims that he has not found his ideal language in any of the existent ones and would love to create one if he is funded by someone. Let’s hear what he has to say about Java language:

“I spent several months programming in Java. Contrary to its author’s prediction, it did not grow on me. I did not find any new insights – for the first time in my life programming in a new language did not bring me new insights. It keeps all the stuff that I never use in C++ – inheritance, virtuals – OO gook – and removes the stuff that I find useful. It might be successful… but it has no intellectual value whatsoever
–Alexander Stepanov

It was refreshing to hear similar sentiments expressed about the Java language by someone else too. Though Java has been useful in solving many a problems more easily than some of the other languages, ‘no intellectual value whatsoever’ quality of it has exactly been my own opinion about the language. It fails to teach anything new to someone who already knows a few other languages.

Alex Stepanov continues:

“It[Java] might be successful – after all, MS DOS was – and it might be a profitable thing for all your readers to learn Java, but it has no intellectual value whatsoever. Look at their implementation of hash tables. Look at the sorting routines that come with their “cool” sorting applet. Try to use AWT. The best way to judge a language is to look at the code written by its proponents. “Radix enim omnium malorum est cupiditas” – and Java is clearly an example of a money oriented programming (MOP). As the chief proponent of Java at SGI told me: “Alex, you have to go where the money is.” But I do not particularly want to go where the money is – it usually does not smell nice there.”

Answering another question about the difference between Generic programming and OO programming, Alex replies:

“My approach[Generic Programming] works, theirs[OO Programming] does not work. Try to implement a simple thing in the object oriented way, say, max. I do not know how it can be done. Using generic programming I can write:
[Example Generic Code for max routine]
Try doing it in Java. You can’t write a generic max() in Java that takes two arguments of some type and has a return value of that same type. Inheritance and interfaces don’t help. And if they cannot implement max or swap or linear search, what chances do they have to implement really complex stuff? These are my litmus tests: if a language allows me to implement max and swap and linear search generically – then it has some potential.

Here is what Alex feels about Object Oriented paradigm:

“And I had many false starts. For example, I spent years trying to find some use for inheritance and virtuals, before I understood why that mechanism was fundamentally flawed and should not be used.”

More on Object Oriented paradigm by Alex:

“I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. In a sense, I am unfair to AI: I learned a lot of stuff from the MIT AI Lab crowd, they have done some really fundamental work: Bill Gosper’s Hakmem is one of the best things for a programmer to read. AI might not have had a serious foundation, but it produced Gosper and Stallman (Emacs), Moses (Macsyma) and Sussman (Scheme, together with Guy Steele). I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras – families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting – saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms – you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work. ”
Java is termed to be a superior language for the simple reason that it is (claimed to be) a purely object oriented language. Even if we buy this contrived claim by Sun and those who trust their word,

The entire interview is very educative and insightful: Alex Stepanov’s Interview

Bjarne Stroustrup
has always been guarded when making statements about the programming languages other than his own. He plainly refused to compare any language with C++ for obvious reasons. A few words that he did speak about Java/C# were very interesting and devoid of any bias.

Much of the relative simplicity of Java is – like for most new languages – partly an illusion and partly a function of its incompleteness. As time passes, Java will grow significantly in size and complexity. It will double or triple in size and grow implementation-dependent extensions or libraries. That is the way every commercially successful language has developed. Just look at any language you consider successful on a large scale. I know of no exceptions, and there are good reasons for this phenomenon. [I wrote this before 2000; now see a preview of Java 1.5.]

Bjarne Stroustrup hitting the bull’s eye:


“Java isn’t platform independent; it is a platform. Like Windows, it is a proprietary commercial platform. That is, you can write programs for Windows/Intel or Java/JVM, and in each case you are writing code for a platform owned by a single corporation and tweaked for the commercial benefit of that corporation. It has been pointed out that you can write programs in any language for the JVM and associated operating systems facilities. However, the JVM, etc., are heavily biased in favor of Java. It is nowhere near being a general reasonably language-neutral VM/OS. “

This is from the FAQ on Bjarne Stroustrup’s home page:

Q: How can a legacy language like C++ compete with modern, advanced languages?

A: Naturally, calling C++ a legacy language shows a bias (see legacy code). That aside, people are usually thinking of Java or C# when they ask such a question. I will not compare C++ to those languages, but I can point out that “modern” doesn’t necessarily mean “better”, and that both Java and C# are rooted in 1980s style OOP to an even greater extent than early C++ was.

There are many more but these are some of my favourites about Java. What are your favourite quotes about the programming languages?