GWT is an open source set of tools that permits developers to create and keep complicated JavaScript applications in Java. Google first released GWT on May 16th, 2006. In June of 2012, Google handed control of the project over to a steering committee which includes members from Vaadin, Google, Sencha and RedHat. The report provides the most thorough survey of GWT development ever carried out.
While GWT is often thought of as an enterprise technology, 65 % of the study participants are dealing with tasks for use outside of their business. That said, only 1 % of the jobs are games – the vast bulk are business applications.
Half of the respondents are dealing with projects which contain over a million lines of uncompressed obfuscated Javascript code which suggests that either GWT applications are complex and/or that GWT generates a lot of Javascript code for relatively simple apps. Forty-six percent of the applications have 21+ screens, and a number of the comments in the report suggest that one of the big benefits of GWT is access to static typing and compile time error checking in Java when working with multiple developers. However, the average GWT project team surveyed has less than three front end developers, so the majority of the projects aren’t working with large numbers of front end engineers.
While the substantial majority of the apps (over 98 %) target desktop-based users, the variety of these apps that also also target tablets (36 %) eclipses the 26 % of apps that also focused on mobile phones.
The main complaints with GWT are compile time (49 %) and the lack of enough good quality UI widgets (34 %). The biggest benefit of GWT is not having to deal with browser compatibility problems (60 %). In spite of the problems, over 88 % of the self selected participants prepare to make use of GWT on their next project.
Pros:
- If you are a Java veteran with experience in Swing or AWT, then selecting GWT should be a no-brainer. The discovering curve is the least with this background.
- Even if you are not experienced in Java GUI development, the experience in working on server-side Java for many years will come in handy while developing GWT apps
- You can create highly responsive web applications with heavy lifting on the client-side and reduced chattiness with the server-side
- Although there are numerous JavaScript libraries out in the wild and many of them are worth their salt, many traditional developers don’t understand its real power. Keep in mind, a powerful language like JavaScript is a double-edged sword. If you do not understand ways to use it, even you will not be able to clean the mess you develop
- You can migrate from a common web application to a GWT application iteratively. It is not an all or absolutely nothing proposal. You can utilize a brilliant trick called JSNI to interact with loads of JavaScript functions you already possess. But it is always better to move them to GWT sooner rather than later
- The IDE support for GWT can not be better. Java IDEs have actually matured over the past decade to be among the best in the world and GWT can take direct advantage of it
- The built-ined debugging beauty is something you can eliminate for. The exceptional debugging support provided by the mature Java IDEs is one feature that could sway anybody’s choice in favor of GWT
- The built-in IDE support to refactor Java code can directly be put to good use to keep a simple design at all times. Doing this in JavaScript is not for the faint at heart
- The IDE syntax highlighting, error checking, code completion shortcuts etc are overwhelming– to say the least
- GWT is being actively developed by Google. We know that the project is not going to die off anytime soon. Until now their commitment towards the project says a lot about its future in the industry.
- The community behind the project is also a big PLUS. Discussions take area daily in Heap overflow, conversation online forums, wikis and personal blogs. A basic search with the right keyword can point you in the right direction
- GWT is a well thought-out API; not something that was assembled in a hurry. This helps you as a developer to quickly comprehend the abstractions and makes it really intuitive to use
- You can use GWT’s built-in method to transfer data in between the customer and the server without any additional understanding of how the data is packaged and sent. If you prefer more control, you can constantly use XML, JSON or another exclusive format of your choice. Even in that case, while utilizing JSON, you don’t need to use an non-intuitive java JSON library. You can use JSNI to ‘eval’ the JSON making use of straight javascript. Cool huh!
- You have the advantage of having the ability to use conventional Java static code analyzers like FindBugs, CheckStyle, Detangler, PMD etc to monitor code and design quality. This is essential when you are working in a big team with varying experience.
- You can make use of JUnit or Test NG for unit screening and JMock or another mock library for buffooning reliances. Following TDD is straight-forward if you already work it. Although there are JavaScript based device testing frameworks like jsunit and qunit, come on inform me the number of individuals already understand that or are itching to utilize that.
- The GWT compiler generates cross-browser JavaScript code. Today, any marketing person who says this will most likely be beaten. It has actually now ended up being a basic need, not a luxury
- The GWT compiler enhances the generated code, gets rid of dead code and even obfuscates the JavaScript for you all in one shot
- Although the compilation process takes hell a lot of time, you do not have to go through that during development. There is an unique hosted mode that uses a browser plug-in and direct java byte-code to produce output. That is one of the main reasons you are able to utilize a Java debugger to debug client side code.
- Rich third-party controls are offered through many jobs like Smart GWT, Ext GWT etc. They are well created, easy to use and theme-able. So, if you have a requirement where existing controls don’t just cut it, you should be looking into one of these projects. There is an actually fat chance that one of those components will work out. Even if that doesn’t work out, you can always roll out your very own.
- GWT highlights the principle of a stateful client and a stateless server. This results in extremely less load on the server where many users have to co-exist and high load on the client where just one user is working
- I18N and L10N are pretty straight-forward with GWT. In fact locale based collection is taken care by the GWT compiler itself. The same can not be said about regular client-only frameworks
- GWT comes built-in with browser back button support even while using AJAX. If you are an AJAX developer, I can nearly feel your relief. This is priceless.
Cons:
- GWT is a fast developing project. So, there are a lot of versions floating around. Many functions, interfaces and events get deprecated and staying up to date with their pace is not too much fun when you have other work to do
- There were quite a few GWT books during the beginning. Not so much nowadays. For example, I have not found numerous books on the 2.0 version of GWT. This leaves us just with Google’s documents. I agree that the documentation is good and all, but nothing can beat a well written book
- GWT is not fun to work with. After all it is Java and Java is not a fun language to work with. If you add the fact that entire layouts and custom controls should be developed in java, you can easily make a grown programmer cry. With the introduction of UI binder starting version 2.0, that problem is type of solved, now you have a brand-new syntax to discover.
- The Java to JavaScript compilation is relatively slow, which is a considerable con if you select GWT.
- I personally like defining structure in HTML and styling it making use of CSS. The ideas used in HTML are clean and straight-forward and I have years of experience doing just that. But in GWT, I am kind of forced to make use of proprietary methods to do the same. That integrated with the truth that GWT does not address the styling and alignment incompatibilies for me compounds the issue. So, composing layout code in GWT is something I despice. However with UI Binder and HTMLLayout from variation 2.0 onwards, I feel I am back in my own territory
- It needs some major commitment levels to get into GWT, coz, after that, a modification in client side technology might need a full rewrite of your app, as it is a radically different technique than other client side frameworks
- There is not a specified way to approach an application development making use of GWT. Should we utilize just module per app or one module per page or someplace between. These design patterns are slowly advancing just now. So, normally individuals have the tendency to establish all in one module till the module size goes beyond being acceptable and afterwards they refactor it into multiple modules. However if it is too late, then refactoring can not be that easy either
- Mixing presentation and code does not seem right although normal desktop GUI applications does just that. However nowadays, even desktop application frameworks like Flex and Silverlight have actually taken an XML based declarative technique to different presentation from logic. I think GWT 1. x version had this downside. With the introduction of UI Binder starting from version 2.0, I think this downside can be written off although it is yet another painful XML language to discover
- You would often be punching in 3X to 5X more code than you would with other customer libraries– like jQuery– to get easy things done
- You must likewise keep in mind that with GWT, the abstraction far from HTML isn’t really full. You’ll still have to comprehend the DOM structure your app is producing in order to design it, and GWT can make it more challenging to see this structure in the code.
- GWT is an advantage just for Java developers. Developers with.NET or PHP background will not obtain anything right here
- If you have tasted the power of JavaScript and know how to correctly utilize it to your benefit, then you will feel maimed with an unexpressive language like Java
.
GeoViz has a history of serving enterprises to move to the next level of operational excellence focusing people, processes, infrastructure, and technology. We deliver, complex software development projects, Team Augmentations(co-sourcing), Business Intelligence, Retails Management, CRM, & Internet Technology solutions. GeoViz serves client inside North America specifically USA and Canada. We have physically served clients in the cities of Seattle, Toronto, Buffalo, Ottawa, Monreal, Hamilton, London, Kitchener, Windsor, Detroit. Feel free to contact us or Drop us a note for any help or assistance.
Drop Us A Note
[gravityform id=”2″ name=”Drop us a Note” title=”false” description=”false” ajax=”true”]