Google Web Toolkit

Google Web Toolkit (GWT /ˈɡwɪt/), or GWT Web Toolkit,[1] is an open-source set of tools that allows web developers to create and maintain complex JavaScript front-end applications in Java. Other than a few native libraries, everything is Java source that can be built on any supported platform with the included GWT Ant build files. It is licensed under the Apache License version 2.0.[2]

GWT emphasizes reusable approaches to common web development tasks, namely asynchronous remote procedure calls, history management, bookmarking, UI abstraction, internationalization, and cross-browser portability.

Google Web Toolkit
Google Web Toolkit (icon)
Original author(s)Google
Initial releaseMay 16, 2006
Stable release
2.8.2 / October 19, 2017
Written inJava
Operating systemLinux, Windows, OS X, FreeBSD
Available inJava
TypeAjax framework
LicenseApache License 2.0
Websitewww.gwtproject.org

History

GWT version 1.0 RC 1 was released on May 16, 2006.[3] Google announced GWT at the JavaOne conference, 2006.[4]

Release history
Release Date
GWT 1.0 May 17, 2006
GWT 1.1 August 11, 2006
GWT 1.2 November 16, 2006
GWT 1.3 February 5, 2007
GWT 1.4 August 28, 2007
GWT 1.5 August 27, 2008
GWT 1.6 April 7, 2009
GWT 1.7 July 13, 2009
GWT 2.0 December 8, 2009
GWT 2.1.0 October 19, 2010
GWT 2.2.0 February 11, 2011
GWT 2.3.0 May 3, 2011
GWT 2.4.0 September 8, 2011
GWT 2.5.0 October 2012
GWT 2.5.1 March 2013
GWT 2.6.0 January 30, 2014
GWT 2.6.1 May 10, 2014
GWT 2.7.0 November 20, 2014
GWT 2.8.0 October 20, 2016
GWT 2.8.1 April 24, 2017
GWT 2.8.2 October 19, 2017

In August 2010, Google acquired Instantiations,[5] a company known for its focus on Eclipse Java developer tools, including GWT Designer, which is now bundled with Google Plugin for Eclipse.

In 2011 with the introduction of the Dart programming language, Google has reassured the GWT community that GWT will continue to be supported for the foreseeable future, but also hinted at a possible rapprochement between the two Google approaches to "structured web programming". They've also admitted however that a number of engineers previously working on GWT are now working on Dart.[6]

In 2012 at their annual I/O conference, Google announced that GWT would be transformed from a Google project to a fully open sourced project.[7] In July 2013, Google posted on its GWT blog that the transformation to an open source project was complete.[8]

Development with GWT

Using GWT, developers can develop and debug Ajax applications in the Java language using the Java development tools of their choice. When the application is deployed, the GWT cross-compiler translates the Java application to standalone JavaScript files that are optionally obfuscated and deeply optimized. When needed, JavaScript can also be embedded directly into Java code, using Java comments.[9]

GWT does not revolve only around user interface programming; it is a general set of tools for building any sort of high-performance client-side JavaScript functionality. Indeed, many key architectural decisions are left completely to the developer. The GWT mission statement[10] clarifies the philosophical breakdown of GWT's role versus the developer's role. History is an example of such: although GWT manages history tokens as users click Back or Forward in the browser, it does not prescribe how to map history tokens to an application state.

GWT applications can be run in two modes:

  • Development mode (formerly Hosted mode): The application is run as Java bytecode within the Java Virtual Machine (JVM).[11] This mode is typically used for development, supporting hot swapping of code and debugging. In 2014, the classic implementation of Dev Mode was rendered unusable by browser updates[12][13] until its replacement with the more compatible Super Dev Mode, which became the default in GWT 2.7.[14]
  • Production mode (formerly Web mode): The application is run as pure JavaScript and HTML, compiled from the Java source. This mode is typically used for deployment.

Several open-source plugins are available for making GWT development easier with other IDEs, including GWT4NB[15] for NetBeans, Cypal Studio for GWT[16] (an Eclipse plugin), and GWT Developer for JDeveloper. The Google Plugin for Eclipse handles most GWT related tasks in the IDE, including creating projects, invoking the GWT compiler, creating GWT launch configurations, validation, and syntax highlighting.

Components

The major GWT components include:

GWT Java-to-JavaScript Compiler[17][18]
Translates the Java programming language to the JavaScript programming language.
GWT Development Mode
Allows the developers to run and execute GWT applications in development mode (the app runs as Java in the JVM without compiling to JavaScript). Prior to 2.0, GWT hosted mode provided a special-purpose "hosted browser" to debug your GWT code. In 2.0, the web page being debugged is viewed within a regular browser. Development mode is supported through the use of a native-code plugin called the Google Web Toolkit Developer Plugin for many popular browsers.
JRE emulation library
JavaScript implementations of the commonly used classes in the Java standard class library (such as most of the java.lang package classes and a subset of the java.util package classes).
GWT Web UI class library
A set of custom interfaces and classes for creating widgets.

Features

  • Dynamic and reusable UI components: programmers can use pre-designed classes to implement otherwise time-consuming dynamic behaviors, such as drag-and-drop or sophisticated visual tree structures.[19]
  • Simple RPC mechanism
  • Browser history management
  • Support for full-featured Java debugging[4]
  • GWT handles some cross-browser issues for the developer.[4]
  • Unit testing integration
  • Support for Internationalization and localization
  • HTML Canvas support (subject to API changes)[20]
  • The developers can mix handwritten JavaScript in the Java source code using the JavaScript Native Interface (JSNI).
  • Support for using Google APIs in GWT applications (initially, support for Google Gears)
  • Open-source
  • The developers can design and develop their application in a pure object-oriented fashion, since they're using Java (instead of JavaScript).[19] Common JavaScript errors, such as typos and type mismatches, are caught at compile time.
  • The JavaScript that the GWT compiler generates can be tailored to be either unobfuscated and easier to understand or obfuscated and smaller to download.[19]
  • A number of libraries are available for GWT, by Google and third parties. These extend GWT's features.[19]

Available widgets

As of version 2.4 (September 2011), GWT offers several widgets[21] and panels.[21]

Widgets and panels
Widgets Panels
Button PopupPanel
PushButton StackPanel
RadioButton StackLayoutPanel
CheckBox HorizontalPanel
DatePicker VerticalPanel
ToggleButton FlowPanel
TextBox VerticalSplitPanel
PasswordTextBox HorizontalSplitPanel
TextArea SplitLayoutPanel
Hyperlink DockPanel
ListBox DockLayoutPanel
CellList TabPanel
MenuBar TabLayoutPanel
Tree DisclosurePanel
CellTree
SuggestBox
RichTextArea
FlexTable
Grid
CellTable
CellBrowser
TabBar
DialogBox

Many common widgets not found in the GWT have been implemented in third-party libraries.

Enterprise usage

GWT uses or supports Java, Apache Tomcat (or similar web container), Eclipse IDE, Internet Explorer,[22] and internationalization and localization. Java-based GWT RIAs can be tested using JUnit testing framework and code coverage tools. Because GWT allows compile time verification of images, CSS, and business logic, many common development defects are automatically discovered without need of the manual testing commonly required by RIAs.

Google has noted that some of its products are GWT-based:[23] Blogger, AdWords, Flights, Wallet, Offers, Groups, Inbox.[24]

GWT 2.0

On Dec 08, 2009 Google launched Google Web Toolkit 2.0 with Speed Tracer.[25]

Version 2.0 of GWT offers a number of new features,[26] including:

  • In-Browser Development Mode (formerly known as Out Of Process Hosted Mode, OOPHM): prior to version 2.0, hosted mode used to embed a modified browser to allow running the bytecode version of the application during development. With version 2.0, hosted mode, renamed "development mode", allows using any (supported) browser to view the page being debugged, through the use of a browser plugin. The plugin communicates with the development mode shell using TCP/IP, which allows cross platform debugging (for example, debugging in Internet Explorer on Windows from a development mode shell running on a Linux machine).
  • Code splitting: with the developer providing "split points" in the source code, the GWT compiler will be able to split the JavaScript code into several small chunks instead of one big download. This will lead to reduced application startup time as the size of the initial download is decreased.
  • Declarative User Interface: using an XML format, the new feature known as UiBinder allows the creation of user interfaces through declaration rather than code. This allows clean separation of UI construction and behavior implementation.
  • Resource bundling: the ClientBundle interface will allow resources of any nature (images, CSS, text, binary) to be bundled together and transferred in one download, resulting in fewer round-trips to the server and hence lower application latency.

Since the new development mode removed most platform-specific code, the new version will be distributed as a unique archive, instead of one per supported platform as was the case with previous versions.

Mobile

As a general framework for making web apps, GWT is also capable of being used as a framework for making mobile and tablet apps, either by making the needed widgets and animations from scratch, or by using one of the mobile frameworks for GWT. An HTML5 app written in GWT can have separate views for Tablets and Mobile phones.

See also

Other related frameworks

  • JavaCC, GWT compatible[27] parser generator, implement client-side (JavaScript-based) parsers in Java.
  • Pyjs (formerly Pyjamas), a port of GWT to Python
  • Vaadin - License ASLv2 for core and commercial
  • Sencha GXT - License GPLv3 for first version and commercial
  • Errai Framework RedHat - License ASLv2
  • J2CL Future GWT front (JS) engine - License ASLv2

References

  1. ^ "GWT Name Use Policy". Google. Retrieved 2014-04-23.
  2. ^ "Google Web Toolkit License Information". Google. February 23, 2007. Retrieved 2007-09-25.
  3. ^ "Google Web Toolkit Release Archive". Google. Retrieved 2007-09-25.
  4. ^ a b c Olson, Steven Douglas (2007). Ajax on Java. O'Reilly. p. 183. ISBN 978-0-596-10187-9.
  5. ^ Ramsdale, Chris. "Google Relaunches Instantiations Developer Tools".
  6. ^ "Google Web Toolkit Blog: GWT and Dart". Googlewebtoolkit.blogspot.com. 2011-11-10. Retrieved 2013-06-16.
  7. ^ Vaadin to Support Google Web Toolkit (GWT) Development. vaadin.com (2012-06-29). Retrieved on 2014-05-15.
  8. ^ Google Web Toolkit Blog: GWT News. Googlewebtoolkit.blogspot.com (2013-07-15). Retrieved on 2014-05-15.
  9. ^ "Coding Basics - JavaScript Native Interface (JSNI) - Google Web Toolkit — Google Developers". Developers.google.com. 2012-10-25. Retrieved 2013-06-16.
  10. ^ GWT mission statement
  11. ^ Debugging in Development Mode
  12. ^ "Development Mode will not be supported in Firefox 27+". google-web-toolkit@googlegroups.com (Mailing list).
  13. ^ "GWT Developer Plugin no longer works with Chrome on Linux". google-web-toolkit@googlegroups.com (Mailing list).
  14. ^ "Super Dev Mode".
  15. ^ GWT4NB
  16. ^ Cypal Studio for GWT
  17. ^ "com.google.gwt.dev.Compiler". The main executable entry point for the GWT Java to JavaScript compiler.
  18. ^ "com.google.gwt.dev.jjs.JavaToJavaScriptCompiler". A base for classes that compile Java JProgram representations into corresponding Js source.
  19. ^ a b c d Perry, Bruce W (2007). Google Web Toolkit for Ajax. O'Reilly Short Cuts. O'Reilly. pp. 1–5. ISBN 978-0-596-51022-0.
  20. ^ "GWT Javadoc Canvas".
  21. ^ a b "Widget List". Google. Retrieved 2012-05-21.
  22. ^ GWT Project. GWT Project. Retrieved on 2014-05-15.
  23. ^ "Google I/O 2012 - The History and Future of Google Web Toolkit". GoogleDevelopers. Retrieved 2013-03-18.
  24. ^ Toubassi, Garrick. "Going under the hood of Inbox". Official Gmail Blog. Retrieved 22 November 2014.
  25. ^ Introducing Google Web Toolkit 2.0, now with Speed Tracer
  26. ^ "GWT 2.0 milestone 1 announcement". Amit Manjhi. Retrieved 2009-10-05.
  27. ^ "Building parsers for the web with JavaCC & GWT (Part one)". Chris Ainsley. Retrieved 2014-05-04.

Bibliography

Barracuda (Java)

Barracuda MVC is an open-source web application framework for developing Java EE web applications.

Comparison of JavaScript frameworks

There are many JavaScript frameworks available. The intention of this comparison is to show some examples of notable JavaScript frameworks.

GWT

GWT may refer to:

Gawar-Bati language

Given-When-Then

Global workspace theory in cognitive science

God's Word Translation, an English Bible translation

Google Web Toolkit, or GWT Web Toolkit

Great Western Trail, in North America

Great Western Trains, now Great Western Railway

Gross Weight Tonnage, a nautical measurement

Guided wave testing

The Gurkha Welfare Trust, a British charity

Gwent Wildlife Trust, in Wales

Sylt Airport, in Germany, by its IATA Code

Gerrit (software)

Gerrit is a free, web-based team code collaboration tool. Software developers in a team can review each other's modifications on their source code using a Web browser and approve or reject those changes. It integrates closely with Git, a distributed version control system.

Gerrit is a fork of Rietveld, another code review tool. Both namesakes are of Dutch designer Gerrit Rietveld.

Google Apps Script

Apps Script is a scripting language for light-weight application development in the G Suite platform. It is based on JavaScript 1.6 with some portions of 1.7 and 1.8 and provides subset of ECMAScript 5 API, however instead of running on the client, it gets executed in the Google Cloud. According to Google, Apps Script "provides easy ways to automate tasks across Google products and third party services." Apps Script is also the tool that powers the add-ons for Google Docs, Sheets and Slides.

Google Developer Day

Google Developer Day events were one-day web developer-focused gatherings around the world held annually by Google. They include seminars and codelabs focused on building of web, mobile, and enterprise applications with Google and open web technologies such as Android, HTML5, Chrome, App Engine, Google Web Toolkit and give participants an excellent chance to learn about Google developer products as well as meet the engineers who work on them.

Google Developers

Google Developers (previously Google Code) is Google's site for software development tools, application programming interfaces (APIs), and technical resources. The site contains documentation on using Google developer tools and APIs—including discussion groups and blogs for developers using Google's developer products.

There are APIs offered for almost all of Google's popular consumer products, like Google Maps, YouTube, Google Apps, and others.

The site also features a variety of developer products and tools built specifically for developers. Google App Engine is a hosting service for web apps. Project Hosting gives users version control for open source code. Google Web Toolkit (GWT) allows developers to create Ajax applications in the Java programming language.

The site contains reference information for community based developer products that Google is involved with like Android from the Open Handset Alliance and OpenSocial from the OpenSocial Foundation.

Google Developers Live

Google Developers Live is the live, streaming content for the developers and Google developers on many of Google's platforms. Through the use of streaming video and Google+ hangouts, it is organized by Google around the world. Google Developers Live features highly technical, in-depth topics focused on building of web, mobile, and enterprise applications with Google and open web technologies such as Android, HTML5, Chrome, Chrome OS, Google APIs, Google Web Toolkit, App Engine,Cloud, Google Maps, YouTube and more, and give participants an excellent chance to learn about Google developer products as well as meet the engineers who work on them.

Index of JavaScript-related articles

This is a list of articles related to the JavaScript programming language.

Jahia

Jahia is a WCM with a user interface built using Google Web Toolkit and stores its content using the JCR API default implementation Apache Jackrabbit.

List of JavaScript libraries

This is a list of notable JavaScript libraries.

List of toolkits

A toolkit is an assembly of tools; set of basic building units for user interfaces.

The word toolkit may refer to:

Abstract Window Toolkit

Accessibility Toolkit

Adventure Game Toolkit

B-Toolkit

Battlefield Mod Development Toolkit

Cheminformatics toolkits

Dojo Toolkit

Fox toolkit

Globus Toolkit

GTK+, the GIMP Toolkit

Google Web Toolkit (GWT)

Harmony (toolkit), an incomplete set of software widgets

Helsinki Finite-State Technology (HFST)

Insight Segmentation and Registration Toolkit

IT Mill Toolkit

Learnosity Toolkit

Molecular Modelling Toolkit

Multidimensional hierarchical toolkit

Sun Java Wireless Toolkit

OCR SDK, OCR Toolkit

OpenGL Utility Toolkit (GLUT)

Open Inventor 3D graphics API

Qt

Motif

Natural Language Toolkit

Portable, Extensible Toolkit for Scientific Computation

RWTH FSA Toolkit

Rialto Toolkit

Scedu Tender Readiness Toolkit

Sprite Animation Toolkit

Standard Widget Toolkit (SWT)

Synthesis Toolkit

Template Toolkit

The Coroner's Toolkit, computer programs for digital forensic analysis

User Interface Toolkit (UIM)

X Toolkit Intrinsics

LogicalDOC

LogicalDOC is a proprietary document management system that is designed to handle and share documents within an organization. LogicalDOC is a content repository, with Lucene indexing, Activiti workflow, and a set of automatic import procedures. The system was developed using Java technology.

Model–view–presenter

Model–view–presenter (MVP) is a derivation of the model–view–controller (MVC) architectural pattern, and is used mostly for building user interfaces.

In MVP, the presenter assumes the functionality of the "middle-man". In MVP, all presentation logic is pushed to the presenter.

OpenKM

OpenKM is a Free/Libre document management system that provides a web interface for managing nonspecific files. OpenKM includes a content repository, Lucene indexing, and jBPM workflow. The OpenKM system was developed using open technology (Java, Tomcat, Lucene, Hibernate, Spring).

In 2005 two developers involved in open source technologies and expertise with some commercial document management solutions (SharePoint, Documentum, Hummingbird, among others) like Excalibur search engine or Kofax OCR engine decided to start an open source project based on high level technologies to build a document management system that they decided to call OpenKM.

At the project's outset, it received the help of Spanish government funds from the PROFIT PROJECT. At the end of 2006 the first OpenKM version was released.

In 2011 and 2012, OpenKM began to expand its markets, translating the application to over 35 languages, allowing the Document Management System to be used worldwide, by creating a network of partners.

In 2017, with the goal of providing better customer relations in all regions, OpenKM established subsidiaries in Canada, France, Germany, Indonesia, Italy, the MENA region and the USA. The new branches were created to have staff better able to respond to the needs of local customers and those interested in OpenKM.

Pyjs

Pyjs (formerly Pyjamas before May 2012), is a rich Internet application framework for developing client-side web and desktop applications in Python. The resulting applications can be run in a web browser or as standalone desktop applications.

It contains a stand-alone Python-to-JavaScript compiler, an Ajax framework and widget toolkit, and through use of these components, developers can write comprehensive applications, to run in all major web browsers, without writing any JavaScript. Pyjs is a port of Google Web Toolkit (GWT) from Java to Python.

Rialto (programming)

Rialto (short for "rich Internet application toolkit") is an open-source Javascript library for using in web browsers. The library provides user interface widgets, has drag and drop capabilities, Ajax communication. Recently support for Google Web Toolkit was introduced. There is also additional official support for JSP, JSF, PHP, Python, .NET Framework. A visual user interface builder is available too. Rialto is distributed under an Apache license.

Smart client

Smart client is a term describing a computer application environment which:

delivers applications over a web Hypertext Transfer Protocol (HTTP) connection

does not require installation (or provide automated installation and updates)

automatically updates without user action

has the look and feel of desktop applicationsThe term "smart client" was chosen to refer to simultaneously capturing the benefits of a "thin client" (zero-install, auto-update) and a "fat client" (high performance, high productivity).

A smart client application can be created in several very different technologies. The original use of the term in the context of the web was Isomorphic Software's SmartClient product. They have owned the SmartClient.com domain since 2001.

It uses an Ajax-based, cross-browser approach. In 2004, Microsoft began using the term to refer to .NET applications delivered via its ClickOnce methodology from Internet Explorer browsers to Windows XP. The terms "rich Internet application" and "rich web application" are essentially synonymous with "smart client", and are used to refer to several other technological approaches including Adobe Flash, Java applets and Webstart applications.

The smart client approach came about because when businesses tried to develop web applications to replace their old desktop applications, user productivity decreased. This was because web-based user interfaces based on server-side HTML generation are typically not as responsive, have fewer hot keys, require more use of the mouse and are unreliable when handling large files such as computer aided design drawings.

Smart client applications bridge the gap between web applications and desktop applications. They provide the benefits of a web application (such as using the Internet for remote access to data) while still providing the snappy look and feel inherent to desktop applications.

Platforms for building smart client applications:

Flex from Adobe, which uses Flash or Adobe AIR as a runtime platform.

JavaFX from Oracle Corporation, or Google Web Toolkit, both for Java; the former can also be used in Scala

Silverlight from Microsoft (although this is only supported on Windows and Mac; the Linux port, Moonlight, was abandoned due to lack of popularity)

Spiral Universe

Spiral Universe provides a software platform for student information, learning management, and distance learning applications. The company is based in White Plains, New York. The flagship product is called Spiral, a rich Internet application available under the software as a service model. Features include course management, gradebook, attendance tracking, student records, reporting, report cards and transcripts, student portal, parents portal, and scheduling.

The system is available in several languages in addition to English, including Spanish, French, and Chinese. The company has customers in 100 countries, including Uganda.The first generation of Spiral ran on Linux, PostgreSQL, Java, Spring Framework, Tomcat, and Ext/Google Web Toolkit (GXT). The software is compatible with the Schools Interoperability Framework (SIF). JasperSoft is used as a tool for reporting.In February 2013 the company released a new generation of the Spiral system that runs on Google App Engine.In 2014 Spiral Universe has been acquired by STI.

C++
CLI
ColdFusion
Common Lisp
Haskell
Java
JavaScript
Perl
PHP
Python
Ruby
Scala
Smalltalk
Other languages
Code analysis
Transcompilers
Concepts
Debuggers
Doc generators
Editors (comparison)
Engines
Frameworks
Related technologies
Package managers
Server-side
Unit testing
People
Dialects
Engines
(comparison)
Frameworks
People
Other
Overview
Advertising
Communication
Software
Platforms
Hardware
Development
tools
Publishing
Search
(timeline)
Events
People
Other
Related
Low-level
High-level
Basic frameworks
Site-specific browsers

This page is based on a Wikipedia article written by authors (here).
Text is available under the CC BY-SA 3.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.