Google Web Toolkit 1.5

Het uitkomen van Release Candidate 1 van Google Web Toolkit (GWT) 1.5 is een goed moment om weer eens naar de ontwikkelingen rondom GWT te kijken. Voor de lezers die niet bekend zijn met GWT volgt eerst een introductie. Daarna volgen de recente ontwikkelingen rondom GWT.

Wat is Google Web Tookit?

GWT is een toolkit voor het ontwikkelen van Rich Internet Applicaties volgens het Ajax concept. Er zijn natuurlijk veel verschillende JavaScript en Ajax frameworks, maar GWT is anders… Je ontwikkelt de applicatie namelijk niet in JavaScript, maar in Java.

De GWT compiler zet de Java code vervolgens weer om naar (hele efficiënte) JavaScript. Deze JavaScript is compatible met Internet Explorer, Firefox, Mozilla, Safari, en (meestal ook) Opera. Hier hoef je als ontwikkelaar verder niets voor te doen.

De bij GWT meegeleverde API’s bieden erg veel functionaliteit zoals een verzameling user-interface componenten, een Remote Procedure Call framework, een XML parser en JavaScript integratie.

Daarnaast kent GWT ook de zogenaamde “hosted” mode. In deze “hosted” mode wordt de Java code uitgevoerd in een speciale meegeleverde web browser. In deze mode is debugging vanuit bijvoorbeeld Eclipse mogelijk, net zoals bij een normale Java applicatie.

Het verplichte “Hello World” voorbeeld

Zonder “Hello World” voorbeeld zou deze introductie in GWT natuurlijk niet compleet zijn.

public class HelloWorld implements EntryPoint {

	public void onModuleLoad() {

		final PopupPanel popup = new PopupPanel(true);
		popup.center();
		popup.hide();
		Label label = new Label("Hello World!");
		popup.add(label);

		final Button button = new Button();
		button.setText("Click me!");
		button.addClickListener(new ClickListener(){
			public void onClick(Widget widget){
				popup.show();
			}
		});
		RootPanel panel = RootPanel.get();
		panel.add(button);
	}
}

Onze HelloWorld class implementeert de EntryPoint interface. Dit kun je vergelijken met de Applet of de Servlet class. De classes RootPanel, PopupPanel, Button en Label zijn onderdeel van de com.google.gwt.user.client.ui package. Je ziet dat de manier van ontwikkelen erg veel lijkt op het bouwen van een Swing applicatie.

De ontwikkelingen rondom GWT

Ondanks een matige ontvangst bij de release van GWT in 2006 is er toch een behoorlijke community rondom GWT ontstaan. Zo is er een plug-in voor Eclipse (Cypal Studio for GWT) en een plug-in voor NetBeans (GWT4NB). Ook is er een Maven 2 plug-in beschikbaar en zijn er verschillende boeken over GWT verschenen.

Daarnaast zijn er verschillende open-source projecten die extra user-interface componenten voor GWT beschikbaar stellen. Zo is er het Tatami project dat de user-interface componenten uit het bekende DOJO project beschikbaar maakt als GWT component.

Binnen GWT zelf zijn er ook diverse ontwikkelingen. Sinds versie 1.3 is GWT beschikbaar onder de Apache 2 open-source licensie. De 1.5 release introduceert onder andere ondersteuning voor Java 5 en ziet er standaard veel beter uit door de beschikbare visuele thema’s en ingebouwde animaties.

Conclusie

De grote vraag is nu: is GWT klaar om binnen een serieus project ingezet te worden?
Mijn antwoord daarop is: Ja, maar denk goed na of je project geschikt is voor het gebruik van GWT.

GWT is vooral geschikt voor applicaties die grotendeels in de browser (ofwel client centric applicaties) kunnen worden uitgevoerd binnen een zogenaamde Single Page Interface (SPI). In deze gevallen is het ontwikkelen met GWT veel eenvoudiger en productiever dan met een op JavaScript gebaseerd Ajax framework.

Voor traditionele, formulier gebaseerde webapplicaties waarbij Ajax meer wordt ingezet als een verrijking van de user-interface (ofwel applicaties die meer server centric zijn) kun je denk ik beter een JSF implementatie met Ajax ondersteuning kiezen (bijvoorbeeld JBoss RichFaces) of anders een framework als Apache Wicket.