 |
Should 'Java' stay 'Java'?
Posted by robogeek on December 17, 2007 at 01:14 PM | Comments (8)
I've got a few minutes before heading off to a meeting, and see a few blog postings on approximately the same topic. Should Java (the language) strive to be the perfect be-all-end-all language? Or should it simply strive to be good enough?
On the #openjdk IRC channel one day last week we had an impromptu debate along these lines. One or more people were claiming Java (the language) sucks, that it should have several different uber-features, and basically that since it's not Haskell or some such it's a complete failure. As a language, that is.
Java the platform, Java the runtime environment, that is clearly one of the most successful cross platform runtime systems of all times. Cross-platform runtime systems have a long history, and my earliest knowledge of them is with Forth and with the UCSD p-System Pascal (which I ran, not on an AppleII but on a Terak PDP-11). Java the platform is near-ubiquitous, offers ever-increasing capabilities and performance, supports dozens of different programming languages, and does a great (not perfect) job of behaving well across platform.
Java should stay Java (?|!): Draws an interesting distinction between the uberprogrammers ("übergeeks that think in monads") and the rest of us. Tim Bray in On Closures draws a similar distinction. "My argument is simple: Java worked so well because it hit the 80/20 point; for my money one of the loudest, cleanest 80/20 technology victories ever. Subsequent attempts to fill in the 20% were, well, mostly harmless. Until generics, which are a disaster; they have made Java harder to learn and to understand, and you can’t avoid them."
I am very much in agreement with the points raised by these two. I can't help but remember Beta-versus-VHS being on the losing end by having bought the superior Beta VCR. This is my example of how the 'Best' is not necessarily 'Best'.
Just because some particular language has wonderful ubergeek features, does that make it 'Best'? There was a distinction Graham Hamilton promoted to the Java SE -- that there are a lot more average programmers than there are ubergeek programmers. If this thing we call Java were to be targeted only to the ubergeek programmers it would limit the potential audience for Java. Now, why is that important to anybody but Sun? Clearly this is important to Sun because the more Java appeals to a broad spectrum of developers the bigger a market we have to sell services into. However to the rest of y'all, this is also important because the bigger the Java market is the more work there is for Java programmers. It serves everybody if the Java market were to be as large as possible.
The nice thing about the Java ecosystem architecture is that it supports multiple languages. One can have a range of languages for the average programmer, and one can have language(s) for the ubergeeks, and through the magic of the underlying platform they can work together.
A practical example ... there are a couple ways to run PHP programs on top of the Java platform. This offers you an opportunity to hire PHP programmers to do the front end of a web application, while the business logic and enterprise scalability is written as Java services somewhere in the back.
So.. back to the debate of 'Should Java stay Java'... I don't have the technical background to properly evaluate the different Closure proposals. I have recently learned Groovy and like the way Closures are implemented there, and that's about as far as my preferences go.
But ... I think there's a distinction to be drawn here between Java-the-Language and Java-the-Platform. This distinction is, I think, sometimes lost on people.
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
But ... I think there's a distinction to be drawn here between Java-the-Language and Java-the-Platform. This distinction is, I think, sometimes lost on people.
And that is for the most part Sun's fault because they name everything and the kitchen sink 'Java'.
Posted by: roman_kennke on December 18, 2007 at 04:44 AM
-
This isn't hard to see in practice. VB.NEt and C# segment the .NET market into exactly the two markets you are talking about. VB.NET for the average and C# for the uber. They may not get used that way, but it was certainly the intent of MS to have it be that way.
Posted by: razmaspaz on December 18, 2007 at 07:28 AM
-
There was a thought I somehow didn't write... I don't think there is One True Best. Each of us has our own idea of Best and it's amazing sometimes how one persons Best is another persons Garbage. This weeks Javaposse, Java Posse #154 - Special from JavaPolis 2007, had some interesting words to say along these lines.
Posted by: robogeek on December 18, 2007 at 10:35 AM
-
+1 for keeping Java a simple readable clean language. I have no problem with considering feature additions once we clean up Generics and other half-baked solutions we worked into the language.
Too much effort is being expended trying to add features to the language and not enough effort is expended trying to clean up the features we already added.
Posted by: cowwoc on December 18, 2007 at 11:43 AM
-
I also vote +1 for keeping Java a simple readable clean language.
If you want language fashion please go and use C++ or C#. Just look at how is complicating itself at a remarkable rate.
While we might have quite a few languages and a couple of decades of development under our belts, complicating the language too much means it doesn't scale well. You can't add recent graduates and get them to be productive (especially if they're maintaining some other 'experts' code).
Posted by: staubsaugernz on December 18, 2007 at 01:03 PM
-
Apologies, in my earlier comment please substitute:
"Just look at how is complicating itself at a remarkable rate"
with
"Just look at how C# is complicating itself at a remarkable rate"
Posted by: staubsaugernz on December 18, 2007 at 01:05 PM
-
Java Closures and What We Can Learn From HCI: You Are Not Your User Indeed.. "...This reminder really should be written on a large piece of paper and pinned to the office wall of every interaction designer. ... This statement aims to counter the most common fallacy in the design of user interfaces: that your shiny new, freshly designed interface is obviously good because you can use it without any problems...."
Posted by: robogeek on December 18, 2007 at 01:52 PM
-
Another distinction that is often overlooked is the difference between "computer programming" and "software engineering". I consider programming to be the implementation of any particular algorithm and the engineering end to be the design and construction of any large scale piece of software... generally with multiple developers.
There are many languages that can tout their "elegance" at representing certain algorithmic structures (which would be comparatively clumsy in Java), but few that offer the elegance in large scale development that Java does. I guess my point is that any features added to Java should enhance its strengths as a great platform for software engineering... and not "if we just added feature X we could cut 5 lines of code down to 3" type arguments.
That being said, I think that -- despite the complaints -- Generics actually aided this "engineering language" endeavor greatly, by providing a higher level of static type safety and type abstraction. I think that the addition of Closures has the potential to produce the same positive effect in the area of control abstraction. I'm in favor of any feature which enhances Java's existing strengths as a platform for developing large applications in team environments... an area where it already excels, IMO.
Posted by: ajconover on December 19, 2007 at 06:28 AM
|