Archive for the 'Review' Category

Flex. The Good and the Bad

Over the last two years, I’ve had the opportunity to build up relative expertise in Adobe’s Flex framework.  I’ve mostly been working on flex’s middle tier, tying the flex client to our JEE backend.  It’s been a pretty crazy journey and i’ve learned a lot along the way.  This post is a long overdue review of my impressions about the Good and the Bad with Flex.  I hope it is useful to someone making the choice to use this technology

The Good

  • Looks good with little effort.  Looks amazing with more effort.  Out of the box UI controls that look good and just work
  • Actionscript.  The flexibility of Javascript with a typesystem that works when you need it and gets out of your way when you don’t
  • Powerful, efficient remoting with BlazeDS

The Bad

  • Binding, especially initialization of it, generally only works well for the simplest cases.  As you create more abstraction and complexity in your models, I have generally found that binding becomes a royal pain
  • It is very easy to bloat your SWF with images, resources, and other misc things that create a subobtimal initial load time.  You can fix this problem, but, in the beginning it was too easy to do things the ‘wrong’ way
  • The designer in Flex Builder is bordering on completely useless.  I find that it really only works in the simplest cases.  As soon as you have a complex, dynamic UI, the designer is done.  Not that this is all bad of course.  I have a quite positive impression of Flex Builder as a whole.


On the whole, i must say that i have really enjoyed learning and working with flex.  The ultimate question of course is:  “Would i use it again?”  I’m not sure.  Like all things, it depends on the project.  My current project is attempting to do an entire application in one SWF.  I’m not sure i would do that again.  I would, however, like to take the approach of injecting some flex here and there in an otherwise ‘standard’ web app.  Using the JS bridge that comes with flex, I think you could build some very cool experiences that are both fast for the user but also rich in content.