This is a sort of follow-up (a 3 pager) to my recent blog "Still on a fence about GUI?" I think there are roughly two groups of people who are still on the fence: those who have tried various options and understand their differences, and those who don’t yet realize that almost all of the popular options are pretty much alike.
I’m going to coin a term here and let’s see if it sticks: JACXX ("jacks"). This represents a class of tools that make use of the following technologies:
Why is AJAX in there, and why isn’t this AJAX? Because Ajax is about the communications between client and server. I’m talking about the tools we use to create the user interface, independent of the communications – these are completely different areas. Ajax is a component of this development paradigm, and Ajax itself isn’t a specific technology, it’s a concept. With Ajax your exchanges may not necessarily be Asynchronous, and in fact most Ajax exchanges aren’t at a certain level. And with Ajax, you don’t necessarily need to use XML for transport – you can use JSON. So strictly speaking Ajax isn’t always AJAX, but the core concept of partial postbacks is always a component of JACXX.
Why are XML and XHTML both in there when XHTML is a form of XML? Well, most development in this area makes use of a custom XML dialect or schema which ultimately results in standards-compliant XHTML. You can’t render this code directly in a browser but you can run it through a pre-processor which then generates the proper XHTML for whatever browser/device the client happens to be using. This sort of coding usually involves a combination of basic XHTML tags plus some special XML markup.
Here is an example:
<selection order="1" value="kitty" text="Cat"
<selection order="2" value="puppy" text="Dog"
Let’s take a quick look at what’s out there, the links point to examples of the JACXX used to create the various UI’s.
- Silverlight with XAML (this example happens to be with IronPython for those who think Silverlight is all about C# and VB.NET)
- Flex with MXML
- ZK with XUL and XUML
- .NET with ASP.NET or WPF (XAML)
- Java with SWIXML or Pustefix (that’s some scary code)
- Google Desktop and the Google Gadgets API
- Zen for Caché
While I have a great appreciationg for YUI, ExtJS, and other library/frameworks like them, I really don’t want to use them as my primary development tool. Why? No WYSIWYG. I don’t rely on a WYSIWYG IDE for GUI development, but it sure does help when you can see where things go without constantly needing to execute, shift things around, execute again, shift again… Frankly I find that sort of development to be very primitive – and I find it amazing that so many people still insist on wasting their time writing code like this.
So as you shop around for the perfect languages, tools, and IDEs to build your GUI, at least understand one thing – the popular ones are pretty much all alike. Some people will say "I don’t like XAML" when it’s really the same as MXML. People eschew ASP.NET when the "brand spankin new" Google Gadgets is built using pretty much the same code. And when someone tells me they prefer ExtJS to YUI, my response is "what the heck is the difference?".