5 ms·
I used rails professionally since version 0.14. 4 years ago I joined a new company and started developing Java server-side with a few years experience with java
by postcynical 9y ago
I used rails professionally since version 0.14. 4 years ago I joined a new company and started developing Java server-side with a few years experience with java from University.
After 3 years of building and maintaining a mission-critical Java backend, I would never do it again... We were using a similar framework, called dropwizard, great product, super lean and reliable.
If you think Rails is magic, then you haven't seen the Java world, all the magic with annotations, dependency injection, glueing libraries together by placing some files in a folder.
If you think Rails 2.3 to 3.0 upgrade was dramatic, then what we went through with a minor update from dropwizard (i think 0.7 to 0.8) was a nightmareish 1-2 months of rewriting half of the code and dependency injection handling.
Java is still super verbose, not just the language itself, but also all the libraries that are often over-engineered.
Hibernate is quiet easy to get started and you don't understand what all the fuss is about. But once you go start adding features it quickly becomes unmaintainable and any change to the models comes with FUD whether that'll make the queries explode in an unpredictable manner.
There's a lot of libraries, but on UI/UX level you don't have anything close to what Rails offers out of the box. Things you take for granted don't exist, like devise.
The good parts were: Rails deployments are from the stone-age compared to dropwizards simple approach of installing java and copying the self-running jar (fat binary) to server and start. Very good instrumentation/metrics out of the box with joda-metrics.
After 3 years, a pivot required us to rewrite large parts of the logic. We took that as a chance to rewrite/migrate all our services to Elixir/Phoenix. And never looked back.
So far Elixir/Phoenix/Ecto to me is the perfect middle ground between a solid Java environment and the speed of development of Rails.
- JanSt 9y agoI tend not to agree with most of your points, but it may be a matter of taste. I actually like Java (but I also see quite some overengineering in some places). > all the magic with annotations ... which are basically just decorators > dependency injection ... which is quite useful for loose-coupling and injecting different implementations (and you don't have to use it) > glueing libraries together by placing some files in a folder .... what? Never done that ;-) > Java is still super verbose, not just the language itself I don't see that. It's actually quite nice for my taste. I guess you don't like generics, but then you have to live without them, which also sucks. > There's a lot of libraries, but on UI/UX level you don't have anything close to what Rails offers out of the box. What do you mean exactly? There are things like thymeleaf if you want SSR, otherwise you can put whatever SPA in front of it. > things you take for granted don't exist, like devise. .. it's not hard to use Spring Security though >Elixir/Phoenix/Ecto" - is there some devise like auth by now? I also like Elixir/Phoenix quite a lot, but it's nowhere near Rails/Springs level.
- pmontra 9y ago> Elixir/Phoenix/Ecto" - is there some devise like auth by now? Coherence https://github.com/smpallen99/coherence https://github.com/smpallen99/coherence
- slow_donkey 9y agoI use dropwizard but I would never consider it (or any java framework) for UI related work. Kinda curious why there was such a big migration conisdering dw is mostly just a combination of packages.
- copperx 9y agoWhat do you mean by UI related work?
- humbleMouse 9y agoYou can't compare java to rails like this. Java is a server side language - rails is a web-dev library written in Ruby. All the things you are complaining about have been abstracted away by many recent java and groovy libraries. You are literally comparing some random company using a random java framework 4 years ago to modern ruby on rails. The comparison just doesn't work. You can make java as simple as you want or as complex as you want. Modern tools like spring boot and groovy make it VERY easy to make java simple.