GUI Frameworks for Web Applications
John Mao, one of our product managers and a good friend, has been doing some research on GUI frameworks for creating Web applications. He’s a big proponent, and while acknowledging some of the risks (e.g. being dependent on external code), he makes a good argument for not “reinventing the wheel”. Recently he sent me a list of some that he has researched including the following:
.NET
ComponentArt: http://www.componentart.com
Infragistics: http://www.infragistics.com
Telerik: http://www.telerik.com
Javascript/AJAX
Google Web Toolkit: http://code.google.com/webtoolkit/
Yahoo! User Interface Library: http://developer.yahoo.com/yui/
ComponentArt: http://www.componentart.com
Ext JS: http://extjs.com (a bolt on: http://www.codeplex.com/ExtJsExtenderControl, Write ExtJS code in C#: http://code.google.com/p/extsharp/)
jQuery: http://jquery.com (general animation framework, there are bolt on’s too)
dojo: http://dojotoolkit.org (bolt on’s: http://dojotoolkit.org/projects/dijit, and http://dojotoolkit.org/projects/dojox)
script.aculo.us: http://www.script.aculo.us which is built on top of Prototyp http://www.prototypejs.org)
I would be interested to know if anyone has any specific experience with any of these frameworks and what opinions are about them (and of course if there are others to consider). After taking a look at them, I’m personally leaning towards experimenting with GWT and YUI.

Hey,
Disclaimer: I’m on the YUI team at Yahoo!.
GWT and YUI are fundamentally different. GWT expects you to write Java and then it will, allegedly, generate the JavaScript for you. Perhaps if you have a shop full of Java developers without client-side experience this is attractive. But to me, the client side world has important nuance and complexity that is risky to abstract completely.
YUI’s goal is to abstracts browser shortcomings and inconsistencies while providing clean JavaScript APIs for your to easily interact with. We believe strong web teams should embrace JavaScript instead of hiding from it, but that you should use a library like YUI to protect you from browser differences.
I’m interested in your perspective, so please keep us posted!
Hope that helps.
Thanks,
Nate
Thanks Nate for the comment. In fact, I "enlightened" Russell this morning on your exact comments regarding GWT and YUI. We’re a .NET shop here at NetQoS, so GWT is not a likely candidate for us.
Personally, I lean towards the pure Javascript frameworks for the simple fact that it doesn’t matter what underlying programming framework/language you’re using.
I’ve been looking more and more at YUI 2.5 since it was released and have been quite impressed with the initial findings. I know there are plenty of blog posts and articles doing speed comparisons of different frameworks, but in my opinion, there are so many other important factors than simply the fact that you can render an animation or find a div element 10 ms faster.
I think one of the fundamental challenges that traditional .NET developers may have is breaking the mental paradigm of how they build web-based applications.
It may be great for someone on the YUI team to publish some documents/blogs/articles about how to break this mentality of server controls, etc, and shift towards a new architecture/thinking of client-side requests (via the ConnectionManager, etc) using JSON (just as an example).
Keep up the great work!
I would like to throw in my recommendation for .NET, specifically the benefits of .NET 3.5, at the time of this writing. Our organization uses Visual Studio 2008, C#, and .NET (now 3.5) to create our for-sale WPF controls and UI designers. A work-in-progress that spans back several years, and multiple framework extension updates.
What I have come to understand is that by creating our products on .NET 3.5, the possibilities as to the presentation and logic areas (read: UI and code-behind) have greatly increased. One interesting example, to show the depth to which you can easily customize your UI. You can create a button within another button, where that inner button has a Media element that plays a video. Sure, something’s you will just not do, as it may confuse the end-user, but, the level of customization is a major plus when you sit back and think about the .NET 3.5 framework and deploying highly functional and yet visually appealing applications. I am still impressed to see how much functionality you can get out of a XAML-only (a declarative language derived from XML) application, with animations, Triggers, Styles, various binding types, etc. etc.
Silverlight, a subset of .NET 3.5 for Rich Internet Applications (RIA) being available via “cross-browser, cross-platform, and cross-device plug-in”, will fill the need for applications to run on more than just the Windows platform.
George Scott
Mobiform Software, Inc
Please take a look at the component suites from DevExpress. http://www.devexpress.com
While I cannot speak to their web components, not having used them, I have used their WinForms components. They are powerful, have a good object model, and come with source code should you need it. Support is quite good– they are quick to fix any bug you may find and work with you to resolve problems. Email only, but I believe they are adding phone support also.
They also have CodeRush and Refactor! Pro, both for Visual Studio, which I absolutely could not live without.
Please check them out. Their prices are comparable to the other companies you are looking at.
Harry Nath
I think Ext JS has a very clean, nice and complete API, very nicely presented and documented at their site. They also lead you onto a path that makes you write alot better javascript and really use the language in a good and powerful way.
We develop in Java and C#. On the backburner, I am looking at some of these solutions as well. I favor GWT at this point for our needs, but I’ll admit that I have only briefly looked at YUI.
I personally do not see any impediment for C# developers crossing over to use GWT (or Java developers crossing over to use Volta). In either case, the developers are going to have to learn a new widget set (it is not Swing or WinForms).
The main point here is that the developers should be putting their effort where they get the most business value. Having them chase Javascript/Browser issues is not the main line of business value.
I’ll rain on the Javascript parade some too. Developers should also have first class support tools to go with their language. Javascript is a dynamic language (I have a background in Perl and Ruby, and only have had an introduction to Javascript). If you code in a dynamic language, it is imperative that you have good code coverage with unit tests (some argue that you need more than 100% code coverage, but I’ll let that dog lie sleeping). So the big evaluation criteria is: what tool support is there for Javascript versus Java? I can tell you that you have copious support for debugging, code coverage analysis, unit testing, reverse engineering (think UML diagrams for example), best practices support, and the list goes on.
On Ext-JS, I agree that it presents very well. It would be my choice if I were going with GWT! What? Yep, you heard right – it is compatible with GWT. In fact I heard that there is going to be an Ext-GWT (this will make for better size and performance).
As an added tidbit, Google has committed to developing a hefty portion of their future applications in GWT.
In closing, I can only stress that we consumers of technology need to keep our eyes on the ball; focus on business needs, and focus on keeping your developers efficient. Ignore the songs of the sirens calling your ship to crash on the rocks.
What? No Volta?
http://labs.live.com/volta/faq/
More (javascript)…
SproutCore (www.sproutcore.com)
MooTools (www.mootools.net)