I am java developer and heard a lot about ruby. My real question is can we develop large scale enterprise (web) application in ruby ? Because I heard that ruby is good for small application, but like java we can't develop large scale scalable (web) application in ruby.

6 Answers
6

Most answers we find on the web are FUD and its hard to find the answers with the appropriate context. A multitude of people have hitched their wagon to one eco-system or the other and will justify their decision using whatever logic and statistics they can. The best you can do is assemble a team of bright/motivated people and they will choose the software stack that best empowers them to succeed. If we look at the web-sites that have had much success over the past 10 years, we'll find the languages to be varied. Having said that, the number one priority in every startup and even when working in large enterprise organizations was time to market. While many people are looking at scalability and acting on their findings, some guy using so-called less than enterprise grade software is delivering a solution to the market. If you have a moment, checkout Paul Grahams essays. He provides some good insight into this topic. He was very successful using Lisp, now who would even think about that in this discussion? The point he makes in his essay is speed and responsiveness to change. Even Twitter as popular as it has become is a mix of Scala and Ruby. My perpsective is that in Silicon Valley to many teams are trying to deliver using only a single language, and that what should instead occur is using the appropriate language for the specific team, and problem at hand. If you are developing product into enterprise entities you'll be very limited on what your software stack can be, but if you are developing a customer facing web application, the world is your oyster! You want to choose the stack that lets you and your team go from concept to reality ASAP! GOOD LUCK!. OVER.

In Ruby? Sure - for most meanings of "enterprise". When you're talking about ruby and web apps, chances are you're talking about Ruby On Rails, or Merb (which is the same thing from v3.0 onwards). With either framework, ways to scalability are fairly well understood.

I suspect that you could probably still achieve higher levels of throughput for a given hardware configuration with a Java solution. Costs for additional hardware could very likely be more than offset by reduced cost to deliver a solution with a Ruby framework - as a language it's typically much more concise than Java.

The more "enterprise" and "scalable" you need your app to be, the more you're going to have to work to remove bottlenecks - just like you would with a Java app.

New Relic have quite a few useful items on the subject, and Googling for "scaling rails" yields a lot more.

Ruby has access to all the Java libraries using JRuby if need be, but Ruby is definitely lacking a proper "pure" Ruby managed application server environment like JBoss, Weblogic or Websphere. (+1 for Java)

2) How does Ruby scale compared to Java?

Most scalability is related to finding bottlenecks faster, and in Ruby you will develop much faster than in Java, so hits the bottlenecks a lot faster, allowing you to optimize your application faster. For example, you will be able to optimize your database much sooner with a Ruby on Rails application compared to a Java application. (+1 for Ruby)