JRuby on Rails - RoR's Simplicity Meets Java's Class: A Case in Point for a Highly Productive and Scalable Enterprise Application Development Platform with JRoR
When we started to architect an enterprise micro-blogging solution as part of the internal collaboration platform for a large customer (henceforth referred by dummy name 'CustCollab'), the next immediate question was "Which web application development framework to use?". Simplicity, productivity, ability to deliver high quality of service (QoS), especially performance and scalability (can't ignore that when you're talking about 200,000+ users and expect high concurrency!), and alignment with CustCollab's technology stack were our top criteria for framework selection. After considerable research on state-of-the-art, we zeroed in on 2 frameworks – 1) "Ruby on Rails" (RoR) for its super simplicity and productivity and 2) "Java Enterprise Edition" (JEE) for its obvious "enterprise" class, high QoS and greater alignment with CustCollab's technology stack. But we just couldn't rule out either one, since each framework had been proven to deliver qualities not so proven in the other framework. Naturally, we started dreaming of a framework which can deliver best of both worlds! And in reality, there lived such a framework – 'JRuby on Rails'!
JRuby is the Java implementation of the Ruby programming language. It enables calling Ruby components from Java code and vice versa, thus giving Ruby, and hence RoR, the power of Java Virtual Machine (JVM). In this presentation we focus more on our experience of how JRuby, and hence JRoR, can do a fantastic job of delivering best of RoR and JEE worlds to an enterprise application w.r.t multiple 'quality of service' attributes like scalability (parallel processing, Garbage Collection, compilation, caching, advanced database connection pooling etc.), extensibility, productivity as well as constraints such as 'alignment with existing/preferred technology stack' etc.
With the help of the real world 'CustCollab Micro-blogging' case in point, this presentation highlights the constraints and tradeoffs involved in deploying RoR in a typical large scale enterprise environment such as that of CustCollab, and demonstrates how the distant, isolated worlds of RoR and JEE can synergize with the help of the JRuby bridge to result in a highly productive and scalable enterprise application development platform. Without the psychological comfort of a long list of well known, time tested large JRuby/JRoR implementations or availability of/access to any large scale enterprise JRuby/JRoR case study, within or outside TCS/CustCollab, which could have decisively supported the early adaption of JRuby in CustCollab, our decision to build CustCollab's enterprise micro-blogging platform on JRoR relied on our time tested confidence on Java/JEE, RoR's assurance of simplicity and productivity, and the faith on JRuby core developers' promise of synergizing the Java and Ruby worlds. And we are pleased to say that JRuby fulfilled its promise!
After successful deployment of CustCollab Micro-blogging platform on JRoR, it is time to share our experience on the JRuby capabilities and the new possibilities. This presentation gives access to a real world JRuby case study of a large scale enterprise implementation. We hope it encourages others to adapt JRuby as well as helps other early adapters to support their choice of JRuby. After all, the JRuby improvisation is well capable of delivering the best of both Java and Ruby worlds, and hence deserves greater attention in the enterprise world!