After building 5 Rails websites and having to Deal with Rails 2.3, 3.0 and 3.1 version differences, installation hassles and unexpected memory spikes with Ruby and other gotchas, I've decided to make the move to Java Backend Web Development using Spring. I'm aware that there is a world of difference between the two and JSP development isn't a next step after Rails development, but my major points are that:
a) Java is a much more mature, faster and efficient programming language compared to Ruby. b) Java (Spring) offers a variety of libraries, tools and plugins that can be selected and configured to custom tailor a web application. c) Java itself offers a richer programming language experience compared to Ruby.
My logic here may be vague, however, I'm more fed up with Rails development than anything at the moment.
My question (finally) is that is this a logical move todo? Is Java development really something that's a better choice for backend development?
Having dealt with both Ruby on Rails and Java I would say there are scenarios when Java is more suited and there are scenarios where Ruby on Rails is a better choice. Indeed, there are frustrated things with RoR, but rest assured there you will also encounter different frustrations in Java world. As in Java you will have to use different frameworks and libraries (just Spring wouldn't probably be enough) you will have to integrated them together. You will probably use Maven (lot more pain then Bundler), some collection of testing libraries (again, here Ruby on Rails is a clear winner). You will have to write lots of boilerplate code in your Java application, making the development slower.
The general guideline for me to use Java if: I have very rich domain model. Then you can leverage Java's coding to interface and generic types which makes you come up with better design for your domain model.
Use Ruby on Rails if: Your application is CRUD with domain not that large.
P.S. I wouldn't say that Java is a richer language. Many things in Java stink in order to maintain backwards compatibility. And dynamic nature of Ruby allows you to do lots of cool things that you can't do in Java.
I'd try Grails. It's Java, Groovy, Spring, and Hibernate combined using convention over coding that you're used to with Rails. It might be a good intermediate step.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With