Java Criticisms

An interesting summary of the JavaLanguage by JamieZawinski: (HaHaOnlySerious)

I think Java is the best language going today, which is to say, it's the marginally acceptable one among the set of complete bagbiting loser languages that we have to work with out here in the real world.

This sums up my feelings about the language too: in a world where C++ and VisualBasic are the competition, it's pretty good. -- MartinPool

And this from the inventor of the CeePlusPlus StandardTemplateLibrary:

I spent several months programming in Java. Contrary to its authors 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 - 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 MoneyOrientedProgramming. 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.

-- AlexanderStepanov

''Read the rest in An Interview with A. Stepanov for Edizioni Infomedia srl

I have the greatest respect for Stepanov and his work on the STL, but it seems very possible that someone who never uses inheritance or virtuals might have a different opinion about an ObjectOrientedLanguage than people who do. (No wonder he wrote the STL; it's a great way to avoid using inheritance!)

Also, I am not sure that judging a language by the coding of demos and libraries is fair either; V1 of most things is pretty bad when judged by the standards of a mature product. At least they had the sense to replace (for the most part) the pretty much irredeemable JavaAwt. Complaining about a language because it is successful/profitable seems content-free. -- AnonymousDonor

Sam, I have to agree [with AnonymousDonor]. If you read all of that article (and many other Stepanov articles), you will see that it is not JavaLanguage he is against but any ObjectOrientedLanguages. He simply doesn't like ObjectOrientation - plain and simple. He is working towards something else. Just like any true originator, he has a very narrow point of view. It would be a mistake for a developer to adopt the same point of view as a purist attempting to achieve their vision of programming.

And, as you know, there are just as many articles by engineering luminaries that slam CeePlusPlus. Pages like this and JavaIsDead will only encourage those to start being posted and waste time in stupid and boring language wars. My philosophy? Concentrate on the languages you like. If someone doesn't like JavaLanguage, fine, don't use it. Start pages about what you do use, not what you don't.

I especially agree with the point about how intermixing "Java the language" and "Java the bytecode spec" was a bad idea. Well, perhaps not from a marketing perspective, but certainly from a technical perspective. JavaLanguage could easily be compiled to hard, cold MachineCode. Why not instead of building a ByteCode interpreter for each platform, building a compiler BackEnd? -- StephanHouben

JavaIsCompiledToMachineCode. Often at run time, sometimes before.

And people think MicrosoftCorporation wants to control the world. This is from Forbes magazine:

Sun's ScottMcNealy lets outsiders improve Java - then charges them to use it. No wonder "open source" is so popular.

Bitter Brew

By Daniel Lyons

THE PROJECT TOOK TWO YEARS OF code-crunching by hundreds of programmers from dozens of companies. They contributed to an "open source" love-in to enhance Java, the Web-wise programming language pushed by Sun Microsystems.

In December, Sun unveiled the fruits of this collaborative labor, a group of 80 miniprograms for big corporate servers. There was just one catch: Though the other guys helped write the code, Sun is charging them a royalty to use it.

Some of Sun's flabbergasted allies aren't buying it. The move has created a bitter rift with Sun's biggest partner in Java - IBM, which even Sun admits worked on a good 80% of the new release. IBM refuses to pay fees to Sun, and smaller players are balking, too.


-- sg

Although the above is a direct quote of the opening paragraphs of the article, it is a little misleading, as it is clear from the body of the article that the other companies are able to use the code, but not the "Java 2 Enterprise Edition" brand that Sun has placed on it. They would have had pretty stupid lawyers (not that such don't exist) not to have the right to use the code.

Maybe Java is not the best language, but you got to give SunMicrosystems credit for making it the way it is now.

-- CuongTran?

"I'm a competitive man, Kryten, it's what made me what I am." "We're all perfectly aware of what you are, sir." (Rimmer and Kryten, Red Dwarf)

"No wonder open source is so popular." - Charging royalties for use doesn't sound like OpenSource. Read the definition:

Well, I've never posted on this site yet, but now is the time to start, I guess. For a year, I've been in a project which uses 100% Java/XML and OO (some might know the STRUTZ of SUN). Previously, I was the totally Script-oriented Programmer, using ColdFusion, PerlLanguage, etc. ... The new OO World really made me abandon all my old programming patterns and restart from scratch it seemed. I had a hard time not just encapsulating scripts in Objects, but really doing it in the OO way. To be honest, I haven't seen the light yet there. If you wanna program a 100% pure OO Solution, wouldn't it be necessary to model the World in objects, starting from the periodic table of elements? -- DOM

Only if you want to model the world. In most cases, we only need a small subset of the world (Bank accounts, for example), and can limit our scope to that. The principal benefit of the OO view is that you gain proximity - the code and the data are clustered together, so you can find them easily, and corral them easily. -- PeteHardie

Moved from JavaIsDead

I don't expect any language to be perfect, and I don't expect it to do exactly what I want it to do. I do resent it, however, when the language gets in the way of me patching it up.

So the fact that some libraries are broken, or some pieces of code are inefficient, doesn't get on my nerves. If a library's broken, I can do it myself if I have to. If code is too slow, (maybe) I can rewrite some if it in CeePlusPlus and then call it from JavaLanguage somehow. (Maybe. I don't actually write a lot of speed-sensitive code.)

But! When I work in JavaLanguage, I resent the fact that the StrongTyping and lack of generics make all Collections a bloody pain to deal with, and the only workaround I can think of would really be to write some huge code generation module that created classes like IntList, StringList, etc. I find it aggravating that not only does Java give you almost no good SyntacticSugar for string manipulation, but you have so little control over that little of the syntax that you can't add your own. And as somebody who's pushed really hard against the very arbitrary limits of JavaReflection?, I can tell you that that's a wall you simply cannot cross. So today, if I have a choice, I don't use Java at all ...

I believe generics are coming. In developing business applications, as we always do, this has never been a notable problem to us. BTW: Have you tried using Proxy for this? -- AngsumanChakraborty

See JavaGenerics now, folks.


Think positive, JavaUtilDate have solved one recurring problem?


View edit of August 22, 2005 or FindPage with title or text search