Here’s some statistical analysis as to popularity of recent web technologies in Java. By comparing the searches performed between Struts 2, JSF, Spring MVC and JBoss Seam using Google Trends, it appears that Struts 2 is gaining traction among Java developers while JSF started to lose ground since mid-2007. Searches for Spring MVC and JBoss Seam are increasing but at a slow pace.

On the other hand, jQuery is becoming popular amount Ajax Frameworks. YUI, Dojo and Prototype are roughly equal and jQuery has dramatically surpassed all other frameworks since early this year.

If you’re interested how the graph were generated, try the links below:

Struts 2 vs. JSF vs. JBoss Seam vs. Spring MVC

YUI vs. Prototype vs. JQuery vs. Dojo


UPDATE [2008-09-13]

Here’s an updated graph on Java technologies as commented below.

For the past two months, we have been having our weekly T3 (Tuesday Tech Talk) sessions. It’s a 30-minute discussion about any technical topic the presenter would like to discuss. Presenters are randomly selected from the development group.

So far, we have received nothing but benefits from this activity. Here are some of its benefits and advantages:

  1. The presenters get an opportunity to talk, express themselves and practice their presentation skills. More importantly, they steer away from the developer mindset for a while, get out of their shells, and think of good topics to discuss.
  2. The attendees learn something new. Everybody seems to know something others don’t.
  3. Everyone begins to understand the specialization and span of knowledge of their colleagues. In this way, it becomes easier to know who to ask regarding particular topics. Subsequently, the developers become experts and specialists in their own way.
  4. This builds camaraderie within the team. Everyone relaxes and opens up their minds for new knowledge.
  5. The topics discussed are usually not something we do or use in our daily routine at work. So, everyone gets to learn more than the usual stuff.
  6. Everyone realizes the things that they do not know and starts to seek for more information about it.
  7. The organization strengthens its corporate IQ as people share their ideas and knowledge with each other.
  8. After a couple of sessions, everyone began appreciating the activity and now looks forward for new things to learn.
Here are some of the topics we have discussed so far:
  • Tips on improving website performance (as recommended by Yahoo Exceptional Performance)
  • Programing with Grails
  • Reverse Ajax via DWR
  • jMaki
  • Integration testing with TestNG
  • Image Manipulation / Photo retouching
  • Javascript Programming
In the end, I believe the concept of T3 sessions is very much aligned with our core values - Leadership, Execution, Agility and Passion.

As recommended by Yahoo on YSlow - tip #1: Make fewer HTTP request and tip #10: Minify javascript- we aim to implement these tips on all our projects with minimal head-ache. While these recommendations are truly useful, implementing them can be quite tedious and challenging. Consider having to maintain multiple min versions of the javascript and the files that links to them! So to alleviate the problem, we created a tool called low-tides (as part of open-tides) that helps automate the merging and minification of css and js files.

So what is the rationale behind the the tool?

  • Maintenance of minified js and css is a nightmare. Keeping separate js and css files for development and production can be very confusing. Some developers might change the production version without syncing with the development version. So eventually, changes to different files becomes a mess — Which one has the latest code?
  • Maintenance of html files that links to proper javascript and css is another problem. Since minified versions are likely to have different filename (e.g. basic-min.js), html codes that reference the scripts need to be changed. This leads to having multiple copies of html files… again.
  • Versioning of html, css, and js files introduce a whole new set of configuration items. Imagine bullets #1 and #2 getting multiplied across a number of version releases!
  • At the time of this writing, there are no tools available that can merge multiple javascripts. The development version of javascript needs to be logically separated while the production version needs to be merged (for lesser http request). Moreover, merging javascript is not straightforward. Some javascripts need to be pre-loaded while others can be postponed.

I suppose by now you get the picture. The solution we propose to this configuration problem is simple:  Always change from the development version and have a deployment script automatically create the production version. As such, files are always maintained from the development version - but the key to this approach is to ensure that the script for creating production versions is quick and easy-to-use.

Now here comes Low-tides. Low-tides is a Java-based program that automatically analyzes html files for javascript and css includes. It will merge includes that are in sequence into a single file and minify it. In summary, it automatically solves all the problems mentioned above.

You can download it here: http://code.google.com/p/open-tides/downloads/list

Usage instructions are available here: http://code.google.com/p/open-tides/wiki/LowTides