Comments
Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud. We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
Cloud Expo on Google News

SYS-CON.TV
Cloud Expo & Virtualization 2009 East
PLATINUM SPONSORS:
IBM
Smarter Business Solutions Through Dynamic Infrastructure
IBM
Smarter Insights: How the CIO Becomes a Hero Again
Microsoft
Windows Azure
GOLD SPONSORS:
Appsense
Why VDI?
CA
Maximizing the Business Value of Virtualization in Enterprise and Cloud Computing Environments
ExactTarget
Messaging in the Cloud - Email, SMS and Voice
Freedom OSS
Stairway to the Cloud
Sun
Sun's Incubation Platform: Helping Startups Serve the Enterprise
POWER PANELS:
Cloud Computing & Enterprise IT: Cost & Operational Benefits
How and Why is a Flexible IT Infrastructure the Key To the Future?
Click For 2008 West
Event Webcasts
Why Ruby on Rails Has Become a Popular "Next Platform"
A RoR Primer for Java Developers

In a very short time Ruby on Rails has gained popularity in the enterprise development community among both programmers and system managers. As an open source platform, Ruby is proving to offer a number of advantages for powering enterprise applications, not the least of which is a shorter development time for robust applications and the creation of denser code that's easy to work with and maintain. This article is offered as an introduction to Ruby on Rails for Java developers, offering some basic insight into the evolution of Ruby and Rails and its expanding role in enterprise application development.

The Ruby Language
Ruby was born as an open source programming language on February 24, 1993 and was publicly announced to the world in 1995. Ruby's primary author is Yukihiro "Matz" Matzumoto. Like Perl or Python, Ruby is an interpreted dynamically typed object-oriented programming language. While Java was growing at breakneck speed in the 1990s as a commercial development platform, Ruby remained a more or less academic project. Since many of its language constructs were adopted from Smalltalk, many of Ruby's initial followers were Smalltalkers and language aficionados. These early adopters had a strong cultural influence on Ruby, largely in the promotion of agile development practices for Ruby projects.

Enter Ruby on Rails
Ruby started to see a rapid rise in visibility and popularity shortly after July of 2004 when David Heinemeier Hansson released his first version of Ruby on Rails. Rails was created as a framework to create database-backed Web applications. The first application built with the new framework was a Web-based project management tool called Basecamp.

Relatively speaking Ruby is very new to the Web development space compared to competing languages. Ruby on Rails came on the scene around the time PHP was gaining ground as a standard for building small to medium-sized Web applications.

The Ruby on Rails stack is similar to Struts, WebWork, or CakePHP in using a Model/View/Controller (MVC) abstraction. Many of the early adopters of Ruby on Rails who weren't already in the Ruby community when Rails was released came from the PHP or Java worlds. The PHPers were drawn to Ruby on Rails to escape the lack of structure and the time spent developing custom standards for each application. And the Javanese were attracted because of what is often seen as the bloat and friction of the existing Java frameworks and their components. Ruby on Rails is a complete solution and avoids many of the hang-ups in other development platforms by applying a default set of standard practices to a new project and seamlessly integrating all of the subcomponents behind the scenes to provide a uniform interface to the developer.

Since Rails is a threat to existing institutions in the Web application space, it's been accused of being unfit for large deployments, or anything other than building blogs. As a developer who has applied Rails to e-commerce, social networking, distributed computing, and data reporting, among other domains, and made them scale, I can say with confidence that these claims are far from credible. Increasingly large sites such as NASCAR Community, Twitter, and Funny or Die are choosing to use Rails and are undeniably demonstrating Rails' readiness for prime time. Practical experience proves that Rails is highly scalable and can handle millions of users or transactions.

How Does It Work?
Rails can be broken down into two core libraries: ActiveRecord and ActionPack. ActiveRecord is an object/relational mapping (ORM) library similar to Hibernate. ActionPack encapsulates the core controller stack (ActionController) as well as a view level template engine (ActionView/ERb). A standard Rails installation includes several tools to automate a broad spectrum of common tasks as well.

One significant cultural difference between the Java frameworks and Ruby on Rails can be seen in the Rails mantra: "Convention over configuration." Every Java developer has had to endure the pain of maintaining the seemingly endless XML files that plague their projects. Rails absorbs much of this by setting forth basic conventions for file, database table, and column naming as well as directory structure. The intention of this shift is to let developers focus on the real problems, which don't include "What should we name the directory where X files are in?" or "Should ids be <tablename>_id or just id?"

Another cultural difference is exemplified by another common phrase in the Rails community - DRY up your code. DRY is the acronym for "Don't Repeat Yourself." Similar Java implementations make it very difficult to make changes. The Java and .NET solutions tend to work around this problem by building tools for the purpose of "refactoring" or renaming a definition that has references all over the place. Because so many implementation details are implied from a master source, making changes in Rails becomes straightforward and generally requires a change at a single location.

Models
The Ruby on Rails model layer is provided by ActiveRecord (AR). ActiveRecord is an ORM library in the same vein as Hibernate or TopLink. ActiveRecord objects represent individual records from a database table. Defining an AR class is very simple and much of the configuration is hidden behind default conventions:

class Page < ActiveRecord::Base
end

Compare this to an equivalent Hibernate definition:

/**
* @hibernate.class table="miners"
*/
public class Miner {
    private Long id;

    ... more column vars ...

    /**
    * @hibernate.id generator-class="native"
    */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    ... more column getters and setters ...

}

The first difference that you will notice is that there is no configuration or mention of column names in the ActiveRecord implementation. This code fragment will reference the pages table, and will have its getters and setters automatically generated. The attributes for an instance of the class are inferred from the database, as are their types. Most of these default conventions can be overridden if needed but otherwise the naming conventions provide Rails with enough information to get out of the way and let you solve the real problems at hand. The only configuration that is needed is used to set up the initial database connection; the database.yml:

development:
   adapter: mysql
   database: application_development
   username: application
   password: password
   host: localhost


About Ryan Garver
Ryan Garver is CTO of ELC Technologies, a software-consulting firm based in Santa Barbara, California, that has the biggest team of Ruby on Rails developers bringing new applications to global 2000 companies and startups. He holds an MS in computer cience from the University of California, Santa Barbara.

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 1 of 1

How did the JDJ let this article slip into the magazine this month? Ruby on Rails is still all hype. Code Monkeys BEWARE!

And frankly I would stay away from Grails, too. Try decompiling the resulting Java code, and any true Object Oriented Programmer will probably lose his/her lunch.

If this keeps up, I am discontinuing my subscription.

In response to :

"Rails on its own is not thread-safe so parallelism must be found at the process level by running multiple application server processes."

... Seriously, who really wants thread-safety these days anyway? :)

I really think it's hilarious when someone writes an article about "Ruby on Rails" and think it's the best thing since sliced bread.

I've been doing Struts since 1990 and, it's pretty darn good. And, lots of developers know it, you can get "good help" when you're "good" programmer goes awol, and, now there's more important things to consider in the "web development space" at now than the back end stuff.

Also, great line about "...large sites such as NASCAR Community, Twitter, and Funny or Die are choosing to use Rails and are undeniably demonstrating Rails' readiness for prime time." Come on, large sites??!!! Were you born in 1990?

Look at the Seaside Smalltalk framework as well. See http://seaside.st/ and note that it's about 10x as efficient for the same hardware, even before tuning, than RubyOnRails.

What about groovy on grails - enhanced ruby and simplified Java - must be the next topic...

I would recommend looking at [http://www.python.org/about/ Python] and [http://djangoproject.com Django] as alternatives to the hyped RoR. I find Python much more readable dynamic programming language. Moreover, Python has a very big and loyal community and a enormous collection of open source libraries and frameworks. Django is a web framework written in Python that has many of the features of RoR and more.

God, yet another Ruby evangelist blowing his horn. Blah, blah, blah...Ruby is wonderful..Ruby is better than everything else.. ROR is the future and there's nothing else as wonderful. We've heard it all a million times on every blog and forum. Give us a break.

The world is moving towards dynamic programming languages, so the question is really a matter of which dynamic programming language will win out. Python? Ruby? Perl 6? My bet is on Ruby.

If/when RoR breaks into mainstream I'll be very surprised.

If you like PHP and think Ruby on Rails or any other MVC framework is what you're into, you might want to check out a pretty cool and full featured MVC framework for PHP called Mojavi. It's here: http://mojavi.org].


Your Feedback
Is JDJ Fading Out? wrote: How did the JDJ let this article slip into the magazine this month? Ruby on Rails is still all hype. Code Monkeys BEWARE! And frankly I would stay away from Grails, too. Try decompiling the resulting Java code, and any true Object Oriented Programmer will probably lose his/her lunch. If this keeps up, I am discontinuing my subscription.
Anonymous Java Addict wrote: In response to : "Rails on its own is not thread-safe so parallelism must be found at the process level by running multiple application server processes." ... Seriously, who really wants thread-safety these days anyway? :)
Same Old Same Old wrote: I really think it's hilarious when someone writes an article about "Ruby on Rails" and think it's the best thing since sliced bread. I've been doing Struts since 1990 and, it's pretty darn good. And, lots of developers know it, you can get "good help" when you're "good" programmer goes awol, and, now there's more important things to consider in the "web development space" at now than the back end stuff. Also, great line about "...large sites such as NASCAR Community, Twitter, and Funny or Die are choosing to use Rails and are undeniably demonstrating Rails' readiness for prime time." Come on, large sites??!!! Were you born in 1990?
Randal L. Schwartz wrote: Look at the Seaside Smalltalk framework as well. See http://seaside.st/ and note that it's about 10x as efficient for the same hardware, even before tuning, than RubyOnRails.
casp1 wrote: What about groovy on grails - enhanced ruby and simplified Java - must be the next topic...
Ze'ev wrote: I would recommend looking at [http://www.python.org/about/ Python] and [http://djangoproject.com Django] as alternatives to the hyped RoR. I find Python much more readable dynamic programming language. Moreover, Python has a very big and loyal community and a enormous collection of open source libraries and frameworks. Django is a web framework written in Python that has many of the features of RoR and more.
Brian Mulroney wrote: God, yet another Ruby evangelist blowing his horn. Blah, blah, blah...Ruby is wonderful..Ruby is better than everything else.. ROR is the future and there's nothing else as wonderful. We've heard it all a million times on every blog and forum. Give us a break.
grid4reason wrote: The world is moving towards dynamic programming languages, so the question is really a matter of which dynamic programming language will win out. Python? Ruby? Perl 6? My bet is on Ruby.
an0n wrote: If/when RoR breaks into mainstream I'll be very surprised.
Web Frameworks wrote: If you like PHP and think Ruby on Rails or any other MVC framework is what you're into, you might want to check out a pretty cool and full featured MVC framework for PHP called Mojavi. It's here: http://mojavi.org].
Latest Cloud Developer Stories
Swisscom, the Swiss telecom, is going into the cloud business. Its subsidiary Swisscom IT Services AG has signed up with Red Hat as a Certified Cloud Provider and launched a public cloud Infrastructure-as-a-Service (IaaS) cloud targeting enterprise-class customers primarily in ...
Apache Deltacloud, the Red Hat-contributed ReSTful API that abstracts differences between clouds so services on any cloud can be managed – provided of course there’s a driver – has graduated from the Apache Foundation’s incubator and is now a full-fledged Top-Level Project (TLP)....
In a surprise move on Tuesday, January 10, Oracle wheeled out its Big Data Appliance. That’s the one it said in October would be ready sometime in the first half. Only nobody believed it meant early in the first half. Heck, it’s not even clear anybody thought Oracle could make ...
Rackspace Hosting, the service leader in cloud computing, on Thursday announced its acquisition of SharePoint911, an industry leader in SharePoint consulting, training, and "JumpStart" services within SharePoint. The unification of both companies provides capabilities to deliver ...
CloudLinux, Inc., on Thursday released CafeFS 3, a virtualized file system for shared hosters that cages each customer within its own virtualized file system. CageFS becomes part of CloudLinux OS at no additional charge. CloudLinux OS, the only commercially-supported Linux OS m...
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON Featured Whitepapers
ADS BY GOOGLE

Breaking Cloud Computing News

Catch up on your sleep while you can. The Professional Association for SQL Server (...