Google Web Toolkit 1.4 Release Candidate
I'm very happy to report that Google Web Toolkit (GWT) 1.4 Release Candidate is now available for download.
This is undoubtedly the biggest GWT release yet. In addition to 150+ bugfixes, GWT 1.4 RC includes a ton of new features, improvements and optimizations. You'll find the complete itemized list of changes in the GWT issue tracker, but here's the short(er) version:
- Size and Speed Optimizations
- New size improvements in the GWT compiler produce JavaScript that is 10-20% smaller when simply recompiled with GWT 1.4 RC.
- An enhanced startup sequence reduces the size of your module's startup script by 80%! Even better, the new startup sequence removes an entire HTTP round-trip, reducing latency during those crucial first few hundred milliseconds at startup. According to our measurements, modules load about 33% faster as a result.
- The above optimizations combined with ImageBundle, described below, make it possible for GWT-based applications to load surprisingly quickly. To see for yourself, check out startup time of the Mail sample included in the GWT 1.4 RC download.
- Deployment Enhancements
- GWT RPC is no longer tied to exclusively to servlets. New modularized RPC server code makes it easy to connect GWT RPC to your choice of Java back-ends.
- Adding GWT modules to an HTML page has been simplified: just add a <script> tag. You no longer need to use <meta name="'gwt:module'"> and <script src="gwt.js">. Just reference your module and go.
- Cross-site script inclusion is now supported. The compiler produces a "-xs" (meaning "cross-site") version of your module's startup script that can be included without being restricted by the same-origin policy. Be careful, though. Including scripts from other sites that you don't fully trust is a big security risk.
- Widget and Library Enhancements
- RichTextArea allows "drop in" functionality for rich text editing.
- SuggestBox makes it easy to add auto-complete functionality.
- Splitters! HorizontalSplitPanel and VerticalSplitPanel allow users to resize portions of the user interface.
- PushButton and ToggleButton are easy-to-customize button widgets that can enhance the look-and-feel of your UI.
- DisclosurePanel is a simple, nice-looking panel that lets users easily hide and show portions of your application UI.
- DateTimeFormat and NumberFormat make it easy to parse and format dates, times, and numbers for users all over the world.
- IncrementalCommand helps you implement long-running tasks in your client code without triggering "slow script" warnings.
- A new benchmarking subsystem integrates with JUnit to let you record and compare the speed of code snippets across multiple browsers and multiple parameter ranges. Benchmarking is a powerful way to identify bottlenecks and compare performance of alternative implementations.
- The oft-requested java.io.Serializable is now included in the JRE emulation library and is synonymous with IsSerializable for the purpose of GWT RPC.
- Mouse wheel events are now available on a variety of widgets.
- And lots and lots of other enhancements.
- ImageBundle
- ImageBundle is the single biggest have-to-see-it-to-believe-it feature of GWT 1.4 RC. Image bundles make it trivially easy to combine dozens of images into a single "image strip", collapsing what would have been dozens of HTTP requests into one: a single, permanently-cacheable image file.
- Image bundles manage everything for you automatically, from computing clipping rectangles to making transparent PNGs work in IE6. You can even choose to get the clipped image as an Image widget or as pure HTML for inclusion in a larger HTML template.
- In addition to enabling a blazing-fast startup, image bundles help make the UI look better during startup, too. Typical AJAX apps exhibit "bouncy relayout" as individual images are loaded one-at-a-time. To fix this problem has traditionally required laboriously pre-initializing the width and height of each individual image ahead of time. Image bundles do the same thing automatically. The dimensions of each clipped image are computed automatically during compilation as the bundled image file is being created. Voila! The result is a fast, non-ugly user startup experience that requires no extra work on the part of the GWT developer to keep up-to-date.
GWT 1.4 RC is the first release developed with major participation from the GWT open source contributors. Many of the biggest improvements in GWT 1.4 RC came from ideas and patches contributed by the community. A big congratulations and thank you is in order to everyone who has worked so hard to make GWT 1.4 RC happen.
In other GWT news...
- JavaOne:
- A few weeks ago at JavaOne, several of the GWT team members had the pleasure of meeting — and, of course, talking shop with — several active members of the GWT community. It's great to actually be able to talk about all this cool stuff in person now and then :-)
- In case you weren't able to attend, check out a review of the JavaOne GWT talk.
- We're also really pumped to see that GWT in Action was a best-seller book at JavaOne.
- GWT in the classroom:
- Later on this summer, UC Berkeley is offering a two-day course called "UI Design and Implementation Using GWT."
- Video of GWT conference session:
- The video of my talk "What, Why, and How" from JavaZone 2006 is now available online. It's a good introduction to GWT because it explains the motivation for AJAX itself — focusing on end-user experience, of course.
- Technical review of GWT:
- In case you're curious to hear what other people think about GWT, take a look at this review.
It seems like it's been one major event after another lately. Next up: Google Developer Day! It's happening Thursday! Please join us in Mountain View if you can, or if you'd rather, go to GWT sessions in Beijing, London, Paris, Sao Paulo, or Sydney.
With that, I'll leave you to go play with GWT 1.4 RC. As always, let us know what you think in the GWT Developer Forum.