Google Web Toolkit (GWT ), or GWT Web Toolkit, is an
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
set of
tools
A tool is an object that can extend an individual's ability to modify features of the surrounding environment or help them accomplish a particular task. Although many animals use simple tools, only human beings, whose use of stone tools dates ...
that allows
web developer
A web developer is a programmer who develops World Wide Web applications using a client–server model. The applications typically use HTML, CSS, and JavaScript in the client, and any general-purpose programming language in the server. is used ...
s to create and maintain
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
front-end applications in
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
. It is licensed under
Apache License 2.0.
GWT supports various web development tasks, such as
asynchronous remote procedure calls, history management,
bookmarking,
UI abstraction,
internationalization
Internationalization or Internationalisation is the process of increasing involvement of enterprises in international markets, although there is no agreed definition of internationalization. Internationalization is a crucial strategy not only for ...
, and
cross-browser portability.
History
GWT version 1.0 RC 1 was released on May 16, 2006. Google announced GWT at the
JavaOne conference in 2006.
In August 2010, Google acquired Instantiations, a company known for focusing 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 stated that GWT would continue to be supported for the foreseeable future while also hinting at a possible rapprochement between the two Google approaches to structured web programming. However, they also mentioned that several of the engineers previously working on GWT are now working on
Dart.
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. In July 2013, Google posted on its GWT blog that the transformation to an open-source project was completed.
Development with GWT
Using GWT, developers have the ability to develop and debug
Ajax
Ajax may refer to:
Greek mythology and tragedy
* Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea
* Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris
* Ajax (play), ''Ajax'' (play), by the an ...
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
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
files that are optionally
obfuscated and deeply optimized. When needed, JavaScript can also be embedded directly into Java code using Java comments.
GWT does not revolve only around user interface programming; it is a broad set of tools for building high-performance client-side JavaScript functionality. Indeed, many architectural decisions are left entirely to the developer. The GWT mission statement 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 detail how to map history tokens to an application state.
GWT applications can be run in two modes:
* ''Development mode'' (formerly ''Hosted mode''): The application runs as Java bytecode within the
Java Virtual Machine
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally descr ...
(JVM). This mode is typically used for development, supporting the
hot swapping of code and debugging. In 2014, the classic implementation of Dev Mode was rendered unusable by browser updates until its replacement with the more compatible ''Super Dev Mode'', which became the default in GWT 2.7.
* ''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 for
NetBeans
NetBeans is an integrated development environment (IDE) for Java (programming language), Java. NetBeans allows applications to be developed from a set of modular software components called ''modules''. NetBeans runs on Microsoft Windows, Windows, ...
, Cypal Studio for GWT (an
Eclipse
An eclipse is an astronomical event which occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ...
plugin), and GWT Developer for
JDeveloper
JDeveloper is a freeware IDE supplied by Oracle Corporation. It offers features for development in Java, XML, SQL and PL/SQL, HTML, JavaScript, BPEL and PHP. JDeveloper covers the full development lifecycle from design through coding, debug ...
. 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
Syntax highlighting is a feature of text editors that is used for programming language, programming, scripting language, scripting, or markup language, markup languages, such as HTML. The feature displays text, especially source code, in differe ...
.
Components
The major GWT components include:
;GWT Java-to-JavaScript Compiler
: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 by using 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 built-in classes to implement otherwise time-consuming dynamic behaviors, such as drag-and-drop or complex visual tree structures.
* Simple
RPC mechanism
* Browser history management
* Support for full-featured Java debugging
* GWT handles some cross-browser issues for the developer.
*
Unit testing
Unit testing, component or module testing, is a form of software testing by which isolated source code is tested to validate expected behavior.
Unit testing describes tests that are run at the unit-level to contrast testing at the Integration ...
integration
* Support for
Internationalization and localization
In computing, internationalization and localization (American English, American) or internationalisation and localisation (British English, British), often abbreviated i18n and l10n respectively, are means of adapting to different languages, regi ...
*
HTML Canvas support (subject to API changes)
* 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 applications in a pure object-oriented fashion since they're using Java (instead of JavaScript).
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 (Source-Mapped or Source-Code) and easier to understand or obfuscated and compressed.
* A number of libraries are available for GWT, by Google and third parties. These extend the toolkit's features.
Available widgets
As of version 2.4 (September 2011), Google Web Toolkit offers several
widgets and panels.
Many common widgets not found in the GWT have been implemented in third-party libraries.
Enterprise usage
GWT uses or supports
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
,
Apache Tomcat
Apache Tomcat (called "Tomcat" for short) is a free and open-source implementation of the Jakarta Servlet, Jakarta Expression Language, and WebSocket technologies. It provides a "pure Java" HTTP web server environment in which Java code can also ...
(or similar web container),
Eclipse IDE
Eclipse is an integrated development environment (IDE) used in computer programming. It contains a base workspace and an extensible plug-in system for customizing the environment. It had been the most popular IDE for Java development until 20 ...
,
Internet Explorer
Internet Explorer (formerly Microsoft Internet Explorer and Windows Internet Explorer, commonly abbreviated as IE or MSIE) is a deprecation, retired series of graphical user interface, graphical web browsers developed by Microsoft that were u ...
, and
internationalization and localization
In computing, internationalization and localization (American English, American) or internationalisation and localisation (British English, British), often abbreviated i18n and l10n respectively, are means of adapting to different languages, regi ...
. Java-based GWT
rich web applications can be tested using
JUnit
JUnit is a test automation framework for the Java programming language. JUnit is often used for unit testing, and is one of the xUnit frameworks.
JUnit is linked as a JAR at compile-time. The latest version of the framework, JUnit 5, resides ...
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 requiring the manual testing commonly required by RIAs.
Google has noted that some of its products are GWT-based:
Blogger
A blog (a Clipping (morphology), truncation of "weblog") is an informational website consisting of discrete, often informal diary-style text entries also known as posts. Posts are typically displayed in Reverse chronology, reverse chronologic ...
,
AdWords
Google Ads, formerly known as Google Adwords, is an online advertising platform developed by Google, where advertisers bid to display brief advertisements, service offerings, product listings, and videos to web users. It can place ads in the res ...
,
Flights,
Wallet
A wallet is a flat case or pouch, often used to carry small personal items such as physical currency, debit cards, and credit cards; identification documents such as driving licence, identification card, club card; photographs, transit pass, b ...
,
Offers,
Groups,
Inbox
Electronic mail (usually shortened to email; alternatively hyphenated e-mail) is a method of transmitting and receiving digital messages using electronic devices over a computer network. It was conceived in the late–20th century as the ...
.
GWT 2.0
On December 8, 2009, Google launched Google Web Toolkit 2.0 with Speed Tracer.
Version 2.0 of GWT offers a number of new features,
including:
* In-Browser Development Mode (formerly known as Out Of Process Hosted Mode, OOPHM): prior to version 2.0, the hosted mode was 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 can 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 a 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, Google Web Toolkit is also capable of being used as a framework for creating 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
*
Dart (programming language)
Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.
Dart is an object-oriented, class-based, garbage-colle ...
*
Google Plugin for Eclipse
*
Google Code
*
Comparison of JavaScript-based web frameworks
*
Comparison of web frameworks
*
Emscripten
Emscripten is an LLVM/Clang-based compiler that compiles C and C++ source code to WebAssembly, primarily for execution in web browsers.
Emscripten allows applications and libraries written in C or C++ to be compiled ahead of time and run effi ...
for converting
C++ into JavaScript or
WebAssembly
WebAssembly (Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating communication between such programs and their host environment.
The main goal of ...
*
RAS syndrome
References
Bibliography
*
*
*
*
*
{{Authority control
Web Toolkit
Java platform
JavaScript libraries
Rich web application frameworks
Software using the Apache license
Web development software