Two months after diving in with GWT I would characterize my experience as mostly positive. The Java to Javascript translation is amazing. I have yet to trip up the compiler, even when using complex combinations of generics, anonymous inner classes, etc. This is an impressive feat of engineering. The ability to trivially create rich desktop-like UIs is fantastic. Many thanks to Google for making an entirely new approach to web application programming available to the public. They could have easily kept this internal as a powerful secret weapon. That being said, there is some roughness around the edges. GWT's widgets are very basic so many people use another library called
Ext GWT on top of it. Ext GWT, not to be confused with
GWT Ext, is also referred to as GXT. Confused yet? We sure were when we first started researching these libraries. The primary difference is that GWT Ext provides thin GWT wrappers around JavaScript components while GXT is written 99% in Java. They share the popular Ext JS library's CSS and image assets. The GXT Java code is translated to JavaScript by the GWT compiler. I've talked to several developers that went down the GWT Ext rabbit hole first because they have much nicer looking examples. Invariably they find the opaqueness frustrating and jump ship to GXT. Ext JS, makers of GXT, do a poor job of marketing the fundamental differences between the libraries. This, coupled with the naming mess, leads to a lot of confusion. GXT has some very nice high level components (grids, portals, etc.) Their components look great, and work well on all the major browsers, but GXT's design doesn't lend itself to easy extension. For example, many members are private that should be part of the public API. Most of the basic component classes do a ton of configuration in the default constructor making it impossible to customize the behavior. For example, they attach listeners in the constructor instead of calling out to a protected configureListeners method. Often there is no way to undo this because you can't enumerate all the listeners. This forces you to copy large blocks of code for no good reason. Finally, many of the APIs have confusing or bizarre names. Want to line up widgets vertically? Use the RowLayout. GWT is an awesome foundation, but most non-trivial applications require use of a library such as GXT or GWT Ext on top of GWT to provide things like nice grids. These libraries just aren't as evolved as frameworks such as Swing, WPF or Flex. This leaves you with the option of creating your own high level components on top of GWT or dealing with immature higher level libraries. In two years GWT is going to be fantastic. I'd put money on it. Right now its very good, but you have to be willing to deal with the pain points.
Ikayzo - Design • Build • Localize | Web • Desktop • Mobile
You need to be a member of TechHui to add comments!
Join TechHui