As a professional software engineer, with the Java World as your primary domain, you may consider taking the plunge and either dabbling with the Ruby World or making it your primary bread and butter domain. In this post we compare the two worlds with a simple table listing.
Its worth noting that the term Java developer in itself does not mean a lot, most developers have a preferred peripheral stack from the operating system upwards and in addition some may specialise in particular domains (front end, back end, integration, other domain) and hopefully a set of treasured reference books. So naturally this listing comes loaded with the bias and interests of the author.
You will notice that in some cases there are no equivalent frameworks and specialist tools when it comes to the Ruby World – in these cases, it may be best to look at your requirements and let a combination of a Quality Attribute Workshop and the Architecture Tradeoff Analysis Method guide your software architecture. It may be that you end up with both Ruby and JVM based modules in a large scale distributed system.
One important thing to note when comparing the two worlds is that with appropriate tooling (e.g. JRebel) and a supportive architecture it is possible to develop rapidly in the Java World. There are those that still make the assumption that enterprise Java development is overpriced and slow.
|Java World||Ruby World|
|Apache Maven||No direct equivalent. Combination of distinct tools. Bundler, Rake, RubyGems and more.|
|Eclipse||RubyMine by JetBrains|
|Sonatype Nexus||No direct equivalent. gem server, Gem in a Box.|
|Apache Camel||No equivalent. Can use STOMP to connect to Camel component.|
|Ruby Language (JRuby)||Ruby Language|
|Google Guava||No similar public Google supplied library.|
|JRebel||Not applicable since Ruby is a dynamic programming language.|
|Java 8 Reactive Language Features||Reactive Extensions for Ruby|
|Spring declarative transaction management with isolation levels||Similar power available using Active Record – documentation not nearly as rich and mature|
|Workflow and BPMN e.g. Activiti BPMN 2 Process Engine||No direct native equivalent (i.e. unit testable process flows). Integration options exist for e.g. Process Maker.|
|Spring Batch – batch application framework||No equivalent. Some basic batch processing constructs in Active Record.|
Taking Things Further – Inspiring Reads
- Enterprise Architecture with Ruby (and Rails) – without a doubt worth a look if you have an interest in software architecture
- RailsTutorial – a well presented, clear and concise book if you are looking to get your hands dirty
Rails in Wellington, New Zealand
If you make a living as a software engineer, the local market for a given stack naturally matters. Here are some organisations where Ruby on Rails is used in the author’s home town, the awesome city of Wellington, New Zealand.