Adobe Flex 2.01 is a very good framework and it is so much better than practically any other web-based UI framework in existence today, but there are so many bugs in the code and so many restrictions that are very difficult to get around I’m locked into a love and hate relationship with it.
I’m using Flex for the reference implementation of jSeamless and it is going quite well over-all, but I’m finding myself re-writing component after component because of either bugs or lack of features. The good thing about this though is that the entire Flex source code is available within the SDK, so I can see exactly what they are doing and how they are restricting me or causing bugs to occur.
My single biggest complaint about Flex is their complete lack of threading “support”. That is not to say it is single-threaded. Quite the contrary. Everything is asynchronous in Flex, but thread-safety is an unknown term to the Flex team I believe. There is no way to synchronize, lock, or maintain good concurrency in the system and many a crash has been due to this. In jSeamless I have a full system I wrote to offer some concept of synchronization and though extremely limited because of ActionScript 3 support not being there, it works pretty well.
I’m about to completely re-write the way Effects are called in the Flex implementation of jSeamless because it is causing errors to occur and also offers no way of disabling effects. I’m a Java developer and writing in ActionScript 3 is really not my idea of a good time, so every line of code increases my frustration.
On the bright side, jSeamless has far exceeded the capabilities of what Flex can do because of its “flexibility” and for that I’m extremely thankful.