Google Web Toolkit

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Google Web Toolkit
Original authorGoogle
Initial releaseMay 16, 2006; 20 years ago (2006-05-16)
Stable release
2.12.2 / March 3, 2025; 16 months ago (2025-03-03)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inJava
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemLinux, Windows, MacOS, FreeBSD
    Available inJava
    TypeAjax framework
    LicenseApache License 2.0
    Websitewww.gwtproject.org

    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 JavaScript front-end applications in Java. It is licensed under Apache License 2.0.[2]

    GWT supports various web development tasks, such as asynchronous remote procedure calls, history management, bookmarking, UI abstraction, internationalization, and cross-browser portability.

    History

    [edit | edit source]

    GWT version 1.0 RC 1 was released on May 16, 2006.[3] Google announced GWT at the JavaOne conference in 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
    GWT 2.9.0 May 2, 2020
    GWT 2.10.0 June 9, 2022
    GWT 2.11.0 January 9, 2024
    GWT 2.12.0 October 29, 2024
    GWT 2.12.1 November 12, 2024
    GWT 2.12.2 March 3, 2025

    In August 2010, Google acquired Instantiations,[5] 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.[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 completed.[8]

    Development with GWT

    [edit | edit source]

    Using GWT, developers have the ability to 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 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[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 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 (JVM).[11] 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[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

    [edit | edit source]

    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 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

    [edit | edit source]
    • 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.[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 applications 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 (Source-Mapped or Source-Code) and easier to understand or obfuscated and compressed.[19]
    • A number of libraries are available for GWT, by Google and third parties. These extend the toolkit's features.[19]

    Available widgets

    [edit | edit source]

    As of version 2.4 (September 2011), Google Web Toolkit 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

    [edit | edit source]

    GWT uses or supports Java, Apache Tomcat (or similar web container), Eclipse IDE, Internet Explorer,[22] and internationalization and localization. Java-based GWT rich web applications 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 requiring 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

    [edit | edit source]

    On December 8, 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, 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

    [edit | edit source]

    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

    [edit | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Vaadin to Support Google Web Toolkit (GWT) Development. vaadin.com (June 29, 2012). Retrieved on 2014-05-15.
    8. ^ Google Web Toolkit Blog: GWT News. Googlewebtoolkit.blogspot.com (July 15, 2013). Retrieved on 2014-05-15.
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ GWT mission statement
    11. ^ Debugging in Development Mode
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ GWT4NB
    16. ^ Cypal Studio for GWT
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    21. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    22. ^ GWT Project. GWT Project. Retrieved on May 15, 2014.
    23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    25. ^ Introducing Google Web Toolkit 2.0, now with Speed Tracer
    26. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

    Bibliography

    [edit | edit source]
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

    Lua error in Module:Authority_control at line 153: attempt to index field 'wikibase' (a nil value).