GWT 1.5 Now Available
We're happy — no, ecstatic — to announce that GWT 1.5 is now officially released and available for download.
GWT 1.5 delivers what we think are an impressive number of improvements, about four hundred issues if you're counting. We're also happy that one of those is issue 168, our most-requested feature, Support for Java 5
.
We've blogged about several of the new features already. Now that it's official, let's recap and expand the list a bit...
Java 5 language support and enhanced JRE emulation
-
You can now use Java generics to add clarity and type safety to your client-side Java source.
Generics also greatly simplify the definition of GWT RPC services — no more
@gwt.typeArgs
. - Simplify your code with for-each loops, autoboxing, static imports, and enum types.
- Subsystems such as RPC, image bundles, internationalization, and benchmarking now use proper annotations. To maximize code re-use, the GWT compiler also ignores unrecognized annotations, such as those required by JPA, that typically appear on types shared between the client and server.
-
New JRE emulation classes have been added including
StringBuilder
,TreeMap
,LinkedHashMap
, and other popular utility classes. -
Assertions are now optionally supported in web mode.
If you invoke the GWT compiler using the
-ea
flag,assert
statements in your code will be retained in the compiled JavaScript. This can be helpful during QA cycles.
Performance optimizations and easier JavaScript interop
-
The GWT compiler has gotten smarter. It now does comprehensive method inlining,
which can eliminate signficant overhead due to function calls.
Developers using GWT 1.5 release candidate builds have reported speedups of up to 2x,
especially in performance-sensitive areas of their code.
We've even heard from end users that apps compiled with GWT 1.5
just feel faster.
Admittedly,feels faster
isn't a quantifiable benchmark, but we sure like the sound of it. -
The venerable
Tree
widget has gotten much faster in GWT 1.5. In tests, we've measured huge improvements across the board, including 5x and 10x speedups on IE7 and IE6, respectively. - With new JavaScript overlay types, you can seamlessly and efficiently integrate with objects originating in handwritten JavaScript. Overlay types also provide a particularly elegant new way to interact with JSON data from GWT.
- The new Linker subsystem gives you total control over your code's packaging and bootstrap behavior so that you can deploy GWT output into any context where JavaScript is relevant (think Gadgets, Firefox extensions, Greasemonkey scripts and Gears worker threads). If it sounds complicated, don't worry: most GWT users can simply re-use the built-in linkers. But it's nice to know you can create your own if you need to. See Bob Vawter's Google I/O talk on Linkers for the theory, and Ray Cromwell's GWT Extreme! talk for some enlightening real-world examples.
Prettier widgets, better DOM, accessibility, and bi-di
- The original KitchenSink sample has been retired in favor of a new sample called Showcase. In addition to demonstrating a wide variety of GWT features — widgets, themes, animation, history, accessibility, internationalization and bi-di to name a few — Showcase helps developers understand how code and CSS fit together by providing the source for each showcased feature.
- Experienced GWT developers know and like the fact that widgets rely almost exclusively on CSS for styling. However, prior to GWT 1.5, GWT projects did not include a stylesheet by default, giving developers new to GWT the unfortunate impression that GWT widgets were inherently ugly. With this release, we're introducing three nice-looking default CSS themes you can use as a starting point for your own designs.
-
Not only are the standard GWT widgets prettier in this release, they're more functional.
The major widgets such as
Tree
,MenuBar
, andTabPanel
now support ARIA for enhanced accessibility. In addition, widgets now support bi-directionality so that UI works properly for right-to-left languages. (You can see all this in action in the Showcase sample.) - A new cross-browser DOM package maps the entire set of W3C bindings onto GWT-compatible Java classes. After all, not every project needs full-on widgets. If you want to do low-level DOM programming or you're writing new widgets, you'll really like these new classes. It feels as if you're writing JavaScript DOM manipulation code but better: you get reliable code completion, easy debugging, cross-browser portability and compiler optimizations.
Those are some highlights. The (new) GWT Developer's Guide has a more detailed explanation of GWT 1.5 changes, including notes about a few breaking changes you'll want to be aware of.
For further information or for help getting started with GWT, you may find the follow links helpful:
- If you're new to GWT, the Getting Started Guide takes you through a very quick example of installing and using GWT.
- There's a new in-depth GWT tutorial that guides you through the process of building and enhancing an application from scratch.
- If you're particularly curious, you can also browse the entire 1.5 issue list.
We really hope that you'll find that GWT 1.5 helps you build the most sophisticated web apps you can envision. And when you build the next big thing, please share your success stories in the GWT developer forum.