As always Bruce Eckel is a great read..
The Java hyper-enthusiasts have left the building, leaving a significant contingent of Java programmers behind, blinking in the bright lights without the constant drumbeat of boosterism.
But the majority of programmers, who have been relatively quiet all this time, always knew that Java is a combination of strengths and weaknesses. These folks are not left with any feelings of surprise, but instead they welcome the silence, because it’s easier to think and work….
Clearly Ruby is making important contributions to the programming world. I think we’re seeing the effects sooner in Python than elsewhere, but I suspect it will have an effect on Java as well, eventually, if only in the web-framework aspects. Java-on-rails might actually tempt me into creating a web app using Java again.However, I can’t see Ruby, or anything other than C#, impacting the direction of the Java language, because of the way things have always happened in the Java world. And I think the direction that C# 3.0 may be too forward-thinking for Java to catch up to.
Weblogs Forum – The departure of the hyper-enthusiasts
Mainly, I think a pragmatic approach to a language is to assign value based on a) what you can accomplish with it, and b) how easy it is to write in the first place and maintain in the long run. So far Ruby is starting to become interesting on (a) – it was always interesting on (b) -, although we still have to do a lot of stuff in Java if we want to take advantage of a lot of features.
However, in Java there has been a lot of work already done to get you libraries and automated tools. I have been looking for some good IDEs for Ruby and I can’t seem to find anything that is better than just using vim (I’ve looked, but that’s another story) – Eclipse is my yardstick for comparison.
That means that I may want to switch to rails for web app development and maybe scripting, but not for any type of development where I have to apply deep pattern thinking and where I anticipate refactorings to come along as the system grows. It may be easier conceptually to do refactoring in Ruby, but that fact is superceded by the automatedness of doing it in Eclipse. It doesn’t matter if it impacts a lot more files to, say change a member variable name in a domain object, in Java vs. Ruby if I can do it with Alt-R in Eclipse and in Ruby I have to go and change it manually – the masses will not switch until you give them this kind of capability.
On the other hand, I really do like the fact that you can get started in ruby from scratch in a few minutes using things like “gem install rails”, vs. setting up a giant ant/java/spring/hibernate/tomcat on the java side.
Not all Java solutions require you to spend hours setting up an entire stack of frameworks and let them work together. Using RIFE, you’re up and running with our Jumpstart in less than a minute: http://rifers.org/theater/rifejumpstart_xdevelop
Rife indeed looks great, but your “less than a minute” mention (on how easy it is to get up and running) does assume you already have the JDK, ant, junit and Tomcat or other webapp container – remember, I did mention from scratch. By themselves these things can take a while to acquire, and the experience of acquiring and putting them together is not achieved in a day. Maven helps of course, but it is not pervasive in the java culture.
On the ruby side you can assume that if you run any kind of modern Linux you at least have ruby 1.8.2. Typing “gem install rails” brings in activerecord, test:unit, the rails framework and all dependencies, and autoconfigures everything but the database itself. Having used both I can tell you that on a from scratch situation (on both Linux and Windows), I’ll still be moving libraries to WEB-INF/lib and setting up a build script, while on rails I will have my first scaffolding up and running.
In fairness I do have to say that I have had to install ruby 1.8.3 on some boxes, namely solaris and mac types which are typically slow to upgrade their base installs.
I will nevertheless take a look at it, as it looks easier than the current solutions (spring, struts). I’m not bashing Rife, I’m just saying the java environment doesn’t lend itself to this type of solution.
This is not a technology problem, mind you, and it’s certainly not the fault of RIFE (or Spring, or Struts). It’s simply Sun’s unwillingness to work with its community to support what become de-facto standards, or at least provide prominent “getting started” guides that include what people are actually using. Just as a couple of test cases: Logging. It took sun years to get a logging framework in their system and they still wrote their own. Same thing happened with XML parsers.
What the platform needs is for Java evangelists to come up with easy ways to get started, and Sun needs to play along, even if they don’t mention Sun products. Read the Ant call to action (at the bottom of the page, it can also be found on their welcome.html in the ant download) for a manifestation on this frustration.
No, web container needed, you need the JDK, yes, but you’d also need Ruby. As you say, I can make the same argument, any Solaris or MacOSX comes with Java but not Ruby. Windows comes with neither, though a lot of vendors start to include a JRE.
So the installation of a base platform is as ‘difficult’ for Java as for Ruby. From there onwards, you can use RIFE/Jumpstart with any development environment you like immediately (IDEA, Eclipse, Ant, X-develop, CodeGuide, Netbeans) and get started in less than a minute.
Comments are closed.