Request: Sun, Drop Support for JRuby

Since the beginning of programming there have been debates between the validity and usefulness of one language to another. Developers, managers, bloggers and the like continuously argue back and forth about why one language is better than another. Back in September of 2006Sun Microsystems, widely known for creating Java, made a clear stance that it was going to support JRuby. The news came as Sun announced they were hiring the two lead developers of the JRuby project, Charles Nutter and Thoams Enebo, to work full-time on the JRuby project. As history has shown this proved to spark new debates about Sun's decision to back the project.

Recently, Rick Hightower posted his feelings about Sun's support of JRuby and requested,

Sun please drop JRuby support. It is a waste of time. Take that money and spend it on Groovy which has a compatible syntax to Java. Do the language evolution there and quit abusing Java syntax. Give us some decent Groovy IDE tools. Quit messing with Java so frequently.

Rick provides several reasons for his request to Sun, including that syntax matters,

Sun invests in Ruby via JRuby. DOH! Groovy looks a lot like Java. It is much easier to get started with it. The syntax does not make developers want to hurl.

In addition to syntax, Rick suggests that language popularity also be considered and he goes on to display a chart which shows Java being much more popular than Ruby.

Here is another reason not to invest heavily in Ruby. For the color blind: RUBY COMES IN DEAD LAST!

Ruby comes in dead last. If there was going to be a revolution, it would have happened already. Ruby is a little long in the tooth to finish this poorly. Don't you think?

Java is popular because it is like C++ and C. C++ is popular because it is like C. C# is popular because it is like Java. See a pattern. Follow Gosling's lead, and add some decent support for Groovy (code completion, re-factoring, etc.) When/if, the new language feature becomes main stream, then add it to Java (or not if it does not make sense).

With opinions and suggestions like that there has been quite a buzz on Rick's blog. In fact, there are over 50 comments at the time of this writing.The majority of the commenter's seem to believe that having a choice in programming languages is a good thing,

I believe that we should have choice, so asking jruby to cease the development for me just not fair. don't get me wrong, I still don't like jruby, and right now I use groovy, but let jruby and scala alive, choice is good.

Another response posted by Michael Galpin sheds light on the other side of the debate. Specifically, Michael provides one reason why investing in Scala can be worthwhile.

There is great potential in languages with control abstraction. Scala is just such a language. It is possible to implement the actor model, a shared nothing, message based design for parallel computing, in Scala. This is not possible in Java. You can do it in Groovy, sort of, but it can be awkward. The reason for this is simple. If you have a object call method call closure (for example) the closure can return control back to the object in Scala, but only to the method in Groovy. The extra control structure coupling in Groovy makes some aspects of control abstraction awkward at best.

Another blogger, Ola Bini, also disagrees with Rick Hightower, stating

I believe that JRuby is important because it can run in the same environment as Java, but without the problems of Java.

Ola goes on to explain the problems that he believes exist in Java and in turn why JRuby is a better choice. Additionally, Michael Galpin goes on to explain why Sun is interested in JRuby.

Sun knows what it takes to introduce a new language and platform and make it the de facto standard in the industry. It is very hard and expensive. They have done it once, and it cost them dearly. Java cannot stay at the top forever. They do not want to fight this battle again. However, if they can get the Rails on JRuby scenario described above to exist, then they could "stay on top" without having the fight all of the battles this time. They let the Rails community do it for them.

In addition to Sun standing behind JRuby, there has also been development on the NetBeans IDE to support JRuby. However, it should be mentioned that there is active NetBeans development to support Groovy and Grails. In fact, Martin Adamek provided a update to NetBeans support for Groovy and Grails on his blog.

So what are your thoughts, is there room on the JVM for various languages? Should Sun stand behind Groovy and increase the development and tooling support for it?

I haven't checked the original thread, but Ola's quote seems to quite weird/unclear: Rails on JRuby is a framework and has nothing to do with a discussion about languages. Unless, Ola wants to imply that Ruby syntax will catch up with all Java developers because there is a web framework available. This is IMO a very weak statement, and I'd be using it only if I'd be part of some marketing/sales department. On the other hand Rick's arguments are quite solid on this matter: part of the Java success was its similarity with the languages that were used by the majority of the developers at that moment.

I always thought Groovy was a more logical choice, both due to syntax and compatibility. But Sun needs to sell it too, and Ruby is a lot easier to sell these days.

JRuby has the upper hand in performance vs. Groovy ATM, but that is the primary focus in Groovy development now. So I suspect both languages will be about equal soon enough. Charles Nutter has been very helpful working w/ the Groovy devs as well.

But really, it doesn't take formal endorsement from Sun to become popular.

@Alex:I believe this touches on the old problem of research: do you only do product research or do you want to stray into area of basic research.

How has basic research helped Sun? Let's see: In the late 80's, early 90's their research labs developed Self, a prototype-based OOP language. While Self ain't used by anyone today, the VM technology that was developed for it (by Hoelzle, Unger and friends) was used in Strongtalk Smalltalk, which now powers Hotspot.

Also... Sun has a long history in other languages, as far as I remember them trying to push Tcl (or at least the Java version Jacl).

And when it comes to the market: forget those few similarities in syntax... it's about jumping on the right bandwagon at the right time - after all: we wouldn't be talking about Java now if the Web and ThinClient and Applet hype hadn't helped Java survive the 90's, when it was largely useless and slow. Ruby, right now, has the same kind of momentum behind it, so trying to jump on that is quite logical. (Not to mention that - from a practical point of view - Ruby's not tied to the JVM platform, which makes it palatable to everyone).

Now... if there's a language to support for the JVM, it's Scala, which adds another edge and isn't in the same league as Ruby and Groovy (which are both, theoretically, at a similar level of basic concepts).

And frankly... if you follow the JRuby team, they are very active in helping other JVM languages along as well (something that can't really be said of Groovy's team, which mostly seems interested in getting prissy at people who dare question anything Groovy-related).

Just in case my previous comment sounded like I was defending Sun... why in the world was Javascript (Rhino) added as sample scripting language to Java 6? Beanshell has been around nearly as long as Java, has REPL, looks _exactly_ like Java but still has some dynamic tricks up it's sleeve. By the same logic that Java developers can only handle languages that look like Java, shouldn't Beanshell have been the first language to be shipped with Java6?

To be fair the original article did not originate from someone in either the Groovy or JRuby communities so its hardly "My dad is better...". It is someone expressing an opinion on a blog.

@Werner

Yes Alex is involved with Groovy and your comments were probably more targeted at someone like me. Groovy has had quite a roller coaster ride of criticism and hype, you either love it or hate it. Fortunately more and more people or enjoying it.

Those who hate Groovy sometimes express that on blogs and can spread FUD about the language which we try and correct. If we were part of the Ruby community we would be applauded as doing it in the name of "opinionated software" and all that jazz, but because we're not we're getting "prissy at people". Go figure?

I'm also confused by Sun's priorities. Why did Sun push Ruby/JRuby instead of Groovy which is more Java-like in syntax and even has a JSR in place? or why not showing more support to Jython which was one of the first popular dynamic language implementations on the JVM? Python and Java also share the same principals of explicit code and community process. Python is also used in Sun itself, but still there is no proper support for it in the new Netbeans platform.

It seems to me that Sun was driven by the hype generated around RoR by some tech world celebrities. It's ironic that with all this hype around Ruby and RoR - in 2007 there was a drop in the popularity of Ruby and a rise in the popularity of Python.

Although not taken out of context, the quotes don't best represent the purpose and intent of my blog post.

The purpose of the blog entry was to vent at the constant pronouncements by the "Ruby Rulez, Java sucks!" crowd, and the Java is dead crowd. It was more of a long rant than a detailed language comparison.

Like many developers, I believe in programming language choice and such. In fact in 1998, I wrote a series on programming languages that ran in the JVM for the JDJ (being an early adopter of Jython, I wrote a book on Jython as well). I am all about choice and learning new languages to broaden your skill set. I have been paid to program in C, C++, Java, Python, Perl, Delphi, etc.

In the enterprise language space, Ruby comes dead last. In the LAMP world, Ruby comes dead last. Yet there was the constant Ruby cheer leading squad on Jroller which is what the post was really about.

According the Tiobe report, Python was the fastest growing programming language last year. Python is the most used alternative programming language used in the JVM. Yet Sun supports JRuby not Groovy or Jython (which more people use). Why? (JRuby comes behind Groovy and Jython)

The Groovy support in most IDEs (except for apparently IDEA) is not so great. Why not invest in the syntax that people use? (Groovy being more similar to Java.) Groovy seems like more of a sure bet than JRuby does.

I can't say I will never program in JRuby or Ruby just that they are not high on my priority list.

This stuff is annoying. It's like a bunch of children saying "My dad is better than your dad" "Oh ya well my dad has a bazooka and will blow up your dad." "Oh ya..."

Ruby, Jruby, Groovy, C#, Python, Perl, [insert language you find helpful here] they all have their place. What ever happened to "Right Tool For the Job"?

The total lack of professionalism in the blogosphere on these types of issues is frustrating and distracts from those of use who enjoy using it as a learning tool.

It sure is annoying. Yet jroller was getting bombarded with it daily.

I use and enjoy Java every day. I am just a little sick of the "Ruby Won, Java sucks!" crowd, and the constant reports of Java's death. I could never see where Ruby fit (some folks do). Python was older and more mature so if you were going to swing the dynamic language way... well why not Python? Java fit the enterprise application space quite well. Apparently based on indeed and tiobe, a lot of folks agreed with me.

Yet day after day on Jroller, there was the constant beat of Ruby pimple pimpers (Ruby rulez; Java sucks). It is not about being closed minded about only using Java. It is really about setting the record straight about Ruby and its relative importance in the grand scheme of things despite the hype. I have nothing against Ruby per se--I just prefer Java, Groovy and Python. Ruby usage is down not up despite the constant hype.

If you read my post, you will see that I am very interesting in learning new tools and languages just not a big fan of RoR and even less so of the RoR pimple pimpers on jroller.

And when it comes to the market: forget those few similarities in syntax... it's about jumping on the right bandwagon at the right time - after all: we wouldn't be talking about Java now if the Web and ThinClient and Applet hype hadn't helped Java survive the 90's, when it was largely useless and slow. Ruby, right now, has the same kind of momentum behind it, so trying to jump on that is quite logical. (Not to mention that - from a practical point of view - Ruby's not tied to the JVM platform, which makes it palatable to everyone).

Well, my impression is that Ruby is not the only one in this category. And if Sun wants to get involved with other languages I think they are missing quite a few. Just look at what Microsoft is doing in this direction: they are adding support for a whole range of different languages on top of their DLR. I do think that that is the right approach.

Now... if there's a language to support for the JVM, it's Scala, which adds another edge and isn't in the same league as Ruby and Groovy (which are both, theoretically, at a similar level of basic concepts).

I do think this is your opinion and I respect it. However, I don't have to agree with it :-).

First of all, I do love RubyOnRails framework a lot. But I have to say that as a JavaEE developer I have been very surprised by Sun support of JRuby, especially with the nice work that is done with Groovy and Grails.

Hoping that people that thinks that JRuby is not a good thing happening to Java & JavaEE will comment and alert Sun about our point of view.. After all we are daily user of Java and probably the best advocates of it.

Uhm. As far as I can see, the only quote from me in the article (and also the only one attributed to me) is this:"I believe that JRuby is important because it can run in the same environment as Java, but without the problems of Java."The next quote is from Michael Galpin.

That's so boring to read every year same blog posts over and over from grails/groovy guys crying that Sun didn't choose them...

Come one, Sébastien, nobody of the Groovy or Grails team said anything like that at all! AFAIK, Rick Hightower isn't part of the Groovy and Grails teams. And none of the comments I've seen so far from either of these teams have said anything like that at all.

I am not part of the Groovy and Grails team. I've decided recently to start using Groovy on a side project. I am a "rank and file" Java developer. I work with JPA, Java, JSF, Spring and Spring MVC.

I was waiting on two things from Groovy: decent IDE support, and support for Java 5 features. Groovy has excellent IDE support from IDEA and Java enums etc were added in Groovy 1.5. Nothing stops me from using Groovy.

I am learning Groovy. I am not an expert or much of an advocate. It will be six months to a year before I know if it is something I will use on a daily basis.

Let me be clear. I have a special place in my heart for Ruby brought on by scores of Ruby teleevagelists on Jroller.

If I had to choose, I would go for better Java integration and tool support for Groovy rather than focusing on JRuby. Groovy has all of the features of Ruby but in a more Java friendly syntax. Groovy is a JSR.

Then I would pick Python via Jython since is it a) more popular b) more mature c) has all the features of JRuby d) already most popular alternative language on the JVM besides Java (has been most popular alternative language for 10 years!)

Then I would pick Scala since it provides great langague feature that are not found anywhere else and it augments what Java bring to the table.

Then I would pick Ecmacscript 4 via the next Rhino since it is a) more popular b) people actually use it c) it has great langague features in a very commonly used syntax d) looks a lot closer to Java than traditional JavaScript did e) looks a lot like ActionScript/Flex. I've heard EcmaScript 4 has all of the features of Ruby but in a more Java friendly syntax.

Then I would pick PHP since it is a) more popular b) people actually use it.

Then if I still had some money, I would donate it charity and leave Ruby out in the cold like the match stick girl.

Perhaps Sun chose to support JRuby precisely because it IS different, and because Ruby comes from a very different community.

Practically every company in history has lost to an initially smaller competitor because they:1. refused to admit that the competitor is worth considering as a competitor2. they see the potential market as too small3. the culture of the organisation did not allow different cultures/tech to grow and prosper within the organisation.(see works by Clayton Christensen)

Its hard to envisage a discrete competitor in this context, but if there is a move away from Java (and Java like tech on the JVM), and Sun makes no effort to change or adapt, then they lose all the same. I can imagine the employees in this (nebulous) small (non) competitor saying "Go Rick, go!".

None the less Rick's concerns are valid in terms of what he considers his tribe and a threat to his tribe (Java developers).I think Ola (and others) has a point re the reduction of the significance of big languages, and in general i think its a good thing - more variety more competition, more innovation, but it sure brings tribalism to the fore (eg over zealous Ruby evangelists, and equally zealous defenders of the one true faith(s)).

Actually John, I thought about this same thing. I assume Sun is supporting Ruby as a reaction to Ruby/Rails percieved popularity and hype. Although, I believe Ruby and Rails has had an impact on Java development and SW development in general. However, the hype machine behind Ruby/Rails is mostly hot air.

There is no move away from Java. And if there is, it is not because of the Ruby camp. The Ruby/Rails revolution is mostly in the minds of Ruby/Rails community who continue to ignore any study that shows Ruby/Rails is not a new revolution.

Ruby/Rails is last in the LAMP world and does not even make a dent in the enterprise space.

Groovy and Jython seem like much better choices to invest in for dynamic languages in the JVM.

Ruby/Rails has put more focus on dynamic languages and the big winner has been Python and Groovy. Yet all of them combined are dust on the scale when compared to C# and Java.

One wonders what Clayton Christensen says about chasing percieved threats that never materialize and the waste of resources. Besides wouldn't coming up with an better alternative to Ruby/Rails that fits the Java community better be a more apropos choice than kowtowing to the Ruby community and its cadre of evagelists.

I am no defender of the true developer faith. I am not zealous about Java. I do like it.

Yes, I also agree that Groovy is a more logical choice and I would like to see more support for it coming from the big players in the industry, but I also believe that having choices is good so I do not blame Sun for investing in JRuby, but I would like to see them put at least the same effort to elevate Groovy for the simple reason that it is more related to Java than Ruby is. The Java platform is very powerful and I believe that having more choices for various languages that work on it will make it even more powerful in the future.Having more choices means that one can use whatever suits them best for the task at hand and all would integrate nicely on the same platform, and I think that is real power.

Groovy and Jython were already very advanced/mature in their development when SUN supported JRuby.Groovy was nearing 1.0 release but the community still needed to use it to judge its popularity.Django was very early in its development and again its adoption needed to be looked at. Besides Jython still doesn't work with Django.

On the other hand, even considering the ever-increasing popularity of RoR, JRuby project was still way too immature to have ever-reached 1.0 release in a year's time w/o SUN support. The move from SUN was really commendable as it has shown its fruits.

I have just experimented with RoR a couple of times and I liked it.However, IMO Ruby is missing some key aspects to be a successor of Java like,language constructs for multi-threading as found in ErlangandImproved Exception handling mechanism.

I've followed the progress of Ruby as a platform for the last 3 years. I must say that 2007 was year in which the most work on Ruby as a platform was done; rubinius, mongrel, RSpec, XRuby, JRuby, IronRuby, etc matured.

Again, I would argue that despite all the open-sourcers heartily support for Ruby, it is still an orphan when it comes to corporate support. By orphan I mean an orphan badder than Python(Google) and PHP(IBM).

I don't know if Scala is the ans but I'm sure interested in looking at it.