GWT is a key technology we use; this page provides some technical background about GWT for those who may not be familiar with it, to help understand why we consider GWT such a key technology. SpiffyMap adopted GWT as one of our core technologies in 2009, when GWT 2.0 came out. Since then we have built up a considerable body of experience with it, having used it in large production systems (see products) for many years.
Audience: this is a technical overview intended for those some (minimal) exposure to software development and computing terminology.
What is GWT?
GWT started out as the Google Web Toolkit, but Google later open-sourced the entire codebase. Since open source projects aren't allowed to have Google in the name, the system is now simply known as “GWT” (pronounced gwit) without the letters standing for anything.
Fashions in programming languages come and go, and can be particularly visible in open-source projects. But Java is the “language of the enterprise” - in other words, a favourite with large organisations. Two key design choices have influenced this: its architecture independence (the same program code, once compiled, will run on any kind of CPU) and its emphasis on readability over conciseness. Many programmers value conciseness, but large organisations know that whenever large teams must work on the same codebase, over many years, readability is far more valuable. This is why Java shot to prominence as one of the world's most popular languages quickly after its launch 20 years ago, and has stayed at or near the top ever since (as measured by, for instance, the Tiobe programming language index).
Java has been used in all types of devices from Mars rovers to TV set-top boxes. The world's financial institutions rely on it heavily. 8 billion cellphones have a SIM card which runs Java (JavaCard). The Android phone/tablet operating system is written in Java and so are most applications which run on it. Java is reliable and mature, and so are the tools which developers use to develop in Java: integrated development systems, testing systems, web servers and so on.
What benefits do Java/GWT bring?
- Mature, powerful tools make developers more productive
- Mature testing tools make the software more reliable
- Java's strong type system and object-orientated features mean that many aspects of program correctness can be checked at compile-time, rather than at run-time
- Access to strong type information at compile-time means that many optimisations are possible, producing faster, smaller code to execute
- Java comes with a very rich choice of software libraries for use on the server-side; using GWT means some of these libraries can also be used on the client-side
- It's trivially easy to move client-side code onto the server-side or vice versa, since it's all written in Java
- One of the “pain points” of developing for the web has always been cross-browser incompatibility, particularly Internet Explorer working differently to everything else. GWT hides this difficulty by automatically compiling different versions (called permutations) for different browsers.
These benefits have contributed to Google's invention of GWT and its growing use within Google. AdWords and the new version of Gmail (called Inbox) - two of Google's flagship products - are both written using GWT. The GWT Project's surveys of who uses GWT shows that it is mainly used by large organisations with very large applications to build.
That concludes our overview of GWT. If you have found this introduction useful, please share it: