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. 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 (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, Cypal Studio for GWT (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==