It really does seem that we're beginning to emerge from the 10 year long Java nuclear winter, when excellent dynamic languages such as Objective-C or Smalltalk were kicked out of the mainstream. I've nothing against Java, and have probably spent a couple of man years or so working on the Qt/KDE Java bindings as some kind of 'public service' combined with a sincere desire to attempt to kill the Swing GUI toolkit. But I could never get at all excited or 'passionate' about it - Java has always just seemed another programming language to me with some pretty serious design flaws, some terrible frameworks and apis (cf Calendar class, the reflection api, and ..umm Swing).
Recently James Gosling made some dismissive comments about what he calls 'scripting languages'. It provoked several excellent responses, but my favourite one was from Ryan Tomayko, Gosling Didn’t Get The Memo.
One of the things that makes Ruby great to me is the way it takes ideas from such a large range of languages, everything from Smalltalk and Lisp, to CMU and to Perl. Yuhihiro Matsumoto is amazing 'literate' with his grasp of a wide variety programming idioms and how to incorporate them into Ruby so they 'feel right', and have a degree of usability.
In contrast what underwhelms me about the design of Java is how it feels like it was done by someone who never really programmed in Smalltalk or Objective-C, and so they just left out any sort of introspection, left out meta-classes, left out dynamic method redirection via #doesNotUnderstand, and left out open classes that you could add methods to via categories. It was obviously designed by someone who had tried C++, found it over-complicated and designed a simpler alternative with a runtime derived from the Pascal p-code interpreter. As a simpler C++, Java has been amazingly successful, but as a be-all and end-all of programming languages it falls a long, long way short. So here we are 10 years on from Java's launch and it seems dynamic languages are back, Ryan Tomayko says:
"This was not the case last year at this time, so what happened? Something must have changed. None of these technologies have underwent huge feature or stability increases in the past year. I’m unaware of any breakthrough in scaling these systems past what they’re already capable of. There have been some improvements in running dynamic languages on the mainstream VMs, which many predicted would lead to quick acceptance, but that’s not it either. So what changed?
Minds changed. Respectful debate, honesty, passion, and working systems created an environment that not even the most die-hard enterprise architect could ignore, no matter how buried in Java design patterns. Those who placed technical excellence and pragmaticism above religious attachment and vendor cronyism were easily convinced of the benefits that broadening their definition of acceptable technologies could bring."
Amen Ryan. Let's all carry on with the turkey shooting!

It sort of depends what you
It sort of depends what you mean by Java really
.
The problem with Java is that no one is looking at what is happening out in the world and providing Java with enough vision for the future. It just feels like a design-by-committee language. The surrounding infrastructure (Hibernate, Struts, EJB etc.) is also disjointed, complex and has a design-by-committee feel as well.
The only advantage of Java is the development tools and IDEs available for it today, but that's hardly an advantage of Java itself.
Talking about dismissive comments...
"Recently James Gosling made some dismissive comments..."
+
"In contrast what underwhelms me about the design of Java..."
Is this a case of the pot calling the kettle black? If you're so wound up about what J. Gosling said I can't understand how you can dis Java so badly in the lines immediately following it.
You want people to respect what Ruby has to bring to the table but you're unwilling to extend that same respect to others?
Re: Talking about dismissive comments...
"Is this a case of the pot calling the kettle black? If you're so wound up about what J. Gosling said I can't understand how you can dis Java so badly in the lines immediately following it."
Well I think that the difference here is that James is mouthing off about things he clearly doesn't know anything about, while Richard at least has some experience with Java (and other languages) and can give a better informed opinion about Java, Ruby and languages in general.
--
Simon
Re: Talking about dismissive comments...
"You want people to respect what Ruby has to bring to the table but you're unwilling to extend that same respect to others?"
Of course I think there is some great Java Free Software like Eclipse and gcj - it isn't all bad. I wouldn't say I'm wound up about what James Gosling said, it's just that he comes across as some kind of 'Rip Van Winkle' who seems to have been asleep in a cave for the past year or two. I'm bored with being told that static typing java style is the solution to all the world's problem, and that the JVM in the 'One True Virtual Machine'. It seems perfectly reasonable to report on the Ruby community's replies to his comments, which were in fact quite rude.