Thoughts on Java

ziggy on 2002-07-18T15:39:24

I must have taken my curmudgeon pills this morning.

I found this description about what's wrong with Java this morning (via LtU):

But since worse is better, Gosling was not trying to create a simple language that would last. He was trying to get a small connected device to be programmable with a simple compiler.
Patrick Logan's observations about this approach:
  • A simple compiler, not a simple language was the goal.
  • Habitual pre-optimization rather than taking the long view.
In Gosling's defense, I will note that "write a better compiler" is a very ivory-tower answer to a very mundane issue. Oak had a lot of goals, including making a language that was better than C++ and easy for "average programmers" to use safely. Shipping was another rather important goal of theirs, and it is certainly easier to ship a simple compiler than solve the hard problems of making a better Smalltalk that's comfortable VB, C and C++ programmers.


Java tied to closely to Sun

jjohn on 2002-07-18T22:15:07

As the fortunes of Sun fade, it seems clear that Java will be a casuality. Had Sun concentrated on created a robust and flexible language rather than trying to kill Microsoft, both Java and Sun would have benefited (Java could have benefited from an OSS development model and Sun would have liked a better adoption rate for Java). Instead, Java's life after Sun is likely to be as exciting as that of Rexx or Ada. Glad I didn't bother to do much Java programming!

Re:Java tied to closely to Sun

ziggy on 2002-07-18T22:33:55

I don't know about that.

Lots of companies are putting lots of money into marketing Java. Sun may own Java and every coffee metaphor applied to computing, but a lot of publishers and tool vendors are making a nice bit of coin from it. Plus, a lot of programmers are happily getting paid using it.

It took years for those programmers to retool to using Java. It'll take years for them to retool to something else, even if Sun went belly up tomorrow. Furthermore, there's such a large critical mass around Java (including some rather brilliant people) that it'll probably continue along quite successfully even without Sun at the helm.

Besides, what's the alternative? Perl? Python? Ruby? C#? Much as I like Perl, I don't think it's ready to be the dominant language for the entire industry. Not yet at least.

Re:Java tied to closely to Sun

jjohn on 2002-07-18T23:19:07

It took years for those programmers to retool to using Java.

Certainly, Java programs will continue to be used into the distance future. Then again, fortran and cobol applications are still out there. That's why they're called 'legacy apps.' ;-)

Perl? Python? Ruby? C#?

I don't think any of these will emerge as a Java replacement. However, all of them might. Java adoption seems to have been driven by marketing. If that marketing dries up, I don't think Java will seem that attractive to new developers. Java tried to be a silver bullet and failed. I'm not all that opposed to Java, I just can't see what it does well. What was the niche Java was supposed to fill? Embedded systems? Client applications? Middleware? Serverware? All of these? When was Java unequivocally the right tool to use? One might argue that it scales to support large development projects. I'm not entirely certain there's anything inherent about Java that makes it clearly better than other languages. Perl6, with luck, will jetison the dusty corners of Perl and not get in the way of large project development.

I wonder if it is ecologically wise to have one "dominate language for the entire industry." I'm very happy in world of regional dialects.

Re:Java tied to closely to Sun

darobin on 2002-07-20T00:57:08

Retooling from Java to C# won't be hard. The two share similarities and when you write IDE-backed crufty code in a language, it really isn't hard to pick up another (those are the people that are the hardest to switch. People that hand-code and write more or less good code can retool far more easily, and in my experience in fact do).

I don't like Java, in some of the same ways that Descartes or Leibniz weren't always fond of Latin. In my next job -- which involves mostly research and very very little development -- chances are that I will have to do some Java. I turned down a very good Perl job to pick this one, and for good reason: had the job I'm about to start been a development job I'd have turned it down due to it being Java orientated. I simply do not like to code using tools that I don't think are fit. However it being mainly research, I understand the need for Java: it's become a Lingua Franca for the kind of project I'll be working on (as you may guess, heavily XML related). People don't use it because they like it, they use it because the other guys they need to communicate with use it too, often without liking it much either (but if they tried to chose something else, they all know about the fruitless flamewars that would happen ;).

So, in the same way that Descartes used French for his _Discours de la Méthode_ so that those that weren't taught Latin (he mostly had women in mind back then) would be able to read it but used Latin for his more technical works, or that Leibniz used Latin for correspondance but wrote down his own personal notes using whatever language fitted (sometimes using up to four or five different languages in the same sentence), I'll be happily using Java for research.

That's what it's good at, Sun or no Sun. In a way it's almost executable pseudocode. Anything could supplant it given sufficient inertia, but I wouldn't be surprised if even when it ceases to be in wide use it is still used for communication between people. No more than I'll be surprised if it's supplanted by another not-so-good-but-uncontroversial language. And honestly, C# stole enough from Perl that I wouldn't mind if it were the one to take over ;-)

Stupid homonyms

jjohn on 2002-07-19T16:49:06

Re:Java tied to closely to Sun

I declare a fatwah on homonyms! Death to those-small-words-that-I-always-seem-to-use-in-the-wrong-place -and-make-me-look-stupid!