the bogus Java-vs-everything argument


javacup.jpg

"Java is done for! Ruby will take over! PHP will rule! Perl wins!" ... and so forth. I have seen discussions on this topic for the last few months, so many that I won't even bother linking to them. If you read news, or, work in the tech sector and are, well, alive in any way, you'll know what I'm talking about.

The extreme argument goes like this: Java is becoming irrelevant, soon to be replaced by scripting languages such as Ruby and PHP.

The more measured argument says that Java is no longer on "the leading edge" of languages and has ceded that position to Ruby and PHP and so forth.

The extreme language is of course ridiculous. Java is not going to be "replaced" by Ruby or PHP anymore that Java "replaced" C++ or C in the mid-90's. Will Ruby, PHP, etc, replace Java for lots of tasks, including rapid web app development, prototyping and such? Sure. Is that one language "replacing" another outright? I don't think so.

In my view, Java has evolved into its current position as the new "systems language". Other languages (yes: Ruby, PHP, etc) are taking precedence in the building of new lightweight web apps for various purposes. It's probably fair to say that the leading edge of development exists in these web 2.0-ish style of apps, which puts Java in the backseat a bit in that category.

In other areas, such as advanced IDEs for the language, Java wipes the floor with pretty much any language, which helps for many types of development.

But so what? Each language and tool has its place. Instead of useless pissing contests, we should be focusing on how to make these various languages and tools interoperate and complement each other better.

Update: Python! Damn, I forgot about Python. Blame the lack of sleep or something. The magic trio these days is definitely Python, Ruby, and PHP. Thanks Joe for the reminder! :) And while I'm updating, what is up with reporters comparing Java, or Ruby, PHP, Python, etc, to AJAX? I don't get that at all. Do they not understand that AJAX is a client-side scripting technique?

Acme coffee challenge update: 12 hours, 24 cups. Not bad.

Categories: soft.dev
Posted by diego on January 9 2006 at 5:07 AM | TrackBack (0)
Comments (please see the comments & trackback policy).

Is it hypocritical that I simultaneously agree with you and am pissed off that Python didn't even garner a mention?

Posted by: Joe Grossberg at January 9, 2006 7:14 AM

You're right Joe! I just updated the post. :)

Posted by: Diego at January 9, 2006 8:13 AM

In other words: Java is continuing to lose it's market share in the future.

Posted by: Aapo Laakkonen at January 9, 2006 9:25 AM

I see Ruby and Java (and Python, for that matter) as roughly equivalent to each other, and equally uninteresting. None of these languages have the ability to _surprise_ us, to do anything interesting. They never, ever, think their way out of any paper bags; not even wet ones. Translate "Ruby Forever" into "Imperatives Forever", and you'll get my drift.

Type systems and constraint systems provide the semantic framework necessary for programs and languages to _reason_ about themselves. Without them we continue to tell our programs how to treat each molecule of each request, one step at a time. Assertions of type against dynamic systems is very tough and hasn't yielded much of interest.

It utterly amazes me that people can praise Ruby (which is a nice and fine imperative language) as the truth and future, then fail to notice that they used SQL to retrieve the useful data from their database. A programming language that would even _allow_ for emergent behavior is a prerequisite for the better future us programmer types blue-sky for, each of our gray days.

Posted by: Ross Judson at January 9, 2006 11:43 AM

I don't think Java is anywhere near being replaced -- from a business perspective, any weakness in the language itself is compensated for by the strength of the tools and libraries around the language. This is true even though I much prefer programming in Ruby.

Re: Ross Judson's comments, I think he should look more deeply into Ruby. Ruby introspection is very powerful, and asserting the type of anything is trivial. Also, I think Ruby's particular flavor of duck typing is quite powerful -- I can write one function that spits out results to a string, an array, or a file with the same syntax.

However, I strongly agree that programmers need to look harder at support for communication with other technologies as a measuring stick for the quality of a language. Does it have a good foreign function interface? Are common file and database formats trivial to use? Is it easily portable across platforms? The answers to these questions are at least as important as the core language itself.

Posted by: Brian Miller at February 2, 2006 2:10 PM
Post a comment









Remember personal info?







Copyright © Diego Doval 2002-2007.
Powered by
Movable Type 3.35