6

Is the ROR used only in startups or also in bigger companies as well?

What should be the reasons of their preference of Java over ROR?

5
  • I am not an experienced ROR developer, but I think popularity is the reason. Ruby is not as popular as Java (I don't claim Java is better), so there is greater demand for Java developers. Commented Oct 19, 2012 at 16:45
  • With the exception of a handful (like twitter) you are right...partially. Some big international companies will use it internally. Doesn't typically handle the big loads gracefully some big companies get without extremely talented Ruby devs. Think the jRuby project could use more of a push to get it fast and epic awesome on the JVM ;) (Edit: Plus those huge companies have deep pockets. Expensive Java or .NET developers can be bought and so can for pay platforms and databases)
    – rlperez
    Commented Oct 19, 2012 at 16:52
  • 2
    big international companies stick to java-on-jails, you know :)
    – mlvljr
    Commented Oct 19, 2012 at 17:00
  • I'm seeing a lot of "RoR on top of Enterprise CRM System X" stuff going down these days. Big systems are often hybridized, and now the new kids are wrapping the slightly older kids. The same way we wrapped up cobol stuff in java for the last decades . . . Commented Oct 19, 2012 at 18:50
  • One can follow one's heart and be happier and less economically desirable, or follow one's head and have a more useful and employable skill set. Commented Oct 19, 2012 at 19:20

4 Answers 4

3

There are a lot of reasons why large multinationals prefer Java, C++ or .NET developers. For one thing, their systems were set with a platform using one of those languages before Ruby came along (same will hold true for Python in many respects). They also know that computer science departments train Java and C++ programmers, so there is a larger pool of potential applicants to hire from. These are basically the forces of inertia at work in large multinational firms.

There is also the issue of support. Java, especially Java EE, is supported by huge firms with mega budgets and a whole industry of training schemes. As is .NET. What about Ruby? People are still asking around on this forum for books about Ruby or how steep the learning curve is.

You and I probably agree that when it comes to developing web apps from scratch, ROR is the right tool for the job. However, if I were a CIO at a large multinational, I would see no benefit in switching my army of developers to a whole new language and framework. Nor could I sell that to my boss.

3
  • @maro MIT teaches in scheme. I've had a class in prolog and ML. Just because a university has a class in a language does mean there is a strong argument to learn the language... nor does it mean one should expect that there are real world positions jobs that use it on a regular basis. There are many languages used in the real world that are not taught in academia.
    – user40980
    Commented Oct 19, 2012 at 21:49
  • @maro As I said before, ROR is the right tool for a web app from scratch. But it is not a language that translates well to system programming. C++ or Java is what is used for desktop apps. You need to decide if you want to develop for the web (Ruby, PHP, Java) or for desktop apps (C, C++, C# and Java). They are two different animals. While ROR and PHP are great for web, they are dynamic languages and pretty much useless for statically typed complied desktop applications.
    – Kenzo
    Commented Oct 20, 2012 at 17:54
  • @Kenzo: Java is also heavily use for server-side applications. With this I do not mean a web application (even though HTTP may be used for communication) but the server back end to which clients (e.g. apps running on smart phones) connect. For such applications Java has the advantage of being faster and statically typed (which is definitely good to have as soon as your code reaches a certain size).
    – Giorgio
    Commented Jan 20, 2016 at 19:04
12

I would suggest you to visit this page on Quora. There are many answers which would give you an explanation.

The most appropriate answer on Quora is:

  1. Many companies have systems that have to maintained for a long time, yet they do not have dedicated staff to maintain them. Rather, the system is written by some contractors, then just sits there until something new is needed, when a different set of contractors comes in, etc. With that approach, it is important that you use something standardized that is popular for this general type of system, so you can always find somebody to maintain it for you. Java and C# are very popular for writing big business automation systems, so there are many contractors who can write big business automation systems in them, so they remain popular for writing big business automation systems. This becomes a self-fulfulling prophecy, but that makes it no less convincing of an argument.
    For similar reasons, it is important that you use something stable. With many dynamic/scripting languages like the ones you mentioned, 3 years is considered more than adequate notice to deprecate a language or library feature. With Java, on the other hand, you can still run a 10-year old program without modification. This is often very important to people doing business automation.
  2. The presence of a big corporation backing a language and the associated set of libraries and tools reassures decision-makers in large corporations that support is good and won't go away soon. (Whether this is actually true is a whole 'nother question.) Python, PHP, and Ruby are all originally hobby/academic projects, and have grown some amount of corporate support, but mostly from rather small firms that do not impress your typical Fortune 500 CIO. C# is backed by Microsoft, and Java comes out of Sun, which may have gone under, but is still backed heavily by Oracle, IBM, and others.
  3. Big business automation projects require different libraries and frameworks than typical dynamic web sites do. You want to be able to talk to Oracle and SAP, for instance. These sorts of frameworks and libraries tend to be for Java or C#, and this too is self-perpetuating.
  4. Sometimes, Java or C# may actually be a technically better alternative. I mention this argument last, but it's not just to point out the logical possibility. For instance, Java has a decent threading model and there exist high-performance concurrent data structure libraries. The standard Python implementation has poorly implemented threading, and the standard PHP implementation has for all practical purposes no threading at all. Also, strong typing and compile-time name resolution, while slowing down exploratory programming, do increase the number of bugs that can be statically caught.
  5. And now an admittedly slightly off topic remark: The question mentions languages with a lot of compile-time checking that are tedious to use, like Java and C#, and languages with very little compile-time checking that are not tedious to use, like Python and Ruby. For completeness, it must be said that the amount of compile time checking a language does need not necessarily correlate directly with the amount of boilerplate that you have to type to help it do so. Among the languages that have very tight compile-time checking but that are considerably cleverer than Java about inferring what it is they are supposed to check, ML (OCaml, Standard ML, F#), Haskell, and Scala are especially worth knowing about. Among these, Scala has the best chances to become truly mainstream, because it integrates so well with the mature and open source Java runtime and libraries.
3
  • 1
    Good answers on the #1 response on quora, suggest to excerpt some of the high points in case the link goes dead, but keep the link in there to credit the source.
    – Turnkey
    Commented Oct 19, 2012 at 16:54
  • @Turnkey done it :D Commented Oct 19, 2012 at 17:09
  • Looks good, thanks. Recommend also to keeping the actual link on there for credit or drilling down to other answers while the link is available.
    – Turnkey
    Commented Oct 19, 2012 at 17:13
4

Ruby is often seen as a solution for when you need something fast (and quick and dirty). It also is seen as lacking scalability for large systems.

Large companies typically are not after "quick and dirty" or after the time to market that a quicker solution would provide. The large company is not going for a cycle from design to release in a matter of weeks and is more often on the time from design to release on the order of months (sometimes years).

One advantage of ruby is the smaller technology stack necessary to go out. It is quite similar in that respect to php+mysql for a web app. The large companies are more likely dealing with an already existing (for example) java+weblogic+oracle stack that has been in place for a decade. There is no advantage for the large company to switch to something smaller when they already have the larger stack in place.

0

That's my impression as well: ROR is used more by startups, Java in big companies.

First of all, different languages have strengths/weaknesses for different applications. Ruby is a language; Ruby on Rails is a framework for creating web apps. C++ isn't very suited to web apps, the only one I know of in C++ is ok cupid. C and C++ are for high performance apps, e.g. databases, operating systems, what's generally referred to as "systems programming."

People often feel that dynamic languages like Ruby are harder to scale to lots of programmers or complicated programs, because of the lack of compile time checks.

Similarly, large companies are very conservative, so they're happy to slow down developers by having them write lots of boilerplate, as long as things mostly work in the end.

0