Is Ext-GWT still a nightmare? - gwt

Just got back reading a question from 2 years ago here.
From there and several other places on the internet i concluded that developing with Ext-GWT was sucky.
My question is, with the release of GXT 3, whether it is still the condition now?

I have several GXT applications, one of which is ~35K lines. Have not found any of the problems other people mention.
I was doing straight ExtJs/JavaScript, then moved to GWT with the advent of GWT-EXT and later moved to Ext-GWT (GXT). I would still be doing ExtJs/JavaScript today if it were not for those two toolkits.
Performance issues: non issue on modern browsers. on IE6/7, you want to use common sense, displaying 1000 rows in a grid is not the best idea, from a performance and usability standpoint.

GXT is still crappy. We've been using it and although it provides some nice widgets it takes forever to write any business code. Most of our time is spent trying to get GXT to do the things we want. For example, using RPC is painfull because you have to keep converting from JPA entity beans to ModelData object (or some other object that can be serialized over RPC), Also there are inconsistances such as if you want to use the FormBinding object (which automatically maps between form elements and ModelData), then you can't use FieldSets which are really useful. FormBinding will only work with FormPanels and not FieldSets.
Also if you want to use the FileUploadField object you can't test it in Dev mode because of the post URL.
Basically, if you want to add 40% more time to your development fine. But otherwise go with a normal JavaScript framework.

We have been using GXT 2.x in the last one year while we built 3 projects with GXT.
Other than the lack of a WYSIWYG UI designer which makes the UI designing relatively slow compared to other frameworks, it is still IMO the best widgets library built on top of GWT.
So far we have not encountered any major issues with GXT.

A good performance comparision can be found here: http://gxtvsgwt.appspot.com/

In our current project we have been using Ext-GWT 2 for about a year without any major complaint. It's sometimes a bit buggy but generally works.

We used GXT 2.1.x for a year without any major problems. recently, we updated to GXT 2.2.4 and just needed minor changes in our code, but they weren't because of GXT, but due to the upgrade to GWT 2.3.0
Personally, i like coding with GXT. I can't see why someone would say GXT development is sucky, except for the already mentioned performance issues and the lack of a UI Designer.
I don't know any other GWT-based framework with so much features.

Related

GWT Future plan

We have multiple product developed primarily using GWT and currently used by our end customers.
Wanted to know the road map of GWT. I got some unofficial update that google is moving there product which is developed in GWT to some other new technology. Is it true?
What is long term plan for GWT and also we haven't seen any new release from past one year. Any suggestions ?
In my opinion the GWT project is dead. The last stable version was released on Oct 19, 2017. As opposed to the other answer I would like to point out that the Google Trends score is relative to the highest point on the chart for the given region and time. Since we are particularly interested in the long term chart it doesn't make sense to analyze the short time chart.
Let's instead have a look at the long term trends. The chart pretty much says it all - the project is facing a massive decline:
Stackoverflow Trends
Google Trends
This is what increased interest would look like:
Example: Google Trends for Angular
I have worked over GWT and GXT for some time now, and as a developer I can say that - GWT/GXT based application are fast for UI development once the layout is done , and they are easy to debug also, there are so many libraries available - which are compatible with gwt and are free also , well there may not be that much of future release in gwt/gxt - but i think the versions of gwt/gxt which are available are powerful enough to develop a complete web application easily.
By the google trends , what I have got for GWT is as below -
and for GXT
If you see the trend for GWT and GXT near by end of 2018 - it has been increased a bit
If you dig into stack-overflow - you will get ton of questions and response around GWT and GXT
GWT questions
GXT questions
so i think - if you have team of good developers - who already have knowledge on GWT / GXT - you can go ahead -
All the best :)
As a I was always fond of GWT - i kept following for updates in between and here you go, new release of GWT is here
[GWT release-notes][5]
2.10.0 June 9, 2022
We are using GWT in an embedded product for some years now with a small team of developers and I find it a plus that GWT is not rapidly developing, opposed to Angular. I am not so familiar with Angular (some other teams are using it), but what I hear from colleagues is that just maintaining the status quo (i.e. having all libraries reasonably up to date) is in it self a lot of work. We do not have the resources for this kind of software maintenance.
How are others experiences on this, has anyone moved from GWT to Angular with a small team and how are the experiences (from a resource point of view) to that?
It is 2020. I don't know whether someone is still looking for an answer to this question.
At this point of time, GWT is not a prudent decision for any new project. There are 2 primary reasons.
Google tries to distant itself from Java as far as it can. Google prefers Kotlin over Java in Android.
2.Angular is far superior in every way. It provides type safety. and closely related to JavaScript. Any JavaScript code is a really typescript code. So the libraries that were created for JavaScript over the decade works seamlessly with Angular.
This is not a direct answer. Just thinking aloud.. perhaps..
But I've seen Vaadin (vaadin.com) using GWT (gwtproject.org) in the past and now changing to Polymer (polymer-project.org) in the recent years.
Can't deny the value GWT brings in through type-safety. So the question perhaps can rephrase to what alternatives developers have without re-writing the whole solution to support a new model/paradigm of a completely new framework.
If there is a way to overcome the slow compilation on GWT, it's still a great idea and a product, and will be for a long time. So worth finding an answer to the question I believe.. ??
Having said that, I wonder if Google still use GWT for Gmail and AdWords? :-) (Or the new interfaces meaning they've already crossed to the Polymer world!
We have a medium size project based on GWT in our company; It's a mature software, with more than 100,000 users and has performed well so far. However, GWT technology seems to become obsolete and I personally see no bright future for it, in competition with brand-new client-side rivals such as Angular. GWT had another minor release (2.9.0) several months ago, but it does not mean that project is still active and promising. I have had a relatively good experience using GWT so far and our clients get used to it as well, but the problem is that you might wake up someday and find out that a new version of Chrome or Firefox is released that no longer supports GWT mutations. Knowing that we gradually started migrating our client code to Angular which is of course very similar to GWT in the soul (Both are complete UI Frameworks; GWT transforms java to JS, while Angular does the same with TypeScript; both projects are supported by Google, and there are lots of widgets for both available out there).
I suggest that, despite all its costs, moving from GWT to another more up-to-date technology is inevitable and crucial IF the remaining of your software's lifetime is more than one or two years.
There has been a new GWT release version 2.9.0 on 2020-05-13.
For GXT (currently at version 4.0.3 from 2018-03-16), vendor Sencha just announced an early adopter commercial release 4.0.4 in either Q3 or Q4 of 2020, but that release is probably only working with GWT 2.8.2.
Unfortunately there's no public roadmap from Sencha to support GWT 2.9.0 yet.

Best suite for GWT widgets

I am looking to build a GWT based web application. Being new to GWT, am looking for suites that provide the best GWT widgets (in terms of user experience, variety, styles, etc.), to help build a web app.
I have come across SmartGWT, but looking for other options/suggestions.
Thanks in advance!
I've done apps in both GWT and SmartGWT. My observations, for what it's worth:
SmartGWT has all sorts of cool features, out of the box. It's easy to be seduced by the SmartGWT showcase.
GWT is converging on SmartGWT, and quickly. For instance, the new DataGrid
can stand up against the SmartGWT ListGrid and come away looking good.
In order for GWT to look good though, there has to be real skill in the
developer. SmartGWT can make anyone look good, it seems, but to make
GWT shine takes skill.
Once you have that level of skill, though, there's no looking back.
GWT seems to me to be much more flexible, a consequence of the building-block approach. SmartGWT is more monolithic.
SmartGWT's design has some portability issues. I successfully took a pure GWT app I made and re-worked it (minimal effort) to run nicely in a BlackBerry PlayBook browser. I took a
SmartGWT app I had made at about the same time, and half the widgets
didn't work.
For an enterprise level solution I'm working on, I'm using pure GWT and I don't regret having made that choice.
I would suggest using standard gwt widgets. Simply because,
1)they are best documented,
2)they are highly customizable via css
3)from what I observe they provide the best performance
4)you dont need to learn a whole new framework built on top of another framework
but if you insist on using a framework then I suggest you take a look at this question
My advice to you is to consider your needs. Plain GWT and SmartGWT both are the best supported, so you need not look for more (unless of course both fail in what you want).
Go to their respective showcases and see what they offer and how it fits your requirements.
If gwt satisfies all your UI requirements, my advice is to choose it over SmartGWT. gwt beats SmartGWT in learning curve and documentation anytime. Also its faster(my opinion). If gwt doesn't satisfy your needs and SmartGWT does, then you should consider making the switch.
I have a year experience in smartGWT, when we started our first gwt lessons, they said use the basic gwt features and build own framework otherwise we can encounter errors which may lead to dead-ends. We considered the idea, but for the project (since we already had deadline) decided to look after some extension of gwt. We found smartGWT. The showcase was really convincing. Remember these are widgets, the basic logic of your system is still up to you.
In case if you start using smartGWT: If you don't use JSON but some normal list of java structures prepare to get hard hours/days to get use to datasources, grids, and few other components. Seriously, it had ridiculous problems (for example switching two configuration code line without reason makes work the listgrid), BUT before you drop the entire idea to use it, after a while it starts to work, and it becomes really impressive and comfortable. This is a kind of work "make it once, will work hundreds of times".
In my opinion:
don't start use smartGWT if you want to make a system which is not too complicated.
start use it if you need complicated system with lot of different features, if you don't have the time to develop everything for yourself: many components are ready in smartGWT.

Which web application framework? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
From the following list of frameworks, which one would you use to develop a rich web application and why would you choose it over the others?
Sproutcore
GWT
ExtJS
GXT
SmartGWT
Dojo / Dijit
Flex
Capuccino
Grails
I'm personally tired of browser inconsistencies. If someone else has solved the problem, I'd rather not do it again. That's why I'm getting more interested in front ends like cappuccino and qooxdoo. They are a zero-HTML zero-CSS solution.
These are based on my personal experiences using the frameworks you have mentioned. So yes, it is a bit biased. So as others have said over and over again, define your requirements and which one do you think fits your requirement based on what people have suggested here.
GWT is too verbose eventhough I found many Java developers love GWT because you can unit test it and it's all in Java. But I personally don't like it because it is far from being simple. There are times when I feel I can tweak a little bit with Javascript, but with GWT I am enforced to do it with several lines of Java code.
GXT is too far from GWT these days and you will find it difficult to do things as GXT has its own way of doing things which is way too different from GWT. When complex requirement come up, in the end you are going to go back doing plain GWT. And oh, their technical support is not that good either as I had several bad experiences when asking few questions to them.
Ext-JS is good for simple stuff and the look and feel is really slick. But when things gets more complex, you are going to fight you're way through. Eventhough I have dealt with the GXT tech support, I haven't dealt with the ExtJS tech support since they have different people eventhough it's in one company, so I can't say much.
Flex is nice, really nice. But again it is good for simple stuff. Once things gets more complicated you are going to write lots of actionscript, which is less enjoyable. There are many things that is available out of the box which may be to difficult if you have to code it in Javascript, like multimedia support. And oh, if you are writing for a public website you must consider that not too many user has flash plugin on their browser.
Grails, I'm not sure how you would implement RIA apps with Grails since Grails is just another MVC framework which you need to add your own RIA framework on top of it such as the ones that you have mentioned.
This is strictly a matter of opinion. You will not get any definitive answers from anyone, since anyone that answers will have one or another that they personally prefer.
Try each one for long enough to decide which one is best for your (or your team's) purposes.
That being said, I prefer GWT. Others will invariably disagree with me.
Reasons that I like GWT:
You can share (some) client- and server-side code (as long as your server is written in Java)
GWT makes a lot of advanced performance features really easy (e.g., deferred JS loading, image spriting, CSS obfuscation)
A focus on one-page apps, with third-party support for Places (using the gwt-presenter library)
It's just as easy to add GWT to an existing web page as it is to create a full one-page GWT app
UiBinder allows you to write your UI using a declarative HTML-like syntax; you're not stuck writing Swing-like UI if you don't want to
Browser incompatibilities are (mostly) taken care of by GWT -- you just write Java code, and GWT compiles it to work on every browser
Things that may make GWT not right for you:
If your server is already written in something besides Java, you will still be able to write your UI in GWT, but you'll lose out on some nice features
Compilation time using GWT is a non-trivial cost -- Development Mode mitigates this a lot, but it's still an issue sometimes
As others have mentioned, GWT can be considered "verbose" compared to simple JavaScript libraries like jQuery or ExtJS
Ext GWT has worked well for my project. The premium support has been good.
However the project is for internal use which has allowed deployment to be restricted to one browser on one OS, and no effort has been made to change the default appearance or behaviour of Ext GWT.
Developing entirely within Java is a key benefit as it helps to keep the project manageable as features are added.
I am currently working on a grail/flex hybrid app that is working a lot better than I expected. I have looked at GWT but there were not a lot of books about it at the time and it seemed to stress the leveraging of Swing-like programming techniques which I have never liked. I agree with the comment about trying them all out. Run hello app they all have and measure how hard or easy it is to modify. Also tool (IDEs, Maven, CI...etc) support can be a big factor as well in terms of being immediately productive.
We are using Grails+ExtJS here. Since we try to make an idiomatic ExtJS application, Grails is not fully utilized, though it still makes sense to use Grails instead of, say, JSP, for the server-side part.
Why ExtJS: Because it's a very rich toolkit for GUI-like web applications. Our job is to replace an old Motif GUI, so this is exactly what we need.
Why Grails: Because it gets the job done easily and quickly. For the communication with the ExtJS part, we need a lot of JSON, and in Grails it's like that:
import foo.bar.FooBar
class FooBarController {
def viewFooBars = {
def list = FooBar.getList(session.userId, params.foo, params.bar)
def result = [resultset: list] as JSON
response.setHeader('Content-disposition', 'filename="json"')
response.contentType = "text/json";
render result
}
}
And that's even two or three lines more than necessary...
Unfortunately the answer will be opinionated, GWT in it's purest form is not an eye-candy. That being said, ExtJs GXT is super hunky dory. One of the major issues I face with evolving frameworks is that they are not absolutely defect free, If I remember correctly, GWT 2.0 was shipped out with missing CSS styles for some of the new layouts. I am trying to trouble shoot an issue in ExtJs/GXT since last 5 days :(, frameworks obfuscate a lot of things. I will go with any framework that is absolutely robust and gives appropriate error messages. I haven't worked with others though.
I'd recommend Dojo.
In addition to the massive infrastructure it provides, Dojo 1.6 is also the first (and only) popular JavaScript Library that can be successfully used with the Closure Compiler's Advanced mode, with all the size, performance and obfuscation benefits attached to it -- other than Google's own Closure Library, that is.
http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t
In other words, a program using Dojo can be 100% obfuscated -- even the library itself.
Compiled code has exactly the same behavior as plain-text code, except that it is much smaller (average 25% over minifiers), runs much faster (especially on mobile devices), and almost impossible to reverse-engineer, even after passing through a beautifier, because the entire code base (including the library) is obfuscated.
Code that is only "minified" (e.g. YUI compressor, Uglify) can be easily reverse-engineered after passing through a beautifier.
ExtJs is great for creating complex web applications. The API provides anything you can imagine in a webapp and its really easy to extend any component after some time.
You can plug it to any backend (we use django or php) and reuse or extend any component in several different applications.
You'll need severals months to feel comfortable with it. IMHO.
That said, the lib is sometimes a bit too slow for simples uis like a website (then you can use ExtCore). But when it comes to webapps this is not an issue.
Im not a java guy so GWT was not an option for me :/
hope this helps

Difference between gwt-ext and ext-gwt

Am I taking crazy pills, or are these two things pretty much identical?
Having spent significant time with both frameworks at this point I would say that they are not "pretty much identical". While they may both use the same graphical assets, the way that they go about getting there is very different and depending on your needs/development style you may find one preferable to the other.
GWT-EXT encapsulates Ext-JS by wrapping the Ext-JS framework which can lead to frustration when attempting to extend functionality because you don't have access to the implementation at a low enough level. However, if you understand Ext-JS and feel like editing the javascript, that's still an option.
EXT-GWT is not a javascript wrapper. As mentioned before, it uses the Ext-JS graphical assets and some of the API's are similar but it is a completely native GWT/Java implementation. This makes extending the functionality a lot easier. Of course, the choice is up to you.
http://roberthanson.blogspot.com/2008/04/gwt-ext-vs-ext-gwt.html
that should answer your question.
Quote:
"For us GWT developers there is a project that wraps the Ext-JS library for GWT, namely GWT-EXT (GWT before Ext). The initial release was in July of 2007, and since then it encapsulates most of the functionality of Ext-JS.
Now just yesterday something happened that could undermine this project. The same team that developed Ext-JS has now released an initial beta of Ext-GWT (Ext before GWT)."

The cons and pros of smartGWT

I'm starting work on a smartGWT project in a few days and I'd like to know what kind of experiences you had. To avoid making this a bashing of smartGWT or GWT or a freestyle discussion, I'm going to provide some pointers for the discussion:
Do you feel that the provided widgets are integrated well? Is there any widget you miss in particular?
Have you encountered any problems when designing your application that were caused by the framework?
Is the datasource integration as usefull as the smartClient team claims?
What methods do you use to make your smartGWT application persistent? e.g. How well do Hibernate and smartGWT play with each other?
Feel free to add anything you feel is worth pointing out.
I guess you already have your answers, but I would like to add a few more comments that may affect your decision:
Pros:
SmartGWT is the most compreensive LGPL GWT-based widgetery library you can find. So if you care for GPL pain, this is your thing
Comprehensive Showcase.
Really good performance (just check the Showcase).
Very active community in the forums.
SmartGWT extensions is another important project. For example, it has support for GWT-RPC based communication, which is not possible only with SmartGWT (unless you implement your own integration).
Rapid pace of development from the SmartGWT guys. Just count the number of releases since the SmartGWT project appeared.
Cons:
Besides the Showcase, I sometimes feel the only way to figure out how something works is by asking in the forums. This leads to a spread knowledge base. A community based wiki would be preferable.
Large amount of static files you have to use with your application (the famous 'sc' directory) which might lead to problems if your back-end is in GAE (because of the 1000 files limit).
We used SmartGWT in our last project (duration: 6 months). The following is my personal opinion:
The widgets are really great! The documentation and API is verbose. We would use client-side again.
The server-side integration works, but did not save any development time. Instead we had a lot of problems where we had to find workarounds. Also, because of the new API, no other developer can maintain the project within investing a lot of time to learn the SmartGWT API.
Some Cons:
You have to learn a totally new API instead of using Hibernate and GWT-RPC or REST.
The data integration is done automatically, that is true. But if you need some (also little) changes, you have to write XML mapping files as with Hibernate or JDO. So the benefit is gone.
The forum support is bad: You get an answer to almost every posted question. But that answer often does not help. They ask you things such as “why do you want to do that”. Or they say: “use our tool and do XYZ with it” three times, although again and again I told them this suggestion does not work. After a few answers to a question the final answer is: “you need training, buy our support”.
The commercial support is way to expensive (costs approximately as much as the SmartGWT license).
We will probably not use the server-side integration of SmartGWT again.
You can read all my "lessons learned" with Pros and Cons at my blog:
http://www.kai-waehner.de/blog/2010/12/11/lessons-learned-smartgwt-2-3-component-library-for-google-web-toolkit-gwt/
Best regards,
Kai Wähner
Do you feel that the provided widgets
are integrated well? Is there any
widget you miss in particular?
You could create any missed widgets, there is no single framework that can provide everything you want. The widgets are pretty extendable.
Is the datasource integration as usefull as the smartClient team claims?
The data (JSON/XML) can be provided by servlet services, and they are understood by the
widgets.
What methods do you use to make your smartGWT application persistent? e.g. How well do
Hibernate and smartGWT play with each other?
In the backend servlet services of GWT, you can persist your data in the store by using any persistent layer in Java. Hibernate can be just used as same as normal java app.
Do you feel that the provided widgets are integrated well? Is there any widget you miss in particular?
Yes. The widgets have a consistent API and work well together.
Is the datasource integration as usefull as the smartClient team claims?
This IMO is one of their strongest feature. Once you start using their Datasource API you realize how little code is required to get a fully functional CRUD screen
What methods do you use to make your smartGWT application persistent? e.g. How well do Hibernate and smartGWT play with each other?
Hibernate works out of the box with the SmartGWT EE version. With the LGPL version using Glead works wells
I think SmartGWT has a ton of great widgets, but but but there is a HUGE price.
Create a simple SmartGWT based project and watch how many files get loaded by your page.
That, I think, is totally against the ideals of something like GWT. While SmartGWT may be a pretty good option for people on a deadline, if you want raw performance, stay away from it.
The number of HTTP requests will simply kill your application.
Have you encountered any problems when designing your application that were caused by the framework?
Yes. When I combined Google Eclipse plugin, SmartGWT, GWT 1.6.4, and Wicket the gwt compiler would emit bad javascript. By bad javascript, I mean javascrip that would not work in webkit, or firefox. I was not able to get good javascript until I removed it completely from the Eclipse project and restarted Eclipse. So, this combination would not work and I ended up building the SmartGWT piece separately in another project. The other issue is that the Smart client seems to want control of the whole page in a css sense. So, the integrated SmartGWT module was all messed up, because styles were not isolated properly. Your mileage may vary.
Personally if you use SmartGWT only and for everything then all will most likely be fine, but if you try and mix it, well my results were disastrous. So, I no longer use it.
Just as a counterpoint to the poster above who mentioned troubles with Wicket, the SmartClient forums (forums.smartclient.com) have reports of success integrating SmartGWT with a wide variety of other technologies. This poster's problems sound like 1) a GWT bug causing bad JavaScript and 2) CSS naming conflicts between SmartGWT and Wicket, probably neither framework's fault. All of SmartGWT's style names can be renamed via the skinning system to resolve any such conflict.