views:

154

answers:

2

Our team is new to web application development. We have been developing windows/Linux based applications using Java. The team also has extensive experience with Perl.

The new assignment is to develop an internal private-cloud web application. It is rather confusing looking at all the web application development frameworks: Ruby on Rail, Drupals, Zend Framework, etc. All of them are open source frameworks and all claimed to be the best for rapid web application development. What are the strength and weakness of these frameworks?

For a real-time team collaboration content management web application, which framework is the best?

Since the team has extensive OO application development experience, a OO framework with strong web widget support would be desired. Any recommendation?

A: 

As a Python fan I must recomend one of Python web framework: web2py. It is easy to use, work with many databases and on GAE. Look at slides at their website.

Michał Niklas
A: 

At the end of the day, nobody can actually tell you that one framework is better than another, but my advice for you is to get familiar with the basics and then to take another look on the reviews that you already went through.

Drupal (and Joomla and Wordpress) are all content management PHP based applications. These are complete solutions setups not frameworks. You may find one of them already fitting to your requierments, and with little programming it may turn out to be just what you need. This app galley site for example was built using WordPress, implying what can be done with just tweaking with the code.

Nonetheless, chances are that you'll have to build you app from the ground up. I believe that the best way for you to get started with understanding basic web development concepts will be, in your case as a java developer, to start with a simple Servlet/JSP based application. You will have to learn how to use servlets containers such as Tomcat or Jetty, and you will cope with a relatively easy learning curve. Skip all the old JDBC/SQL techniques that you may encounter in old tutorials, and simply try to understand well the concept of MVC (Model-View-Control) While building the UI, You may encounter with the term JSF, I suggest to skip it also. The common practice these days is to build UI in pure HTML/AJAX/javascript.

Speaking about javascript, JQuery is the most popular among the various framework, but you may consider Prototype instead as it is nicely integrated with Ruby on Rails and CakePHP (will get to them later) For your first app, try to build a simple request-response web app (again, avoid using database at this stage), with some AJAX along the way.

Once you're finished (2-3 days) you will be ready to better decide yourself what framework best fits to your need. In that sense, Java frameworks are IMHO too bloated and archaic, but if you'll get a different idea then Spring is kind of the de-facto in that area. Unless you're planing on building large-scale legacy enterprise application, avoid J2EE/EE5 altogether as they are considered deprecated, at least in my surrounding. Even if it's not acceptable solution, a very good idea will be to take a day to learn Google AppEngine for Java, it is based around an Eclipse plugin and based on Jetty, and at that level, learning it should be effortless. It is a servlet conatiner with some added value. You will learn about ORM concepts (which is practically the way you'll work with databases on any other modern web framework). As a bonus you'll also jump on the cloud-computing bandwagon.

From now on, selecting your ultimate framework will become much easier. At this point, you may prefer to further expertise with Java, or to hook into another well established web stack. If you still insist to continue with Java, have a look on GWT (Google Web Kit was used to build Google Wave). as it will strongly remind you the good old days of the familiar Swing components and layouts. As a cost/effective solution, I think that this is the better choice for your real-time team collaboration content management web application.

However, if saying goodbye to the familiar Java world is what you want, some people will insist that you should decide to jump right ahead to the PHP or the Python frameworks that are currently used by the giants of the web, Facebook, WordPress (PHP), Google and FriendFeed (Python) are some of them. Ruby on Rails can be an option too (Twitter), but its glory days are now over, as many frameworks quickly adopted its core concepts and ideas. For PHP, I recommend CakePHP (Mozilla Add-ons website), it will be an easy transition from the Java stack. Zend is the heavy fella, not your solution if you're short in time, codeigniter/symphony maybe be too lightweight for your requierments, but deserve a review.

For Python, consider the new top notch framework from Facebook (developed by FriendFeed), an home grown easy to learn excellent framework named Tornado. It answers some problem that no other framework does, that may happen to be exactly what you need. You can get it in 5 minutes on their homepage. Turbo-Gear and web.py are also well established setups.

Hope I helped, Good luck.

Sug