InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Instantiations Adds Google Web Toolkit Support with GWT Designer

Posted by Scott Delap on Sep 21, 2006

Sections
Development
Topics
Rich Internet Apps ,
Java
Tags
Swing ,
GWT ,
GWT Designer
GWT has become the new favorite technology of tools providers. InfoQ previously covered the announcement of Wirelexsoft's VistaFei GUI design tool. Instantiations, makers of visual design tools for SWT and Swing, has now added GWT support with their beta release of GWT Designer. Among the product's main features:

  • Bi-directional Code Generation - Java code can be changed graphically or in source with changes reflected in the other view.
  • Fast Operations - Edits and Updates in 300-400 milliseconds
  • Rich Editing Experience - Support for Grids, FlexTables, and TabPanels
  • Wizard & Builders - Wizard for creating PopupPanels, DialogBoxes, etc. Builders for "async" services.
  • GWT Application Launching - Launch GWT Applications from Eclipse
  • Intelligent Refactoring - Renaming modules classes and remove service updates modify the module XML files and renames any associated *Async and *Impl classes
  • Internationalization - Hard coded string can be extracted to resource bundles
InfoQ sat down Instantiations Vice President, Mark Johnson, and Sr Vice President of Product Development, Eric Clayberg, to discuss their new product. In regards to why create an GWT designer Johnson responded:

By all measures Instantiations has the market-leading Java GUI builder for Eclipse with our WindowBuilder Pro product. With WindowBuilder's component products - SWT Designer and Swing Designer - we support the two most popular Java client GUI frameworks. WindowBuilder is all about giving developers the choice of which framework they use (SWT or Swing) to build their Java client GUIs. Since GWT puts AJAX application development into the realm of the Java developer, it made a lot of sense for us to support the GWT framework. In addition, the WindowBuilder product is mature and has very sophisticated development facilities (drag-n-drop, bi-directional code generation, internationalization, multitude of layout managers) so we can leverage those facilities and make them available to developers who want to build web applications using GWT.

We then asked Clayberg about the challenges of working with GWT:

The biggest challenge was in making it work at all. As you may know, GWT uses native methods with special special comments to declare JavaScript methods. This allows it to implement the lowest-level functionality of the core GWT classes in handwritten JavaScript. On the other hand, inside of JavaScript special naming is used for the reverse task - calling Java code from JavaScript (JSNI). GWT borrows this concept from the Java Native Interface (JNI). Our aim was to implement true WYSIWYG with full widgets and CSS support, so we needed to be able to load these classes and use them just like as other SWT/Swing components. This required a lot of magic with COM/OLE and class loaders. We also employ a *proprietary* technique of using ASM for fast bytecode modification that converts JavaScript methods into normal Java methods. In the end, we have a very fast system that works several times faster than the original Google GWTShell.

Another non-trivial challenge is the support for images (and other resources). GWTShell starts Tomcat to serve up static contents. Due to speed and memory limitations we can't afford to start Tomcat each time the user opens a new editor, so we register a special custom Internet protocol within IE that routes URL requests to our Java handler.

In terms of which features he's most proud of:

We are very proud that it works at all ;-) and does it very fast, with true WYSIWYG and bi-directional code generation. You can work in the design view or source view and changes are kept in sync instantly. The ability to reverse engineer existing GWT code (either hand written or generated by GWT Designer) means that the user isn't limited in how they want to evolve their work. They can refactor their code, insert arbitrary logic, etc. without breaking the ability of the graphical design view to render their window.

The graphical design tools are also first class with excellent, context-sensitive feedback provided for any graphical operation. Matisse-like snapping and alignment feedback is provided in absolute (xy) panels, while grids and flex tables provide very nice table-oriented feedback. Creating tab panels and custom composites is also very easy and intuitive.

Another complex feature is i18n (Internationalization) support. Several months ago we did a major rewrite of our i18n support in Designer. We made it very flexible with the goal of easily adding any new i18n source pattern. Once we found that GWT version 1.1 supported i18n (using a new i18n pattern custom to GWT), we were able to add support for it in GWT Designer. It integrated easily into our existing i18n framework. We are always proud when a new feature can be implemented using an existing general framework or when adding a new feature makes it obvious that some existing features can be done using a more general and flexible approach.

Finally Johnson commented on where Instantiations sees the GWT marking going in the future. The Ajax market has featured a tremendous amount of churn and indecision in regards to which framework might become a (defacto) standard. Google brings a crediable option to the table with their industry clout, experience with Ajax apps (such as GMail and Google Maps), and significant contribution of resources advancing GWT. Instantiations believes that GWT will be an important framework for building next generation RIA applications.

No comments

Watch Thread Reply

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.