Friday, September 5, 2008

Ice Faces

Captain Obvious says this is my first tech blog and the first post on it... so be gentle. I keep a blog that one day I will hand over to my son to explain all of my parenting mistakes decisions, and that is where most of the world knows me from (over HERE). But I actually have a Job as a team lead, and from time to time I want to spout out and my daddy blog just isn't the place.. so this will be the home for that type of crap insight.

Subject: Icefaces
Where are they: HERE
What are they: A sup'd up AJAX JSF framework like no other

On your mark.. get set... GO!
So we just made the jump from struts/tiles/jsp to icefaces/spring/jsf... By we, I mean L-3 Communications Mobile Vision.. whew that's a mouthful! Check us out HERE. And by jump I mean carefully planned and perfectly executed. So what do we do? We sell in-car video systems to your local police. We're the top performer in this market and have been for approximately 25 years. Where does IceFaces come into play? Well about 5 years ago we moved from VHS systems to digital systems.. and in doing so we developed a web application that manages all the digital videos. So why did we make the jump? Well, thankfully our VP of Software Development has some real vision and knows that you have to move to new tech as the old tech dies, otherwise you will be stuck on Old Tech Island.. (very much like the island on that TV show Lost... a lot happens.. but you never go anywhere.... and you'll eventually get tired and stop watching cuz they string your ass along.. but i digress)

So how did our migration go? It had it's bumps, but we knew that if we got into a corner we could pony up and buy enterprise support to kick start things.. Turns out with a couple bruises we were able to do it by just leaning on the forums in under 6 months... One cool note is that we did a stepped migration in that parts of our application remained on Struts while others moved on over, this made for a fantastic phased implementation. The forums are really active and came to the rescue time and time again. As a side note, dead forums should send any developer running for the hills.. just fyi... The framework continues to get a lot of improvements and we have kept with the current release, taking advantage of new features as they emerge (modal pop-ups, etc) anyways, now that we are done, I gotta say I'm truly impressed! It's so much less work dealing with Icefaces components and jsf backing beans vs struts/forms/etc... The fact that it handles tabs so easily was huge for us as we are now able to move tabs all over the place without any real effort. We have big plans for drag and drop as well as some of the other cool components.. but i can't be specific due to NDA's and all...
I love lists... So I'll break it down to a short pro/con list:

Pro's
  • The active forums and optional paid support means you will succeed
  • AJAX push (from server to client(s)) allows for some pretty cool stuff (good bye polling)
  • JSF is in.... Struts is out
  • Super fast coding (hook components via tag libs up to jsp beans and your done)
  • Event model programing without all the hassle of Swing :)
  • AJAX is cool man
  • Server side DOM diff'ing allows for stable DOM updates
  • Phased implementation (although this may not work for everyone, our app was alread well suited for this approach)
Con's
  • Most components need to be in a form, so you will find yourself sticking forms in places you never did before
  • This is still an up and coming framework, so the occasional bug is still a little too often (they are working hard to clean it up)
  • Honestly I'm have trouble coming up with more, I don't want this to sound like a commercial for the framework.. but I am afraid it is turning into just that!

So lets dispence with all the fluff and get right down to a before and after example, I will generisize the names to

protect the innocent:

===BIF (Before IceFaces)===
First lets introduct the players....

We have a Form POJO to act as the FORM object
--------> PersonForm.java

We have the JSP page (or tiles composition)
--------> savePerson.jsp

We have the stuts mapping (we used dispatch pattern)
--------> struts-config.xml

We have the Dispatch action class
--------> PersonDispatchAction.java


=== AIF (After IceFaces)===
Now the Ice players... (sounds cooler.. eh pun intended..)

We have the XHTML page
--------> savePerson.xhtml

We have the faces mapping
--------> faces-config.xml

We have the Backing Bean
--------> PersonBean.java


So the we actually dropped the form objects going to faces... the complexity dropped and we added the ability to be up and running with popup calanders, tabs, sliding menu's, etc (go check out the component demo) in no time flat..

I'd post a demo but their demo's are golden.. if you have any questions, hit the forums.. of course I'd be happy to help as well so post below if you like... In closing.. I give Icefaces two thumbs up.