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.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Scott Delap on Sep 21, 2006
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.
Mobile and the New Two-Tiered Web Architecture
Using Drools? See what you're missing! Get the Power of Drools with the Assurance of Red Hat
Monitor your Production Java App - includes JMX! Low Overhead - Free download
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
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.
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.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
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.
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.
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.
No comments
Watch Thread Reply