thanks for response, we have some concerns about browsers
compatibility, nice to hear that it works on FF 3.0 + linux.
Downloads will be available next week - we want to finish windows
installer first. In the mean time you can try to play with My
documents in Personal area ( should register for this though ).
As promised, here are some "lessons learned" description.
We've chosen GWT for client side platform two years ago. This is
really powerful tool which allows to make really fast working ajax
apps. However, for two years we’ve learned some lessons. I hope that
my experience will be useful for someone.
1. Browser compatibility
By idea GWT application automatically supports IE, Firefox, Mozilla,
Safari, and Opera.. Our experience shows that it is true only when
you use basic GWT functionality. We encountered some problems with
browser compatibility and some things surprised me. The best results
were shown, without any doubt, by Internet Explorer. Application works
just like you want. Other browsers, however, may behave not so fine.
Okay, some examples. The biggest disappointment was with setting 100%
height to ScrollPanel. IE works fine and panel takes 100% height of
its parent, independently of ScrollPanel’s content. Firefox behave
differently – it applies to ScrollPanel 100% of its content height. In
other words, you have no way to set height in percents for
ScrollPanel.
There were another minor compatibility issues linked to RichTextArea,
EventListener etc. I’m glad to see that guys from GWT team fix a lot
of issues in each GWT release. However, for any who is developing
complex GWT application I would suggest to test functionality on each
type of browser – especially on Safari and Opera. Unfortunately,
compatibility problems pushed us to drop support for these browsers. .
I hope that we will fix it in further builds.
It seems we're not the only one who meet compatibility problems with
GWT. Another big GWT-based project called BluePrint (http://
blueprint.lombardi.com/index.html) supports IE and Firefox only.
2. Internationalization
GWT has great tool for static internationalization but it has some
disadvantages. General one is that you can’t extend localizations
without recompiling your application. Our goal was to provide
possibility to keep dictionaries in database and allow users to manage
localizations. That’s why it was decided to make kind of dictionaries
and load them from server during session initialization.
There were some doubts concerning speed of dynamic translation, but
we’ve made some tests and found that speed is not a problem if you’re
using HashMap as dictionary container.
3. RPC
Project Kaiser is transferring a lot of structured data, and we were
in doubts which protocol to choose – GTW RPC, JSON or SOAP.
In the beginning we wanted to use SOAP (ha-ha, simple!) for
transferring data. From the first sight – nice solution: there is a
single SOAP interface on server for handling all types of requests.
GWT has XMLParser class, so there is no problem to parse xml
transferred from server. However after some experiments, it was
decided to decline this way for some reasons (slow speed, a lot of
unnecessary code on client). It was found that GWT RPC is much faster
and easier to handle. Nice tool, in general.
4. No Visual IDE
There is still no decent professional visual GWT development tool, and
we code user interface manually. For many people it might be a
problem, and they would prefer other tools (.net) where they can make
application with few pages in ten minutes. I’m not going to compare
these two platforms – they’re completely different. As for me, manual
coding and CSS styles are completely enough; I even think that this
way has some advantages. But probably having nice visual development
tool would attract more developers to GWT.
5. JUnit testing
This is great that we can write tests for GWT code! That’s all I can
say :)
6. UI Components
GWT provides great UI controls library. For most cases it is
completely enough for making user interfaces. The main control that
personally I would prefer to see included into GWT package is
Calendar. I realize that it’s not so easy to implement, but it’s very
often needed to input date values in web applications.
Probably I can give example of another components I would like to see
in GWT (as many other GWT programmers :), but we should realize that
GWT is the platform – and it provides instruments for making other UI
libraries. You can always make your own controls, or use third-party
libraries.
7. JSNI code
In some particular cases GWT is not enough and then you tell: “God!
It’s great that we can write JSNI methods!”
Most of cases when we used JSNI were very special. For example, a lot
of JSNI was written to extend RichTextArea functionality. However, I
would suggest writing as few JSNI as you can. Move only those things
to JSNI, which you can’t write using GWT. Don’t forget about class
calling DOM, allowing to make different delicate things.
Well, finally we have great product, looking just like desktop
application, extremely fast and easy to work, and I’m 100% happy that
GWT platform was chosen for client-side development.
Maybe I missed something in my article. Don’t hesitate to ask more
questions, I will be happy to share my experience if it may help
someone.
I think it might be valuable to add few words about handling
"datetimes". So far we do not work too much with dates and main battle
is in the future here, but currently we are using the following
approach - datetimes are stored as current time in milliseconds into
BIGINT database type. So we avoid "natural" database types like
TIMESTAMP etc.
We made this decision after few attempts to store UTC timestamp into
"datetime" database types were failed, mainly because unpredictable
conversions happen somewhere inside JDBC, sometime it works, sometime
does not, this is why we finally came up with this solution.
On Aug 4, 12:33 pm, Joe Cole <profilercorporat...@gmail.com> wrote:
> Great work, the application works really well on FF 3.0, linux.
> The download doesn't work though - when will it be available to try
> for ourselves?
I would like to add a note concerning GWT 1.4 compatibility problem
with Safari browser (3.1.2). Maybe it will be useful for someone.
DOM.eventGetButton(event) call does not work correctly for Safari. In
case of left middle button pressed, it return -1, but must return 1.
Ti fix that, the following code can be used:
public static int getFixedMouseButton(Event event) {
int button = DOM.eventGetButton(event);
if ("safari".equals(getBrowserType()) && -1 == button)
return Event.BUTTON_LEFT;
else
return button;
}
Sorry guys, it seems there is a confusion on your website... On the
main page it says that your app is free for 5 users, and on the
product page it says that only 3 users available. Where is the truth?
Thanks.
On 21 авг, 21:44, Michael <smm...@gmail.com> wrote:
> I would like to add a note concerning GWT 1.4 compatibility problem
> with Safari browser (3.1.2). Maybe it will be useful for someone.
> DOM.eventGetButton(event) call does not work correctly for Safari. In
> case of left middle button pressed, it return -1, but must return 1.
> Ti fix that, the following code can be used:
> public static int getFixedMouseButton(Event event) {
> int button = DOM.eventGetButton(event);
> if ("safari".equals(getBrowserType()) && -1 == button)
> return Event.BUTTON_LEFT;
> else
> return button;
> }
> Sorry guys, it seems there is a confusion on your website... On the
> main page it says that your app is free for 5 users, and on the
> product page it says that only 3 users available. Where is the truth?
Thank you for remark. You right, the product page were not updated
yet, we will fix that right now.
Project Kaiser is free for 5 users.
For the future I would ask do not post such remarks here in GWT group,
which is for GWT discussions primarily. Use internal forums instead:
http://www.projectkaiser.com:8080/pk?fileid=20204
> On Aug 4, 12:33 pm, Joe Cole <profilercorporat...@gmail.com> wrote:
> > Great work, the application works really well on FF 3.0, linux.
> > The download doesn't work though - when will it be available to try
> > for ourselves?