Tuesday, December 4, 2007

Rich and Thick and Thin

An online editor user interface needs a thick client, and a thin server.  If a thin web client is HTML or AJAX, a thick web client is Flash or Java.  The thick web client provides stateful user interaction which it mediates in complex ways to produce minimized server side operations.   In this way a rich user experience can be delivered with a high volume, scalable server side.

A thin AJAX client is useful when there is a direct (one to one) relationship between user interface operations and server side operations.  The reason being that JavaScript gets stretched thin when it's not simple.  I'm writing this using Gmail, which could be held up as evidence to the contrary.  However I'll submit that Google have rather shown what it takes to deal with as much complexity in JavaScript, inventing GWT as an engineering organization framework and hack repository.

The choice I've made for the Syntelos client side is the Java Applet.  While Flash has great graphics, the platform is more than a bit tricky from an engineering perspective.  The open source Batik based Flex toolset is too inflexible with respect to generated code version, and too large a footprint for application to the internet scale server side. 

The Java choice permits fairly massive code reuse between the SX Server and the Viz Applet. In comparison with Flash, the Java client side is extensible -- if subject to the vagaries of the Java Applet Plugin World.  If there's one thing I know about Javaland, it's that everything changes, year by year.  Here's looking for native threads,  Java3d and JMF in the Java Applet Plugin World.  Anyway, I can live with The Applet Plugin Situation, preferring MacOSX, and reusing code from the server side in the client side.   It only needs to be the first option, my first option -- since the server side is completely independent.

The rest of the world tends to call it a Rich client.  With the state of the JAPW graphics rendering in Solaris and Windows and Linux (no native threads), I can't call it Rich.  I'll just call it Thick.

No comments: