Google Web Toolkit Blog View RSS

News and note from the Google Web Toolkit Team.
Hide details



GWT 2.8 Released! 25 Oct 2016 1:04 PM (9 years ago)

We are happy to announce the general availability of GWT 2.8 Final. GWT 2.8 has truly been a community supported release, with across the board contributions in all aspects. A big thanks to everyone who pitched in and and made GWT 2.8 happen.

GWT 2.8 has been a long time coming, and is one of the biggest GWT releases by far, with a host of new features that better prepares GWT Applications to work in a multi-platform world.

The release notes provide a comprehensive summary, but in short, the salient features of GWT 2.8 are:

Smooth interoperation with JavaScript: JsInterop 1.0 provides much improved interoperability with JavaScript.

Java8 support: GWT applications can fully utilize Java8 features, including lambda expressions, defender methods and new APIs.

Pre-enabled for new versions of Guava: GWT libraries are fully tested for compatibility with the latest version of Guava that uses Java8.

CSS3 support with GSS: With new GSS Resource, GWT applications can harness the full power of CSS3.

Many many bug fixes and performance enhancements: A lot of work went into GWT 2.8, ensuring its both stable and better performing that previous GWT versions. Users should see across the board improvements in Application stability, build times and performance.

You can download this release from here.  
- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2014 Survey 1 Dec 2014 3:26 PM (10 years ago)

The GWT development community has been using GWT survey results for the past two years as valuable input into planning for future GWT releases. Please help us continue this for next year, by filling in this year's GWT survey, conducted by Vaadin Ltd. This survey is similar to the GWT 2013 survey, whose results can now be downloaded directly from http://www.gwtproject.org/gwt_surveys.html

Vaadin plans to make the results of the survey freely available in February 2015 at GWT.create and for free online at the same time.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.7 Finalized! 21 Nov 2014 2:55 PM (10 years ago)

Thanks to everyone who pitched in and helped test GWT 2.7 RC1. We are happy to announce that GWT 2.7 is now final. 

See release notes for a summary of changes. 

You can download this release from here. We also have a new GPE that includes Super Dev Mode support, get it from here.

- GWT and GPE Teams

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT.create 2015 is around the corner... 18 Nov 2014 3:12 PM (10 years ago)

The 2015 GWT.create conference is happening on January 22-23 in Mountain View, California and on January 27-28 in Munich, Germany.

Many Googlers will be attending this year at the Mountain View venue, including the GWT team and people from teams using GWT within Google.

This year’s sessions will include coverage of new functionality in upcoming versions of GWT, including Java 8 support and better interoperability with Javascript and Web Components. We will also talk about how Inbox by Gmail was built, using GWT and j2objc together to run the same code on the web and mobile devices.

We hope to see you there!

You can register at:  http://gwtcreate.com/register/

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.7 RC1 is here! 4 Nov 2014 9:15 AM (10 years ago)

Today we are excited to announce GWT 2.7 Release Candidate 1.  Thanks to everyone who contributed to this release.

This release has the much anticipated support for incremental compilation in Super Dev Mode, dramatically reducing interactive build times.

GWT 2.7 also has a host of new features, performance improvements and bug fixes.  For a summary of changes since GWT 2.6.1, read the release notes.

You can download this release from here.

For this release, we also have updated the GPE to include support for Super Dev Mode, get it from here.

- GWT & GPE Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT.create 2015 Conference 4 Sep 2014 2:10 PM (11 years ago)

Vaadin is hosting the second GWT.create conference, with repeat events in Mountain View and Munich. This is going to be another exciting event, connecting GWT developers worldwide.

The following is a guest blog post from Fredrik Rönnlund of Vaadin Ltd.


GWT.create Conference, January 22-23. 27-28, 2015

The largest dedicated GWT conference is back in January.

Last year over 650 people joined the GWT.create conference and this time we're redoing the conference as an even larger conference.

We're happy to announce speakers from Google's GWT team, the original creators of GWT Bruce Johnson and Joel Webber from FullStory and steering committee members from Red Hat, Sencha, ArcBees, JetBrains, Bizo, Vaadin and many many more.

Come and hear about GWT3, Web Components, Polymer and Paper, Super Dev Mode, Functional UIs and remote controlled drones. This is your chance to collaborate with the core GWT teams, pitch your ideas and grab a beer in good company around emerging trends.

Early bird 20% discounted pricing available until September 30th at http://gwtcreate.com/register/.


See you in Mountain View, CA or Munich, Germany in January.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.6.1 is here! 9 May 2014 11:35 PM (11 years ago)

Today we are excited to announce the GWT 2.6.1 release.  Thanks to everyone who contributed to this release, especially our non-Google open source contributors.

For a quick run-down of changes since GWT 2.6.0, read the release notes.

The release is available for download here or on maven central.

If you find any issues with this release, please file a bug in our issue tracker.

- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.6.0 Final is here! 30 Jan 2014 2:14 PM (11 years ago)

We have finally completed all validation and are happy to announce GWT 2.6.0. It took a while for this release to materialize after RC1, but thanks to the efforts of many people in the community, GWT 2.6.0 is now much improved and ready for release.

You can download this release from here.


- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.6 RC1 is here! 13 Nov 2013 11:07 PM (11 years ago)

Today we are excited to announce GWT 2.6 Release Candidate 1.  Thanks to everyone who contributed to this release.

For a quick run-down of changes since GWT 2.5.1, read the release notes.

You can download this release from here.

A special request for testers: It would be very helpful if you could test your GWT application using GWT 2.6 on IE11 and report issues via the issue tracker. Even though IE11-specific support was not planned for GWT 2.6, we would like to get critical fixes into RC2.

- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2013 Survey 31 Oct 2013 9:57 AM (11 years ago)

Please help the GWT development community by filling in this year's GWT survey, conducted by Vaadin Ltd. This survey is similar to the GWT 2012 survey, whose results can now be downloaded directly from http://www.gwtproject.org/gwt_surveys.html. We value your opinions and comments, and use the information as valuable input to our planning process for future GWT releases. 

Vaadin plans to make the results of the survey freely available in February 2014. Before then, you can get a copy of the results at GWT.create conference and by email registration with Vaadlin.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT.create Conference 18 Oct 2013 8:30 AM (12 years ago)

Vaadin is hosting the first GWT-only conference since 2007, with repeat events in both San Francisco and Frankfurt.  This promises to be the most exciting event for GWT developers in 2013.

The following is a guest blog post from Fredrik Rönnlund of Vaadin Ltd.


GWT.create Conference, December 12-13 & 17-19, 2013


GWT has for too long lacked its own dedicated conference - where we as GWT developers get to meet each other. Where both framework developers and users can get together and talk face to face on the next exciting things coming to GWT.


The GWT.create conference solves this in December 2013 and you're invited! GWT.create is a two day conference organised on two continents (at San Francisco, USA and Frankfurt, Germany) with over 60 speeches and two tracks full of interesting talks and workshops. There is no doubt this is the best thing to happen to GWT since GWT. ;)


This is the best way to jump on the bandwagon and hear the latest and greatest about GWT!

Read more and sign up today at http://gwtcreate.com.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT News 15 Jul 2013 3:33 PM (12 years ago)

In the past year, GWT has undergone dramatic changes - from a Google owned product to a fully open sourced project with community contributions, and strong support from member companies including Google. Lets take a look at what has been accomplished so far, and what the future holds.


New Domain and Web-site


http://www.gwtproject.org is the main web-site for GWT, and is the authoritative source for GWT documentation. The content for the web-site is now open sourced as well.


New Source Repository, Review System, Jenkins-based Automation for Commits



GWT source is now entirely in git. It uses the gerrit review system, and is hosted at https://gwt.googlesource.com.  Thanks to Redhat Inc., contributors rely on a Jenkins-based automated test system to validate their changes.


GWT Roadmap Published



We published the GWT roadmap for 2.6 and 3.0, presented at Google I/O, available online here.  The plan includes major initiatives, led by people from both Google and the GWT contributor community.


GWT Meetup 2013 Event



To encourage community contributions to GWT, we held a two-day GWT meet-up event at Google, May 12-13 for GWT contributors with in-depth presentations. Videos of the talks are available via the newly created GWT Youtube channel. Slides can be accessed from here.


Upcoming



Fall 2013, GWT2.6: GWT 2.6 will be released in Fall 2013, as announced at I/O - stay tuned for more detail.


Dec 12-13, 17-18: GWT.create Conference: Vaadin is hosting the first ever GWT conference, with repeat events in both San Francisco and Frankfurt.  This promises to be the most exciting event for GWT developers in 2013. Please read the Vaadin blog to see how you can be part of this event.


Spring 2014, GWT 3.0: GWT 3.0 will be released on or around Google I/O 2014, with major new features.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.5.1 Final is Here! 11 Mar 2013 9:28 PM (12 years ago)

Thanks to all developers who helped us test GWT 2.5.1 release candidate. Testing went well, and we are happy to announce availability of GWT 2.5.1 Final.

You can download this release from our main GWT download page.  Release notes are here.

- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.5.1 RC1 is here! 14 Feb 2013 2:54 PM (12 years ago)

Today we are excited to announce GWT 2.5.1 Release Candidate 1.  Thanks to everyone who contributed to this release.

GWT 2.5.1 is a maintenance release, with many bug fixes. For a quick run-down of GWT 2.5.1 changes, read the release notes.

You can download this release from here.

- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT Survey Results 5 Dec 2012 10:06 AM (12 years ago)

The results of the survey conducted by Vaadin Ltd. are now available. This survey had over 1300 respondents, and lots of suggestions for improving GWT. See the Vaadin blog post about this here.


- Bhaskar Janakiraman, GWT Team.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.5 Final is here! 26 Oct 2012 4:15 PM (13 years ago)

Thanks to all developers who helped us test GWT 2.5 release candidates and reported issues to us. We have fixed several of these and are happy to announce availability of GWT 2.5 Final.

You can download this release from our main GWT download page.  Release notes are here.

- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.5 RC2 is here! 4 Oct 2012 3:53 PM (13 years ago)

Today we are excited to announce GWT 2.5 Release Candidate 2.  For a quick run-down of GWT 2.5 features, read our earlier blog post here.

You can download this release from our main GWT download page.

The release notes have a short summary of changes in RC2.

- GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT Survey 19 Sep 2012 2:14 PM (13 years ago)

Vaadin Ltd., as part of the newly-formed GWT Steering Committee, has drafted an online survey for GWT users. The following is a guest blog post from David Booth of Vaadin Ltd.

The Future of GWT Survey


This year has brought many changes to GWT, from Super Dev Mode and Elemental to the creation of the GWT Steering Committee (which Vaadin is proud to be a part of).

As part of the committee, Vaadin would like to learn more about the community that we all serve, so together with Ray Cromwell (Google representative and acting Committee Chair), Artur Signell (Vaadin representative), Mike Brock (RedHat representative), David Chandler (Developer Advocate at Google), Daniel Kurka (mgwt, gwt-phonegap), and Bhaskar Janakiraman (Google), we came up with The Future of GWT survey.  Please help us understand:
  • How should GWT develop?
  • What technologies should it better support?
  • What are best practices within the community?
  • What is your opinion on the future of GWT?

Information is king - So once we collect all the data from this survey, we’ll work together to build The Future of GWT Report. We’re happy to publicly share all the information we find with you, so that we can all make educated decisions about the future!

Can you take 10 mins to fill out The Future of GWT survey?

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT Support for Mobile App Development 23 Jul 2012 3:20 PM (13 years ago)

If you’re interested in using GWT to build mobile apps and mobile web apps from a single codebase, then you’ll want to take a good look at mgwt. The following is a guest blog post from Daniel Kurka, the creator of the mgwt library.


Going mobile with mgwt and gwt-phonegap

mgwt is a library for developing mobile apps and mobile websites with GWT using a single codebase. mgwt provides native-looking widgets and effects for most of the popular mobile platforms. It also comes with a ton of other useful features for building mobile apps. We’ve detailed some of them later on in the post.

gwt-phonegap enables GWT apps to use Phonegap. With Phonegap, HTML5 applications can access the same device features that native apps can use via Javascript APIs, such as the camera, file system or contacts.

With mgwt and gwt-phonegap, you can deploy your GWT applications to any app store that Phonegap supports (such as the Google Play Store or the Apple App Store), or let your users access them as a mobile-enhanced web applications. Both projects are licensed under the Apache 2.0 License, and are available from Maven Central.

Some of the key features in mgwt and gwt-phonegap:


One of the most impressive things about mgwt is how closely the widgets and effects resemble their native counterparts on each specific platform.

For example, this is how some of the widgets look on iOS and Android:























mgwt is built for performance and uses many GWT core concepts to be as efficient as possible. As mobile app developers know, performance and efficiency are critcal.

Both mgwt and gwt-phonegap are built by Daniel Kurka, who is one of the GWT Steering Committee members.

Want to learn more? Check out the mgwt homepage and the blog. There’s also a 90-minute talk on mgwt presented at the Dutch Google Developer Group (GDG), and a post on Daniel’s blog with a more detailed description of mgwt’s features.

Links


mgwt homepage: http://www.m-gwt.com
blog: http://blog.daniel-kurka.de
mgwt talk: http://www.youtube.com/watch?v=0V0CdhMFiao&feature=plcp
mgwt features: http://blog.daniel-kurka.de/2012/07/mgwt-going-mobile-with-gwt-phonegap.html
Daniel Kurka: http://www.daniel-kurka.de

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT 2.5 RC is here! 27 Jun 2012 11:42 AM (13 years ago)


Today we are excited to announce the GWT 2.5 Release Candidate. 

You can skip past all the information and download this release from our main GWT download page.

GWT 2.5 comes with new optimizations that boast a 20% code size reduction and a 39% reduction in initial download size of the Showcase applicationGWT 2.5 also includes several new features that improve both usability and functionality:


Preview of Super Dev Mode

We have begun work on a replacement for Development Mode that will support more browsers, because it doesn't require any browser plugins. While it is not yet a full replacement, we expect that many developers will already prefer it. Interested early adopters can learn more by reading Introducing Super Dev Mode.


Introducing Elemental

Elemental is an experimental new library for fast, lightweight, and "to the metal" web programming in GWT. It's intended for developers who are comfortable working with the browser API's that JavaScript programmers use. We think it will be an excellent 'thin' library for both mobile and desktop web applications.


Speed and Optimization Improvements

Integration with the Closure Compiler

To further optimize the Javascript generated by GWT, we have integrated Google’s Closure Compiler as an optional backend for the GWT compiler. Yes, there is now comprehensive function and variable inlining, and a graph-coloring-based variable allocator to squeeze even more performance out of your GWT application!

Code Splitter Improvements


The code splitter now has the ability to automatically partition deferred code that is specified by GWT.runAsync() calls. By detecting code fragments that share common functionality and merging them together into a single fragment, the GWT compiler can reduce the size of the leftover fragment that needs to be download after the initial page load. This greatly reduces the latency of loading the first deferred fragment of a GWT application.

ARIA

We’ve added a new accessibility library that has a full coverage of the W3C ARIA standard. In fact, the library is generated from the standard itself! This library makes it easier to correctly set ARIA roles, states, and properties on DOM elements. For more details, have a look at the updated GWT accessibility documentation.


UiBinder and CellWidget Enhancements

GWT 2.5 adds extensions to UiBinder that allow it to support Cell rendering and event handling. In particular, this design enables UiBinder to generate a UiRenderer implementation to assist with rendering SafeHtml, and dispatching events to methods specified by @UiHandler tags.

We’ve also introduced the IsRenderable/RenderablePanel types. When used by an application instead of HTMLPanel, they can significantly improve rendering time and reduce the latency of complex UiBinder UIs. In the case of Orkut, for example, it improved startup latency by 20% and rendering speed by 300%.

Finally, we’d like to thank the many developers, both inside and outside of Google, that contributed to this release candidate. This release contains over 50 patches written by developers that are not part of the GWT team! We are very grateful for all of your contributions.

-Rajeev Dayal and Bhaskar Janakiraman, on behalf of the GWT Team

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

Angry Birds Chrome now uses the Web Audio API 31 Jan 2012 1:15 PM (13 years ago)

Cross-posted with the Google Code Blog

Last week Angry Birds for Chrome was updated to use the Web Audio API for all its in-game audio for Chrome users, which means Chrome users get the full Angry Birds experience, without any plugins. The Web Audio API supports a wide variety of use cases, including the high fidelity and low latency requirements of games. Users of other supported browsers will still get sound via Flash or HTML5 audio.



How does this cross-browser audio magic work? As you may have seen or heard, Angry Birds was in no small part made possible by the cross-platform open source PlayN library. When building for the HTML platform, PlayN in turn relies heavily on Google Web Toolkit (GWT) to delivery a highly optimized web experience for users, and on gwt-voices to easily deliver a cross-browser audio experience.

The responsibility of choosing the appropriate audio API for the game's sound is (mostly) left up to gwt-voices, which chooses the audio API that will give the best experience. If you'd like to hear how other audio APIs perform, you can ask gwt-voices to try to use the Web Audio API, Flash, HTML5 Audio, or even native audio. Your mileage will vary by browser and platform and which plugins you have installed. Also, gwt-voices will select the best available fallback, if the desired audio API is not going to work at all in your environment.

Want to learn more? Check out the Web Audio API tutorial and don't let those pigs grunt too much.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

Google Plugin for Eclipse (GPE) is Now Open Source 16 Nov 2011 8:58 AM (13 years ago)

Today is quite a milestone for the Google Plugin for Eclipse (GPE). Our team is very happy to announce that all of GPE (including GWT Designer) is open source under the Eclipse Public License (EPL) v1.0. GPE is a set of software development tools that enables Java developers to quickly design, build, optimize, and deploy cloud-based applications using the Google Web Toolkit (GWT), Speed Tracer, App Engine, and other Google Cloud services.
Because of the large ecosystem that has developed around GWT, App Engine, and Google’s Cloud services, and because our primary mission is to help users (as opposed to creating proprietary development tools), it makes a lot of sense for us to open source GPE and make it easier for the community to enhance and extend the tools.
According to Red Hat’s Max Andersen, “We have many developers using Google's Eclipse plugin to develop GWT-based applications targeting the JBoss Application Server. With the open sourcing of the plugin we are looking forward to working even more closely with the Google team and the rest of the community on making the developer experience even more productive and an integrated part of Eclipse platform. We are especially interested in seeing the Google Eclipse plugins being able to target multiple runtimes such as the JBoss Enterprise Application Platform and Google App Engine in a uniform way, working more seamlessly with standards-based tools and frameworks.”
As of today, all of the code is available directly from the new GPE project and GWT Designer project on Google Code. Note that GWT Designer itself is based upon the WindowBuilder open source project at Eclipse.org (contributed by Google last year). We will be adopting the same guidelines for contributing code used by the GWT project.
In the months to come we expect to start bringing on more committers, but don't let that stop you from contributing. The project will only grow with the community's input. Submitting bugs via the issue tracker and engaging with other users on the forums will go a long way towards ensuring the overall quality of the product.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

GWT and Dart 10 Nov 2011 6:39 AM (13 years ago)

The Google Web Toolkit team has been asked recently about our plans following the announcement of the Dart programming language a few weeks ago.

Dart and GWT both share the goal of enabling structured web programming. In fact, many of the same engineers who brought you GWT are working on Dart. We view Dart as an ambitious evolution of GWT’s mission to make web apps better for end users, and we’re optimistic about its potential. As Dart evolves and becomes ready for prime time, we anticipate working closely with the GWT developer community to explore Dart.

Meanwhile, rest assured that GWT will continue to be a productive and reliable way to build the most ambitious web apps — and even games like Angry Birds. Key projects within Google rely on GWT every day, and we plan to continue improving (and open-sourcing) GWT based on their real-world needs.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

Pictarine: pictures in the cloud 19 Sep 2011 10:32 AM (14 years ago)

Cross posted from the Google App Engine blog.


Pictarine is a photo management web application, launched in 2010, that allows people to easily manage and share all of their photos from Flickr, Picasa, Facebook, Twitter and other sites. Pictarine developers Guillaume Martin and Maxime Rafalimanana have contributed the following post discussing their experiences using Google App Engine and Google Web Toolkit.

From the start, we used Google technologies in developing Pictarine and we wanted to share our experience with them so far. In this post, we will shed some light on the weaknesses and strengths we found in Google Web Toolkit (GWT) and Google App Engine. We will also discuss how we leveraged GWT to build a new technology that allows Pictarine to seamlessly display photos from the computer directly into the browser. The following diagram is an overview of how our application works.


Building a mashup in the cloud with Google App Engine

The Pictarine team is made of a web designer and two developers who previously worked mainly with Java based enterprise technologies and had a little experience with web technologies. When we started the project in early 2009, we were quite open on learning new languages like Python or Ruby, but when App Engine announced that Java would be supported, we were really excited to give Google App Engine a try.

The first few months, learning about the App Engine environment was quite easy and dare I say fun. Testing our code on Google’s servers from Eclipse IDE was only one click away. So we built our first prototype fast and we quickly decided to adopt App Engine. Then we started to build the core of our application: the engine that uses the API from Flickr, Picasa, Facebook to fetch the users’ photos. This is where we hit the first limitations of App Engine. Most users have a lot of photos on these services and retrieving them can take some time. But App Engine has strict limits on how long a request should last: an outgoing HTTP request cannot last more than 10 seconds and cannot process a request for more than 30 seconds. So while building our architecture we found ourselves writing approximately one third of our code dealing with these limitations: paginating our requests, creating background tasks to store data in small batches, etc.

In early 2010, when we launched our alpha version, everything went smoothly. We had some good press coverage and App Engine met our expectations in handling our first users. During 2010, we worked on implementing new features requested by our users, and during this period of time we were really impressed by the way App Engine evolved. Many of the limitations were lifted and great new features were added. We are now able to use Task Queues for requests that last up to 10 minutes, which we fully use to sync our users’ photos and albums. One of the features we like the most is the Channel API, a push notification system that allows us to instantly show a photo in every connected browser as soon as it is uploaded. App Engine is still not perfect but has greatly improved and when we see its roadmap, we are quite confident it will continue to improve.

Building a fresh photo experience with Google Web Toolkit 

When we started Pictarine, we wanted a fast, distraction free interface that would allow our users to focus on their photos. We wanted the interface to adapt to the screen resolution, displaying a lot of photos on large screens and fewer on small ones. We wanted it to be automatically updated when new comments or new photos are added. We wanted a web application. As we eliminated Flash quite quickly (based on our user experience...) we started to look at tools to build HTML/CSS/Javascript applications. We settled quickly on GWT: while coding in Java, with all the tools we are used to (even the debugger), we could produce optimized Javacript that would run in every browser! When we started with GWT, it was already 3 years old, so we had few complaints about it. The main issue was that we had to always keep in mind that the Java code we produced was ultimately translated to Javascript. So some Java methods, such as the Reflection API, are not allowed. Another thing that was not obvious to us when we started with GWT was that a java developer needs an intimate knowledge of HTML/CSS if he/she wants to go beyond the basic user interface provided by the GWT widgets.

What we really like about GWT in our architecture is the ability to share code between client and server: we can use the same Photo or Album class on the client and the server and the GWT RPC system allows us to automatically share the same Java object on both side. We can also have the same data validation code on both sides: we can alert the user immediately on errors and still validate the data on the server just in case.

Another great feature we like about GWT is its handling of internationalisation. From the beginning we wanted to build a website available for all Internet users, so supporting English as well as our native language (French) was almost obligatory. Fortunately, GWT makes it really easy to generate centralized localization files so that we just have to translate.

Finally, to illustrate how great Javascript generation is, when IE9 came out, we waited a few weeks for GWT to support it and our application was compatible after a recompile! Of course, the IE9 team also did a good job with their HTML5/CSS3 engine.

Building an universal uploader 

After the launch of our alpha in 2010, our users were able to see and share their photos from Flickr, Picasa, Facebook. But they still had to put their photos on these websites first before coming to Pictarine. This limitation quickly became the first request on our feedback system. We needed to let our users do everything from Pictarine, including uploading photos. Uploading many photos from a website is still not a trivial process. Most websites choose Flash to allow users to upload multiple files at once, but our experience with it was that it often crashed after a while. Some use Java applets, but they are never well integrated and always look odd. At Pictarine we decided to tackle this problem by using Java Applet for their stability across all platforms but without using it to render photos or folders.

We have built a technology that uses the GWT RPC mechanism to talk to a Java Applet: photos, upload progression are rendered in HTML/CSS and the applet takes care of photos resizing and uploading. Sharing a photo from a camera is now a one-step process. This technology also allows users to browse their local files directly in their browser and it is fully integrated in our design.

We believe that this new use of Java applets can help blur the line between the Desktop and the Cloud by seamlessly integrating desktop files in any web application.



In conclusion, we can say that we are really happy with the choices we made with App Engine and GWT. App Engine is a great service that perfectly handled the spike in traffic we saw right after articles on Mashable and Lifehacker were published. So we recommend it to every lean startup out there who loves developing in Java, Python or Go.

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?

Working with Maven and RequestFactory in GWT 2.4 16 Sep 2011 3:28 PM (14 years ago)

GWT 2.4 introduced changes to both Maven and RequestFactory, and we've recently updated the GWT wiki and sample apps with the latest and greatest:

RequestFactory now does compile-time validation to ensure that your service implementations match your client-side interfaces. This feature is implemented using an annotation processor which must be configured in Eclipse or in your Maven POM. When configured in Eclipse, you will now see warnings and errors in the IDE anywhere your client- and server-side RF code don't match.

In addition, the RequestFactory jars are now in Maven Central. Note that the Maven groupId for RF artifacts differs from the rest of the GWT artifacts since RF can be used in Android clients as well as GWT. If you're using RequestFactory instead of GWT-RPC, you no longer need gwt-servlet. Instead, you can use the much smaller requestfactory-server jar and requestfactory-apt (which contains the RF interface validation tool). You do not need requestfactory-client for GWT projects as the required classes are already included in gwt-user. The requestfactory-client jar is intended for non-GWT (Android) clients using RequestFactory.

  <dependency>
   <groupId>com.google.web.bindery</groupId>
   <artifactId>requestfactory-server</artifactId>
   <version>2.4.0</version>
  </dependency>
  
  <!-- see sample projects for correct placement -->
  <dependency>
   <groupId>com.google.web.bindery</groupId>
   <artifactId>requestfactory-apt</artifactId>
   <version>2.4.0</version>
  </dependency>
  

The mobilewebapp and dynatablerf samples show everything working together and have been tested in Eclipse 3.6 and 3.7.

If you also have the Eclipse Subversive plugin installed (see http://www.shareyourwork.org/roller/ralphsjavablog/entry/eclipse_indigo_maven_and_svn), you should be able to try the mobilewebapp sample as easily as

     
  1. File > Import > Checkout Maven projects from SCM, point to https://google-web-toolkit.googlecode.com/svn/trunk/samples/mobilewebapp
  2.  
  3. Run as > Web application

Special thanks to Jeff Larsen for the RequestFactory POM sauce that works in Eclipse Indigo!

Add post to Blinklist Add post to Blogmarks Add post to del.icio.us Digg this! Add post to My Web 2.0 Add post to Newsvine Add post to Reddit Add post to Simpy Who's linking to this post?