Atom Atom feed

Java People, Stop Worrying and Start Coding!

Ruby is being hyped pertty hard right now, just like Java was ten years ago.

I classify myself as one of those developers who don't get Ruby, just like I don't get Perl. Both are too hard for me. And there seems to be something in my brain that prevents me from learning both. It's strange I never had the problem with C or C++ or Python or Lisp or awk.

So, the hyper-enthusiasts have left the building. They went for another programming language. They claim that the other language is five to ten times more productive than the current languages, even though the other language does not have very good stories in terms of IDEs, GUI toolkits, multi-processor/multi-thread support, or distributed transaction management. They claim that the other language supports object-orientation far better than the current languages. They claim that the other language handles a big chunk of the tedious work we do in the current languages automatically. And they have a fifteen minute demo that anybody can download from the internet and fire up and be in awe.

Am I talking about Ruby? No!

I'm talking about Java—ten years ago. Yes we did all these when we were young. We downloaded HotJava, the world's first Java-enabled browser, fired it up and saw the animated website and liked it. We wrote our first Java applet in AWT 1.0 and it felt just so right! We were hooked. We left C++/COBOL/Fortran behind without ever looking back, proclaiming them "bad memory that is mercifully fading away."

Yep. That was us. Now ten years later, it's our turn to be on the other side of the flood gate. And it can be a scary time. What are we to do?

Well, you can follow the hyper-enthusiasts to the new pasture where the grass seems greener, if you believe them and you can stomach the new language. It will be fun. It will be exciting. For a while. But you won't be more productive than you are now. All the new things take time to learn. All the new missing features will need to be added into the mix. You will also constrain yourself into the narrower domain—Rails based webapps. If this is what you choose to do, I wish you luck.

Actually that's what I did when Java came around. And it has worked out great for me. But I was looking for another language anyway. My old language, a proprietary 4GL for developing client/server applications on Windows that everyone in the team loved, died, edged out by a language that's inferior but cheaper.

Or, you can stay with Java. That's what I would like to do this time. Let me explain why.

One, I just don't like Ruby. This has more to do with how I think and work than with the true quality of the Ruby language. I'm sure Ruby is a fine programming language offering good OO features. But there is something in it that rubs me the wrong way. I tried to learn it when the first edition of the PickAx book came out. But somehow I can't get past the "we are so OO, we write 3.abs instead of abs(3)" noise. I'm sorry. It's not for me. There. I said it.

I used to be afraid of saying such things publicly. Fearing other people would say "this guy is an idiot, can't even learn Ruby." I've been doing this line of work long enough to know that I'm not an idiot. Just like there are people who like Java and people who don't like Java, I think it's only natural that there will be people who like Ruby and people who don't like Ruby.

Two, I'm a slow person. It took me years and years to become really fluent and comfortable with the whole Java environment. My experience tells me learning the syntax is the easiest part, and learning the standard library and third party libraries takes a long long time. Even if I liked Ruby, it will be years before I can be as efficient in it as I am in Java. The at least ten times increased productivity that's cited last year, has been reduced to 10%-50% this year. My fear is that even the 10% number is for hyper-enthusiasts only. For the rank and file, it will more likely be no productivity for the first six months, reduced productivity for the next year and a half, and on par productivity for the next two years. By that time, the Ruby hype should have already died down. There will be a new media darling on the horizon making outlandish claims. What do you do then? Abandon Ruby for this other new thing?

Three, I think Java has a very bright future. Not as glorious as in the past ten years, but bright nonetheless. Java's fundamental strengths in OO, multi-threading, security, networking, dynamic remote class loading, distributed computing, GUI development and advanced and relatively performant runtime make it a strong contender as the language of choice for a wide variety of computing tasks.

The recent raft of proclaims—such as this one: Java is so Nineties—should be read under some critical light. They sound very much like press hits to me. The press has an internal need to hype something. Something new and exciting. They also has a tendency to get tired of them fairly quickly. When something goes off the radar screen of the press, it's not the end. It's just a new beginning. The beginning of the next phase in maturity.

With the hyper-enthusiasts gone, Java enters into a new age. The age of calmness, clarity, and confidence.

Tags :


Re: Java People, Stop Worrying and Start Coding!

agreed. never liked the syntax of perl or ruby anyway.

Re: Java People, Stop Worrying and Start Coding!

Nice post, Weiqi.

There is absolutely no shame in admitting not understanding a certain language. These things are completely personal and everybody's brain is different.

And interestingly, this very fact is one of the reasons why despite my deep fondness for Ruby and Ruby on Rails, I still think they will not become mainstream. They fit and please my mental schema very well, but they have an undeniable "foreign" taste that I bet will not work with a lot of developers.

Re: Java People, Stop Worrying and Start Coding!

Good one Weigi. I'm also glad the hyper enthusiasts have left, and I agree that Java will enter better era without them.

Re: Java People, Stop Worrying and Start Coding!

When reading this post it seems like you haven't really tried Ruby you just bought a book and didn't really write anything. Maybe I'm wrong. But if you haven't tried Ruby or Ruby on Rails I suggest you do it. At first the syntax is probably weird because I assume you are used to Java and maybe Python. But after a while you will see the power of the syntax and the language. As a language it is more powerful than Java, more object oriented and cleaner even compared to Python. Just face it Ruby is just another tool. It's a better fit for some tasks than Python and Java for example. But if you don't know the language you won't know which ones.

Re: Java People, Stop Worrying and Start Coding!

Larry, Thanks for your attempt to save me. I appreciate that.

BTW, have you tried Yu-Shiang Pork? It's the best food in the world. I'm sure you will like it if only you would just try it.

Re: Java People, Stop Worrying and Start Coding!

is Ruby somewhere near Java when it comes to multi-threading security networking dynamic remote class loading distributed computing GUI development

Re: Java People, Stop Worrying and Start Coding!

Good post with very good points.

It appears to me that the original hype was about Rails and it extended to Ruby and scripting/dynamic languages, but it's really Rails where productivity gains come from. I completely agree that Rails is much more suited to a CRUD web application than Struts, Wicket, JSF, etc.

Re: Java People, Stop Worrying and Start Coding!

"you can stomach the new language. It will be fun. [...] You will also constrain yourself into the narrower domain—Rails based webapps. If this is what you choose to do, I wish you luck." Will you? By knowing two languages you can now pick up Rails jobs as well as Java ones. And ones requiring you to know both languages. Also, every language you learn will broaden your mind. You will learn things. You will be able to use these new things even in languages you have learned in the past. Learn a new language and learn its idioms. You might learn something new, after all. Something that is useful in situations you have been before or in ones that you haven't been in before. By only really knowing one single language on the other hand you risk yourself to mono culture. (Please note that I'm not talking about you here. I'm just going to the opposite side of the earlier sample.) To blindly following what others consider to be hip. Believing the hype without understanding the reasons. I liked the part where you talked about how Java has used the same hyping that made Rails so popular. This is enlightening. I think it is a bit sad that you can not wrap your mind around Ruby, but I won't dislike for it as long as you don't just dismiss Ruby as being a fad. The language has good sides. This doesn't mean everyone has to use it, but I think it is important to have a look at it before deciding whether it is useful for one self or not. You have already tried Ruby, I know, but there is other people out there who haven't. So I'd suggest trying Ruby to those people. It doesn't take long. It will actually give you facts you checked yourself to base your opinion. And it only takes a few minutes... http://tryruby.hobix.com/ makes trying out Ruby amazingly simple. Oh, and please: Learn the language before you startd picking up frame works. You don't want to start reimplementing the standard library after all... The truth is: Ruby works. For some people. Python works. For some people. Java works. For some people. Sometimes multiple languages even work for the same people at the same time. This is great. So let's stay open and friendly towards new ideas (this is IT after all, right?) and let people use whatever they feel most comfortable with. :)

Re: Java People, Stop Worrying and Start Coding!

And ouch. It would sure be great if this site did paragraphs without me inserting <p> tags. Ah well, my fault for not previewing. Second try:

"you can stomach the new language. It will be fun. [...] You will also constrain yourself into the narrower domain—Rails based webapps. If this is what you choose to do, I wish you luck."

Will you? By knowing two languages you can now pick up Rails jobs as well as Java ones. And ones requiring you to know both languages.

Also, every language you learn will broaden your mind. You will learn things. You will be able to use these new things even in languages you have learned in the past.

Learn a new language and learn its idioms. You might learn something new, after all. Something that is useful in situations you have been before or in ones that you haven't been in before.

By only really knowing one single language on the other hand you risk yourself to mono culture. (Please note that I'm not talking about you here. I'm just going to the opposite side of the earlier sample.) To blindly following what others consider to be hip. Believing the hype without understanding the reasons.

I liked the part where you talked about how Java has used the same hyping that made Rails so popular. This is enlightening.

I think it is a bit sad that you can not wrap your mind around Ruby, but I won't dislike for it as long as you don't just dismiss Ruby as being a fad. The language has good sides. This doesn't mean everyone has to use it, but I think it is important to have a look at it before deciding whether it is useful for one self or not.

You have already tried Ruby, I know, but there is other people out there who haven't. So I'd suggest trying Ruby to those people. It doesn't take long. It will actually give you facts you checked yourself to base your opinion. And it only takes a few minutes...

TryRuby makes trying out Ruby amazingly simple.

Oh, and please: Learn the language before you startd picking up frame works. You don't want to start reimplementing the standard library after all...

The truth is: Ruby works. For some people. Python works. For some people. Java works. For some people.

Sometimes multiple languages even work for the same people at the same time. This is great.

So let's stay open and friendly towards new ideas (this is IT after all, right?) and let people use whatever they feel most comfortable with. :)

Re: Java People, Stop Worrying and Start Coding!

> TryRuby.

Try Yu-Shiang Pork.

> The truth is: Ruby works. For some people.
> Python works. For some people.
> Java works. For some people.

That's exactly what I'm talking about. I agree with you here.

Re: Java People, Stop Worrying and Start Coding!

TryRuby.
Try Yu-Shiang Pork.

I tried to try it, but unfortunately that link just points at a comment briefly mentioning that "it's the best food in the world". Now I would like to genuinely try it, because honestly that sounds like a very bold claim.

Of course I remain sceptical, but it could be true after all...

:)

Re: Java People, Stop Worrying and Start Coding!

Ruby? It looks ugly and stupid, which is exactly why I stayed away from COBOL back in the 1970's. Ruby could become the next COBOL and I would still not program using it. But it won't get there, I think that Ruby has found its niche and crawled into it: Rails. The hysteria will die down, the RoR riders will get layoff notices, and I will still be programming in Java.

Re: Java People, Stop Worrying and Start Coding!

Thanks for being a perfect sample of how not to be open and friendly towards new concepts. The posting is useful as that.

Re: Java People, Stop Worrying and Start Coding!

Well ouch. I was just being honest. The Ruby examples I have worked through seemed hautingly COBOL-like, and well, ugly and stupid. And I know Visual Basic was supposed to take over the world too and be the next COBOL, but all I ever saw it do was allow inexperienced developers to spawn-off unmanageable messes no one wanted to clean up. The last VB programmer in my 1000+ IT department was layed off several years ago. In the next few months, a winnowed-down resume stack will land on my desk. Seeing "Ruby" experience there will not impress me. There are very few truly new concepts and Ruby is not one of them. Java took off when it became apparent it was going to be a carefully balanced tool targeted at the career software engineer. Life is short, and careers are shorter. Whenever you pick a new language, you essentially are starting your career over. I prefer to work with professionals who have at least 10 years of experience, not someone who has 2 years experience with the last 5 fads. If you didn't know almost instantly the first time you evaluated Java that it was not just a fad, then you haven't witnessed many of the disasters it was designed to avoid. Java was the first software engineering language, and the only thing to come close since has been C#/.NET.

Re: Java People, Stop Worrying and Start Coding!

There's a difference between being just honest and flat out insulting.

You are appearing like a troll right now, but I'll give you the benefit of doubt despite posting anonymously and with so much aggression.

May I then ask what kind of sample code it was that you were confronted with?

Sorry, but that posting just sounds like you never seriously tried the language out at all.

I'm not sure how I'm starting my career over when I pick a new language. Is all my old knowledge just going a way all of a sudden?

It's true. You will be new in the language and some of the concepts but it, but that is a good thing.

Also APIs won't be the same, of course, but I don't see how that would spoil your experience coding in other languages.

Also would you rather work with people who have spend 10 years getting familiar with the most obscure areas of Java or ones that have shown to quickly adapt to new languages and circumstances -- people who have knowledge of what else is available out there and how and when to use it.

I'm just not sure how you can seriously believe that Java is the best match for everything one might ever want to do. Are you sure that this really is your opinion?

Re: Java People, Stop Worrying and Start Coding!

Maybe original poster is harsh, but truth is many people does not like perl-like syntaxes including me. Ruby offers almost nothing to my domain of interests (such as, applications require high performance or serious concurrency). if i "need" to learn it one day, i will.

Re: Java People, Stop Worrying and Start Coding!

This sounds so much more sane than calling Ruby "ugly", "stupid", "the next COBOL" etc. I can see how Ruby hardly makes sense for the domain you primarily work in. Perhaps you will still be able to use it for tools helping the development process or similar, but I can certainly see your point.

Re: Java People, Stop Worrying and Start Coding!

Amen brutha.

The great thing about Ruby is that now, as Java guys, we can see how annoying we were ten years ago with some of the claims we were making about it.

Rhetorically speaking, if you are a rubyist and you are convinced that Ruby is going to take over the world, then go for it! You don't need the permission of current Java developers and you don't need our agreement that it is the true light (TM).

Re: Java People, Stop Worrying and Start Coding!

Has it ever been true that coding took the majority of time on a project? If not, how can one language be 10x as productive as another? This is all smoke an mirrors as far as I can tell.

Re: Java People, Stop Worrying and Start Coding!

Damned good point! At the project I'm currently in, I would be extactic if 10% of the time spent was in programming. If it was done in RoR it would be just 1%, and that would be just horrendous. I'm glad I'm so unproductive in Java... ;-) Mats

Re: Java People, Stop Worrying and Start Coding!

I am just glad nt to be doing Fortran anymore

Re: Java People, Stop Worrying and Start Coding!

Weigo, I wholeheartedly agree with you on this :) Frankly Ruby as well as Perl rubs me the wrong way. Also IMHO RoR is limiting in terms of capability and domain. Best, Angsuman

Re: Java People, Stop Worrying and Start Coding!

Having coded quite a few lines in languages from Hexcodes, Assemblers, Basic, Fortran, C, C++, Java, Perl, REXX, various shells, awk dialects and more. Some languages I had to use for exterior reasons, some I had to try for interest. I came to the conclusion, that the number of Lines-of-Code is not good to judge anything, neither a programmer nor a programm nor a programming language.

You can easily find 3000 lines of (say) Java which are more comprehensably than 10 lines of PERL. Though I haven't seen the reverse, I'd guess it'll be somewhere out there.

Stop claiming "yours is shorter", cleaner or whatever, just provide your users with nicer solutions and win the race.

Re: Java People, Stop Worrying and Start Coding!

I am more interested in how we can make Java better. JRuby, Jython, Groovy all are strong efforts brought about by folks not being able to deal with some of java's weaknesses.

One really simple one: RegEx. Java does not have a special string type that will allow programmers to avoid the standard escapes, especially \\. This renders most RegEx impossible to read. Indeed, several folks have build "converters" that let you type a RegEx without the \\'s .. and other vanilla string problems, converting the more readable form into the Java nightmare.

Other issues: billions of maps and lists with awkward iterators. Redundant declarations like:
Foo foo = new Foo().
Couldn't we get rid of one of the Foo's!!

IDEs help enough that we are starting to ignore these problems, but Gawd, java is verbose.

In other words: I love Java. I hate Java. Dear me!

Great article and comments, btw.

Owen


Add a comment Send a TrackBack