Why Java is Better than You Think

by William Grosso

Related link: http://www.wgrosso.com/Articles/Presentations/PresentationonJavaasaProg.html



A few months ago, I was invited to give a Colloquium presentation at Sonoma State University. It's a nice university; located about 50 miles north of San Francisco, where the sky is blue, the air is clean, and the cows don't block the roads all that often. I wound up giving the talk on March 20 to about 45 people.

I decided to talk about why I think Java is a great programming language. It's more of a summary presentation, with lots of links and references to various things on the web than it is a presentation of any original thinking. But it was a fun talk to give, and it helped me clarify why I like Java so much.

You can now download the presentation from my website (which I'll update more frequently in the future-- I promise).

What do you think? Are the arguments valid? What other criteria would you propose when evaluating a programming language?


14 Comments

anonymous2
2003-04-04 03:02:45
portability and libraries
Hi,


I had a look at your slides and as an example for C++ portability problems you show some code from the Boost LIBRARY header files.
This is quite interesting when it comes to Java, because this is exactly where Java portability has a big problem: LIBRARIES!
Just to mention a few that aren't available everywhere, and I can't use code from other people because they use these libraries: Java 3D and SWT (e.g. Eclipse)


anonymous2
2003-04-04 08:11:11
portability and libraries
SWT is a AWT replacement. If you can't use SWT, use AWT instead, or better yet, just use Swing.


If you can't use Java3D on whatever platform you're programming for, use the Java binding for OpenGL.


There are thousands of C++ libraries for Windows I can't use, and will never be able to use on UNIX.


Java is far and away a better way to go.

anonymous2
2003-04-04 12:26:58
Community support for Java unrivalled?
If you think that community support for Java is unique in any way, I think you don't know well Perl, Python and Ruby communities, just to give some really outstanding examples that I know better.
anonymous2
2003-04-04 21:58:41
Very self-promoting?
His blog talked about how is going to speak at the college, and the next entry talks about his talk that he gave. How about saying something useful instead of just promoting your own personal gigs?
wegrosso
2003-04-05 07:31:57
Not so very self-promoting
Eeek! Someone mentioning themselves when blogging! My god, what a perversion of the art form.


Psat the idiocy of being bothered that a highly personal medium mentions the people involved, you're kind of confused on the facts. Tthere are two entries between the announcement and the entry about the talk. One talks about the war on Iraq and one mentions the IBM series of briefings on web services.And the entry about the talk points to the slides (lots of content there).


Past that, 52 blog entries since last June. Two of which mention talks by me (cf: http://www.oreillynet.com/weblogs/author).

wegrosso
2003-04-05 07:39:15
Community support for Java unrivalled?
I know Python fairly well. Python's developer community is certainly active and the developers support each other-- I'm not sure that's the same as "Python supports communities as well as Java does." There are other aspects of community support talked about in the slides (the whole discussion of WORA is geared towards community support) that I think Python doesn't do very well yet.


But, nonetheless, point taken. There are other languages that do support communities.


The point wasn't to claim that any one aspect of Java is unique. The point was to claim that, taken as a whole, Java offers a better package deal than any other language I know.


And, more importantly, to make the claim that things like "support for communities" (e.g. social factors) are the most important aspects of programming language design at this point.

wegrosso
2003-04-05 07:44:37
portability and libraries
Every language falls down with respect to some libraries. Platform dependence exists, no matter how hard you try to hide it (as Joel says, Abstractions Leak).


The questions are more subtle. At a given point in time.... How many are cross-platform? What percentage of the "library needs" you have do they cover? How easy is it to "google for code" using them ? How cross-platform is the code that uses them? And so on.


Over time, the question is maintenance. Will the libraries need to bve significantly maintained?
Did the libraries show up on the new platforms that emerged, substantially the same and without significant porting effort? And so on.


In both these categories, Java is far better than any other language I've ever used. It's not perfect, and some libraries aren't particularly good in some regards, but ....


Take that piece of Boost code. How much maintenance will it need? When the next rev of Windows comes out, will it just work? Or will we need some deep thought and a few more ifdefs first?


Now imagine a library that's not as good as the Boost ones (which are great). It's not a pretty thought.

chase
2003-04-05 10:05:31
Default 'Enterprise' Language
At work, I develop 'Enterprise' applications. I am using java and c#.


Elswhere, I develop 'Non-Enterprise' aplications. I use python.


I have no personal interest in 'Enterprise' applications. They bore me to tears. And I can't imagine using java on my own projects. The decrease in productivity would destroy my love of programming.

anonymous2
2003-04-05 10:19:28
I enjoyed your slides
Seeing as you getting a lot of heat on your slides, I thought I would let you know that I enjoyed them. You certainly made a lot of compelling points!
anonymous2
2003-04-06 00:44:40
Nice thing about blogs...
This is the nice thing about blogs. When people flame, the author flames right back.
anonymous2
2003-04-06 19:54:47
Interesting Stuff
I think you make some excellent points that most people never even consider.
anonymous2
2003-04-07 06:20:49
Community support for Java unrivalled?
In the slide it claims that Java Community Support is unique. This is blatently untrue - Perl is the best example of community support that I have seen.


Perl is also a very productive language, computer science being considered less important than 'getting the job done'


With version 5.6 and 5.8 perl also provides a very significant collection of core libraries. This doesn't match the size of the Java and .Net core libraries but combined with CPAN gives a very impressive choice and level of support that is far larger and more comprehensive than for any other scripting language.

anonymous2
2003-04-16 06:47:25
portability and libraries
you got the point. Just saying "SWT" isnt cross platform and so Java isnt either is a little bit weird.


1. SWT is not a standard
2. you can (shoud?) use AWT or Swing
3. its one of the very rare non-cross-platform libs
4. its all about GUI


C++ Code stops long before encounterning the GUI issue when it comes to cross-platform.

anonymous2
2003-04-16 08:24:04
Nice thing about blogs...
"Can't we all just get along?"