Server Frameworks Part 2: Spring, Ruby, Revel

Part 2 of Server Frameworks


The Spring Framework is an open-source application framework that aims to make J2EE development easier. Unlike single-tier frameworks, such as Struts or Hibernate, Spring aims to help structure whole applications in a consistent, productive manner, pulling together best-of-breed single-tier frameworks to create a coherent architecture. The Spring license falls under the Apache 2.0 license, and is widely used and supported. Spring is the most widely used of the Java web frameworks. As of March 2016, there were 150 contributors, 12,000 commits and 84 releases. Spring is utilized on thousands of websites: Coursera, Oracle, and LinkedIn to name a few.

Why use Spring: From an engineering perspective, Spring provides loose coupling between different modules, effective in organizing the middle-tier applications. Spring’s implementation of ‘Inversion of Control’ helps the developer create modules of code that are more maintainable by separating the use of an interface from the implementation. Spring is very versatile, combining the best of the best single-tiered frameworks to create one coherent architecture.  It’s a one-stop shop, that lets you address multiple infrastructure concerns at once. There’s no need for separate class loaders or compilation units, and it negates the need for a conventional EJB container. Also, it’s modular. Developers can work with any part of Spring’s layered architecture in isolation, ignoring the ones that aren’t critical or useful to a project’s success.

Risks of using Spring: One of the biggest complaints against the framework is its size. Nearly 3,000 classes, though aptly named, make it difficult to wade through at times to find what you need. It’s also open source, which isn’t appropriate for every environment, and there’s a lot of XML involved as well as parallel mechanisms that, while useful, can become confusing.

Primary Takeaways: Spring is a well-established Java MVC framework that is well over a decade old. There are supported sub-projects/plugins for security and authentication. It is full featured, which means that there is a lot to learn. Spring, because of its age and Java roots is very enterprise friendly, but can look a bit stogy to newer/smaller companies


To learn more about Spring visit


Ruby on Rails

Ruby is a general-purpose programming language, though it is best known for its use in web programming.  Rails is a software library that extends the Ruby programming language. Ruby on Rails, or simply Rails, is a web application framework. Rails is a model-view-controller (MVC) framework, providing default structures for database, a web service and web pages. It encourages and facilitates the use of web standards such as JSON or XML for data transfer, and HTML, CSS and JavaScript for display and user interface. The Rails license falls under MIT, and is widely used and supported. As of March 2016, there were over 3,000 contributors, 57,000 commits and 290 releases. Rails has been around since 2005 and the most recent major release was November 2015. Some companies that use Rails are Amazon, BBC, Cisco, CNET, IBM, JP Morgan, NASA, Groupon, and Yahoo.

Why use Rails: From an engineering perspective, Rails establishes conventions for easier collaboration and maintenance. It is the central project of a vast community that produces software libraries that simplify the task of building complex websites. Rails is popular because the pool of open source software libraries (RubyGems, or “gems”) makes it possible to build complex sites quickly. Rails is a productive way to build web applications by helping to speed up development and reducing costs.

Risks of using Rails: Its processing performance is slow relative to C++ or Java. For websites that require lots of simultaneous activity, Ruby is not well-suited to the sophisticated software engineering required to execute simultaneous activity efficiently. Lastly, some programmers complain that Rails contains too many complex operations that are hidden behind simple directives. It is worth noting that this has not been Digital Foundry’s experience. Rather, we have found that the “magic” in a framework helps make the simple things simple; however, it can sometimes get in the way of more complicated tasks.

Primary Takeaways: Rails is an easy framework to get up and running in and there are plenty of modules that help with development. There are so many modules it is hard to know the quality of a module and keep up to date on all of the upgrades/fixes that your projects collection of modules generates. The focus of convention over configuration is a good pattern if everybody is steeped in the conventions.


To learn more about Rails visit



Revel is an open source Go-based web framework that facilitates building simple, reliable, and efficient software. Revel seems to be the only opinionated web framework that cares about how you organize your web app. It’s very similar to Rails in that sense. Other Go web frameworks are much more flexible because they are just packages that you import and make use of. That said, Revel and Beego are not well aligned with the Go ethos of small applications with minimal dependencies. Revels’ license falls under MIT, it is not extensively used or supported. As of March 2016 there were 93 contributors, 1,100 commits and 11 releases. Some sites that use Revel are GopherAcademy and Square.

Why use Revel: From an engineering perspective, Revel enables code reload which rebuilds the project every time files change in your project directory. It’s also required to run, build, or package your project, and has good support for logging and different levels of logging debug, info, error, etc. Revel builds on top of the Go HTTP server, which was recently benchmarked to serve three to ten times as many requests as Rails across a variety of loads.

Risks of using Revel: There is an overall lack of easily accessible information compared to other open source frameworks. There is a lack of support for standard tools like go test, and one can’t kick off jobs adhoc or view them easily.

Key Takeaways: Go is a Google initiated open source project that has been gaining traction as a streamlined language for development. It has the benefit of not requiring a heavy runtime like Java, Python, or Ruby. Revel and Beego are reasonable full-featured server side MVC frameworks for web development. An alternative to these frameworks is to use the built-in http classes and a multiplexer (HTTP request router) like httprouter.


To learn more about Revel visit