Well, I have done a lot of reading this week.
I also feel like some of the dust has cleared from my Java muscles and bones.
First impression is, it is remarkable how ActionScript3 and Java are similar thanks to the EcmaScript standard. The transition from AS3 to Java is just as easy as the transition I did 4 years ago from Java to AS3, in terms of syntax at least.
One noteable and very important difference between Flex and GWT is, that GWT does not have the “asynchronous creation process” that Flex has. There’s no createChildren or commitProperties to worry about. You instanciate an instance and bang, it’s there ready for you to work with since it’s just being appended to the DOM.
Another thing, which is very important to me, is the ability to use all those little things I missed when coding in AS3, abstract class and generics framework to name but a few. Sure, AS3 does support OO design and architecture and does a very good job, but still it lacks a few things that Java already has.
Those of you who are Flex developers, and are familiar with Flex 4.x SDK, know that the big news that came with 4.x SDKs are the Spark framework and the skins mechanism it introduced. Well, I was very happy to discover that GWT has something quite similar.
First, like MXML to Flex, GWT has something called uiBinder, which allows to define ui in a declarative way in xml files.
Second, when combined with MVP (a Model-View-Presenter framework native to GWT similar to MVC) uiBinder supports replacing xml files so essentially the same component with business logic can have several different ui skins to be replaced as needed, much like the skins in Flex.
Also, I found it refreshing to see that GWT has a very active community, just like Flex does. There are many open source frameworks and extensions out there.
Currently, my intensions for the project I am involved in, are to use vanilla GWT and MVP framework with uiBinder. In terms of extensions I think I’ll use gwt-dispatch for the command pattern, gwt-log for client side logging and some ready made components from GXT and gwt-examples.
I’d love to hear your opinion and/or suggestions! 🙂