A little (personal) history
From what I have experienced JSNI is very powerful. I did not encounter any major blocking point using it (I coded some callbacks and some other tricky stuff). I may not have faced all the possible problems but I strongly beleive that with some efforts, you can achieve almost whatever you want, by using JSNI. The only real question is “how much time” is it going to take you. In the end, time is money, so if you are not productive, it will cost you a lot of money. Is it worth the effort ?
What is coming ? Winter ?
@JsInterface and @JsProperty
No need to implement JSO anymore !
This will behave like following JSO in current GWT compiler (just for illustration):
Goodies : Ray Cromwell implemented the use of fluent interfaces and other nice syntax features that will make our life really easier.
alternate getter/setter syntax, so JavaBean as well as non-Javabean syntax is supported
How does it work ?
I think part of this work was inspired by the GWT generator GWT-Exporter written by Ray Cromwell and others. I think it is a good entry point if you want to understand better how this javscript code generation can work. If you want another example of generator you can have a look to restyGWT,
I wonder if there will be an impact on compilation time if there are lots of JSO involved ?
I am really excited to try those new features and I can’t wait GWT 3.0 to do so. I think this is going in the right direction. I would like to try those new features in conjonction with GIN and see how things are testable or not. Testability is a very important topic to me (and all TDD fans !). It ensures good quality + non-regression. I will try to find out how being able to use the source code from GWT 3.0 to try those new annotation stuff.
To do so, I intend to code a new Highcharts wrapper with those new features and publish it to Github. I will give some more details about that in futur articles.
Goktug Gokdogan A glimpse into the future of GWT (js slideshow)
Ray Cromwell Gwt.Create Keynote San Francisco (slideshare)