Ask HN: For new web developer, Java Spring, Ruby on Rails, or something else?
So I wanted to finally take action on some of my ideas and build the website for one of them. I decided to use Heroku since I've heard great things about it. I like how it handles all of the server management and allows me to just code. Being an experienced Java guy, I decided to build from their Spring sample app. Unfortunately, this was pretty tricky. Having never used Spring, I started searching online for tutorials. Most of them are either outdated or are too confusing. Despite that, I was able to hack up a little something, but at this point, I'm not sure if I should keep going with Spring. I know some Ruby, and can definitely brush up on it if Rails is the way to go, but I've heard many people complain about performance and scalability on Rails.
So my question is this: Should I continue with Spring, or switch to RoR or some other web framework? Unless you think you will face scale issues comparable to those of Twitter or Github, I am not sure whats stopping you from using Rails. In fact, the amount of information about how to scale Rails (The latest I have read is from the guys at Goodfil.ms) makes your task ahead almost trivial. Having said all this, I worked professionally with Spring and I do personal stuff with Rails, and Rails is a lot more fun. You don't really specify what you want to achieve -- a "website" can be many things. If you know a little Ruby and like working with it, I don't see why you wouldn't go with RoR. If you want to stay a little closer to Java, you might want to check out Grails: And while I think Heroku looks fantastic, I'm personally leaning towards http://appfog.com/ for the projects I plan to be toying with "in the cloud" -- I feel their pricing model (especially their "free" tier) makes more sense. But you should of course choose what is a good fit for your needs. If you're really comfortable with Java, and you want to get something out of the door, it may not be the best choice to switch languages (as would be the case for rails). If you already know ruby, then go rails by all means. Instead, you might consider a of Java-rooted option: The play framework is pretty slick (http://www.playframework.org). The APIs are fairly light and easy to pick up, and the templating system is rather powerful. The documentation is solid, and it's not like you'll need to spend hours in tutorials to get started Play does both Java and Scala, and works fine with either. I'd actually recommend you stick to Play 1.x, as the 2.x docs and stuff aren't as mature and are much more targeted to Scala developers. Oh, and heroku loves play. https://devcenter.heroku.com/articles/play I was a Java guy too just prior to going into web development and coincidentally I too encountered the same problem as you did. I tried Django and quite a few Java frameworks but ultimately settled on using node.js because I found it to be the lowest point of entry by far. Have a look at Play! and Scala: http://www.jamesward.com/category/play-framework/ Spring and Java EE will make you hate life and those who participate in it. Java alone is a great language, and I've heard great things about Wicket, http://en.wikipedia.org/wiki/Apache_Wicket . I personally like GWT but no one seems to use it and even less seem to use it professionally. I too have exactly the same situtation. I haven't decided, but moving towards RoR. Comparing to node.js RoR is kind of stable to me. In node.js, still there are lot of changes and it hasn't hit 1.0. I am planning to go with client heavy using Angular.js and backend with RoR. I am also starting with mobile first. Despite the hate that this comment is sure to ensue:
Why not node.js? I know very little Javascript, and from my attempts to code a bit of it, I wasn't too pleased. Maybe I just didn't understand it very well, and that put me off. Since you're starting out I recommend something that is newer than Spring but still old enough to have plenty of documentation online. Rails would be suitable.
If you're actually just writing a website, not a web app (however that distinction is made these days), something like Ruby and Sinatra might be a better fit: http://www.grails.org/
https://devcenter.heroku.com/articles/grails
And if you want something completely different, you might have a look at web2py (on Heroku you would have to deploy that as a python wsgi app). http://www.sinatrarb.com/
https://devcenter.heroku.com/articles/rack