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.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Ryan Slobojan on Aug 28, 2008
Google Web Toolkit (GWT), a Java-centric compiler which creates JavaScript-based web applications, released version 1.5 today. InfoQ spoke with tech lead Bruce Johnson to learn more about this release and what new capabilities it adds to GWT.
Major new features in GWT 1.5 include:
A full list of changes is also available along with release notes.
Johnson described a couple of the changes which are present in 1.5:
[@gwt.eventArgs was previously used as] javadoc-based metadata for RPC. It's a great example because it's a change most people will encounter early on as they upgrade to GWT 1.5. RPC is now so much simpler and richer now because your RPC interfaces can simply specify generic collections. Another thing to be aware of is that GWT 1.5 now fully supports the 'long' primitive data type. Prior to GWT 1.5, 'long' wasn't really properly supported because JavaScript doesn't have a 64-bit integral type, so the full range of a 'long' couldn't be represented using a native JS number. In GWT 1.5, we worked around that by generating extra code to ensure that the behavior of longs is now totally correct, although the performance is somewhat worse than in GWT 1.4. This was a unfortunate situation where we had to choose between maximum performance and correctness, and obviously correctness had to win. If you used longs heavily in GWT 1.4 and speed is more important than the numeric range, consider switching those variables to 'int' or 'double' to maintain the same speed as GWT 1.4.
Johnson also went into detail about the compiler changes which were required to support 1.5:
The GWT compiler's front end reuses the great Java compiler that's part of Eclipse. It handles all the parsing and semantic checks and then builds an abstract syntax tree (AST). We then take that AST and perform optimizations and produce JavaScript output. Using the Eclipse compiler made our lives a whole lot easier, because much of the work is already done. Still, it took a fair amount of work to find ways to represent new concepts such as enumerated types and enhanced for loops efficiently in JavaScript. The new language features also had positive ripple effects throughout the GWT libraries, most obviously in the newfound ability to use generics in RPC, but we also are making extensive use of annotations to replace javadoc-based metadata in things like internationalization, image bundles, and benchmarking.
Johnson described GWT's major web development competitors as falling into three categories, and described how GWT differentiates itself from those competitors:
When askeed how GWT integrated with other Google codebases, Johnson said:
Key point: GWT gives you a lot of leverage, but it isn't intended to be a "walled garden" in any way. Abstractions always leak, so it's better to embrace that fact. We intentionally make it easy for you to punch through the abstractions and get down to the nuts and bolts JavaScript environment so that you can integrate with any other technology you like. That flexibility is a sort of insurance policy for both GWT itself and GWT users: you can be sure that you'll be able to combine any client-side technology you want with GWT, and we (the GWT development team) don't feel as if we have to explicitly provide integrations for an open-ended set of things, because you can always do it yourself without waiting on us. For an example of the kind of flexibility I'm talking about, check out Ray Cromwell's Syndroid work.
Johnson also said that numerous integrations for GWT exist including integrations into Spring, Flash and numerous Google Code projects.
When asked about plans for the future of GWT, Johnson said:
We are going to continue to focus on dramatically improving performance as well as graduating several new widgets out of the GWT Incubator, including a date picker and some fancy new table widgets. We also have other totally new things in the works, such as a declarative XHTML-based UI templating mechanism. Not everything has been scheduled yet, though, but I'd expect those in the next release or two. Which, by the way, I would expect to be a much shorter cycle than GWT 1.5 was.
Johnson also expressed support for the inclusion of GWT as a development environment for Google App Engine, calling it "a cool idea".
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
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
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.
Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.
John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.
No comments
Watch Thread Reply