Bio Bruce Johnson is a Google Software Engineer and tech lead of the Google Web Toolkit (GWT). Prior to joining Google, Bruce cut his product teeth as lead developer of AppForge's MobileVB product.
You can identify things that appear polymorphic but really aren't, we call that "type tightening". Once you do that you eliminate polymorphism, you rewrite call sites and translate polymorphic dispatches into static dispatches and once you do that you can inline the code which allows you to do another iteration of other optimizations. So it is a real compiler and we've really only scratched the surface with the optimizations I mentioned and there are a lot more cool optimizations that we can do in the future. The benefit to GWT users is that all they have to do is upgrade the new version of GWT, recompile and they get a huge benefit in either size or speed or both. For example in 1.4 which is the next upcoming GWT release, a simple recompile will gain you about 20% size reduction and faster start-up time.
We did that when we went open source in December and we really just wanted to make sure that we started the open-source community out on the right foot. So what we did in that document, "Making GWT Better", was to lay out the underlying principles of the GWT design which may not be obvious when you look at it. When you hear GWT you might assume it's all about abstracting out the platform completely or making it easier to write code even at the expensive of speed or size or something like that. Actually that is not the case at all so our mission statement actually focuses much more on the end-user experience and the document explains that we emphasize user experience above even what is cool or even what is convenient for developers.
Often we've had discussions online where developers say it would be really convenient if it could do X, Y or Z and if we decide that that would somehow negatively impact the end-user experience we won't do it, basically. We do prioritize end-user experience over development experience. That said, if we could find a way to make development easier obviously we'll do that and our favorite kinds of features are things that make your application faster, smaller, more usable and are very convenient and we've actually managed to achieve that with a lot of the core facilities in GWT: History, RPC, JSNI and so on.
5. How has the community taken to GWT since the full open-sourcing of it? I know one thing that developers are always cautious about is, is this a one-man or one-company project? so how's the community interaction?
We've been really happy. We've got already, we've committed dozens and dozens of patches, really fantastic ideas from a wide variety of people -- people all over the world have participated. There are 2 different mailing lists/Google groups: the first is the traditional GWT-users forum, where people were really excited to see that we had open-sourced. They were interested in checking out the code and most importantly they feel comfortable using GWT because they know that, this wouldn't happen but if Google somehow abandoned it or something like that, they could still continue to use it. Actually we are building out the GWT team even more over time, so that is not the direction it would go, but it does give people a sense of comfort I guess. And then there is another group called GWT-contributors where we actually discuss the nuts-and-bolts of developing each new release and we've had a few hundred people sign up already just in the last 8-10 weeks and some really great discussions about some pretty interesting and insightful technical low-level stuff within GWT. So it's been really great.
6. You guys released 1.3 a couple of months back and now you are driving towards 1.4. What are the main features coming in 1.4? I know you just mentioned as far as the compile size reduction, but what are some of the other items?
There are several new important widgets: RichText, spelled with spell checking, there is an AutoSuggest text box, some button variations like an image button, a custom button, a toggle button, a few other things like that. Another unusual feature that I think is going to be really powerful I think is called ImageBundle. We actually count the number of HTTP requests that a GWT app makes -- we take real working apps and then we just count the number of HTTP requests so we decide, "could we eliminate that one or not", we do that over and over. We noticed that a very common use case is to create a toolbar or something with images, so in a big app you can end up requesting dozens and dozens of tiny little images and even if the response is essentially "not modified" you're still having to create those connections and tear them down and because of the outgoing HTTP limit of 2 connections at once it creates this contention for sockets that are essentially not doing anything.
So you are just finding out that the image you already have is already up-to-date, which is kind of a waste. So what we do now is at compile time if you create what's called an ImageBundle and refer to several different images, at compile time we take those and combine them into one large image file that is named in a unique way so it can be cached on the client and then replace references to the individual images with a similar construct that acts like an image, but is actually just a clipped rectangle within the larger composite image. So whereas you might have had say 40 downloads of images you have one now and you just have your different image objects pull out different portions of the image, so pretty interesting kind of technology that really is a direct result of the fact that we have this compilation step.
Can anyone play the video
Tried to play the video but it doesn't work. Just wondering if its just me, can anyone play the video?