BetterBob
16 Feb 2011, 3:14 PM
I'm new to GXT, and overall I like it, but I've found four recurring flaws that are bugging the heck out of me, and would be (at least in some cases) very easy to fix.
The first is the deplorable lack of documentation. The GXT examples are incomplete, and often too complex (introducing unnecessary complications that must be extricated from the heart of the matter). The GXT documentation itself looks like someone worked on it for a day, then got reassigned to another project. Using an intricate product with almost no good explanation, examples or details is a nightmare for any developer.
The second is that may features don't work quite right, and aren't easily corrected. For example, it is not a trivial thing (in fact, it's nearly impossible) to add animation to a dialog box (a simple fade in/out when logging in/out, for example). Basically, one has to completely re-implement the Dialog class from the bottom up to add animation.
The third is that when one wants to extend a GXT "base" class (like Window or Dialog) to improve the behavior, doing so can be flat out impossible because too many fields are scoped private instead of protected, or don't have a full set of getters and setters, so one can't properly override methods that directly reference those fields or methods.
The fourth is that, even though the source code is available to completely re-implement some of these classes (with the fields properly made protected instead of private), one still runs into issues with other classes that explicitly reference the "unruly" classes (for example, the WindowManager and Window classes). WindowManager really should have been implemented using a ManagedWindow Interface, rather than directly referencing the Window class. This would have allowed any well behaved ManagedWindow implementation to join the party, rather than just GXT Window objects as defined by/extended from GXT.
All in all it's a good product, and it's helping me to quickly produce a better result than pure GWT alone would, but the whole point of libraries like this, and Java in general, is to make things easily extensible. I wouldn't at all classify GXT as easily extensible.
The first is the deplorable lack of documentation. The GXT examples are incomplete, and often too complex (introducing unnecessary complications that must be extricated from the heart of the matter). The GXT documentation itself looks like someone worked on it for a day, then got reassigned to another project. Using an intricate product with almost no good explanation, examples or details is a nightmare for any developer.
The second is that may features don't work quite right, and aren't easily corrected. For example, it is not a trivial thing (in fact, it's nearly impossible) to add animation to a dialog box (a simple fade in/out when logging in/out, for example). Basically, one has to completely re-implement the Dialog class from the bottom up to add animation.
The third is that when one wants to extend a GXT "base" class (like Window or Dialog) to improve the behavior, doing so can be flat out impossible because too many fields are scoped private instead of protected, or don't have a full set of getters and setters, so one can't properly override methods that directly reference those fields or methods.
The fourth is that, even though the source code is available to completely re-implement some of these classes (with the fields properly made protected instead of private), one still runs into issues with other classes that explicitly reference the "unruly" classes (for example, the WindowManager and Window classes). WindowManager really should have been implemented using a ManagedWindow Interface, rather than directly referencing the Window class. This would have allowed any well behaved ManagedWindow implementation to join the party, rather than just GXT Window objects as defined by/extended from GXT.
All in all it's a good product, and it's helping me to quickly produce a better result than pure GWT alone would, but the whole point of libraries like this, and Java in general, is to make things easily extensible. I wouldn't at all classify GXT as easily extensible.