Here's my new project: an open canvas, right in front of me. In a few days, I will start to code a big web application. It will start small, with few modules, only myself as developer and engineer, but hopefully it will grow and grow.
Even though I am an active Java Developer, It's been a while since I last created a Web Application from scratch. At the time, Struts and J2EE was the way to go, but I see a lot of new frameworks, new libraries raising everyday.
What I ask here is for your advice: what do you currently use for web development, why do you think it's relevant and if you would choose the same tools if you were starting on a new project. Everything counts: from tips on the UI to the backend. Common gotchas, patterns, everything you can think may be relevant.
I am a Java developer and, I am naturally inclined to do everything using Java-related technologies (J2SE, J2EE, Groovy, Grails, JRuby, Jython, JWhatever, and so on...), but please be welcome to post whatever you use, being related to Java or not.
My goal here is to build a bucket of what people are doing and why they are doing to help me evaluate which way should I go, and which I shouldn't - and why. After all, it's not everyday that you have such freedom to decide.
Thanks in advance!
I've been using TurboGears lately and absolutely love it. It competes with Django and Ruby On Rails for rapid development, but has a more flexible backend. That is, it's more of a collection of best-of-breed components that have been made to play well together than a single monolithic framework. You can easily swap out the object relational mapper if you need to, or replace the page templating language with something else without rewriting your entire application.
The real "where have you been all my life?" moment came when I spend about two minutes adding an AJAX autocomplete field to a form. I had to write a function to answer the AJAX requests and add a new field that called that function, and it worked perfectly the first time. I'd always wanted to play with AJAX but was a bit intimidated, and my first experience with it could not have been easier.
It has a 20 minute tutorial to make a functional wiki. Even if you don't think you'll be using it, read it or watch it and see how easy such a thing can be.
I use Ramaze, a beautiful Ruby web framework. Couple that with M4DBI, a Ruby ORM built on top of Ruby DBI. For JS work, jQuery wherever possible (I avoid plain JS like the plague!). PostgreSQL is my choice of database.
I have experience with Rails, mod_ruby, JDBC, ODBC, PHP, and "plain" sites (HTML, CSS, JS), but I am quite happy with the above-listed software for my web app stack.
I believe Ramaze can run under JRuby.
Stripes is an awesome framework because it lets you build your application quickly and easily, without maintaining configuration files. Typically, you create an action bean (a simple Java class) to do the work and a JSP to display the results. You add validation with annotations. You get built-in type conversion for most common types, and can easily write your own type converters. Interceptors give you a simple way to address crosscutting concerns. In short, I find that it's one of the most simple, intuitive, consistent, powerful and flexible frameworks out there.
For the rest of your stack, it's really up to you. It's easy to integrate Spring, Hibernate, JPA, AJAX, security, unit testing, etc. with Stripes. If you'd like to see some sample code that demonstrates all of this, get the code bundle for the Stripes book and open the index.html file for a list of all the examples. That way, you can get an idea of what a Stripes application looks like.
Best of luck in your project!
lift because it's an oppertunity to code in Scala
I find Google App Engine really comfortable (Python as server language, Google Datastore as db, many ready-to-use objects, such as memcache, user APIs, etc.).
I currently work with ASP.NET MVC and I'm going to switch my professional development efforts to it in the coming months. I had contact with many languages and web frameworks over the past decade. C# is a very mature and powerful language, and the asp.net mvc framework just seems to click with me. I will continue to use jquery as my main javascript library. I will also continue to play with python / django and other solutions in my spare time.
I just like c# so that's probably the reason why I chose asp.net mvc over other solutions.
Seems like MS finally came up with something decent (considering the asp.net web forms mess... quite a feat)