While traditionally a C and Python guy - I've had to use Java a lot over the past few years and have come to like it for various reasons and am thinking of starting a new project/product/service with Java.
I do have a question how people in the rapid development segment (read: startups) architect your application?
Of course I will have a web interface, but I also feel that the web interface is just one interface, and as a whole its not a web application. I see a few options:
- Give into the web app frameworks and develop as war for deployment into a container (or turn it into an executable war)
- Embed Jetty or Tomcat and treat it as a module of my application. I feel this gives me more control over the web server component.
- Take on more overhead.. Develop one project which is the business logic. Then do a separate application that communicates to the back-end somehow.. ZeroMQ, or perhaps REST - but then I'm dealing with a web tier again. But maybe my web tier on my back end service can be simpler in this case.
Thanks for any thoughts.
If you're planning to build the front-end with a lot of JS or Backbone-style interaction, you'll want an API anyway, so you might go with the last method of developing REST endpoints and just accessing them via JSON and Backbone. (This is the approach I'm taking on my most recently project, though Python is the backend, not Java).
Without knowing the scope of the project, whether there are customers, what kind of customers they are, etc., it's a little hard to make an informed decision, however one thing I didn't see was Play[1]. The last Java project I had was done in Play and I found it pretty easy to get up to speed on, and it's designed to act as a web framework. If you're looking for something new to learn, or an easy way to transition from systems development to web work, Play might be a fun transition for you.
[1] - http://www.playframework.org/