Tuesday, July 24, 2007

GUI Web Swing

I am not talking Spiderman. Nor talking specifically about ultra difficult Java swing. Rather I am talking about the swing of preference from thin client to thick client in web app.

Pre-Web
In the beginning of personal computing (pre-Web) there was 80x25 character MS-DOS. Newbies wonder where was the husband MR-DOS, and do you have to make an appointment to see DR-DOS. Oh those days are old. People demanded more than standard input/output. Blinking cursor and scrolling text to top of screen is not enough. Then standard controls such as buttons, scrollbars, menubars are invented and graphics interface GUI simply push DOS out the window.

The problem is this: it is much more difficult to program in GUI. Programmers who only knew command-line programming will almost certainly faint if they see a Windows SDK Hello World program for the first time. Ok, take a deep breath and look here when you are ready.

Paradigm Shift
The whole paradigm is different! No longer a program has a beginning and and end. Windows take over! It is event driven! When someone click a button, Windows will notify you! You've gotta handle the message. Complex programming is one of the cost of prettier UI. Fortunately, few need to handle raw Windows programming now.

Given such complexity, if there are no other tools to make it easier, I'll say the number of programmers would be as few as the number of Latin scholars because only the elites can handle this type of stuff.

Fortunately there are easier things such as Visual Basic and Delphi that makes such programming easier. As we get a good handle on writing full blown GUI apps, then there comes the World Wide Web.

Swing to thin client
Whoah. Information from another computer can be seen in yours! Soon, everyone and their dogs have websites. In the old days it was like reading newspaper, everything is read-only. Then people demanded interactive sites! and online commerce! Then HTML is supplied with a few basic controls such as editbox and submit buttons and voila. HTML buttons and controls are so very easy. (ok, the processing is a bit harder, that's another topic). Program become simpler: HTML form, submit, load another form.

With HTML and browsers, full blown applications suddenly become less important. It seems like Microsoft Office are what everyone will ever need. The world is content with basic (and boring) controls such as editbox, radio button, textareas. This is thin client. Most are happy with display->submit->display scheme of http.

Swing to thick client
When asynchronous Javascript (AJAX) was added in IE5, nobody even noticed, but suddenly someone make use of it and added more interaction. This makes apps more functional. Everyone is fascinated by the zooming ability of google maps (compared to old yahoo maps).

Now people are tired of boring controls, people demand heavier, richer clients, inside a webpage. Java has swing library for so long, yet it is super duper complex and hard to make it run on a webpage. Java's AWT was fairly easy, but not very powerful, and now nobody likes Java applets.

Flash is THE thing. Powerful, lots of cool effects, graphic intense (but expensive). Just look at how many cool sites and games are written in Flash. Java GUI is simply inferior. Flash had not met the fate of Java applets where is it labeled as dangerous and browsers won't even load it. But it isn't so easy to do a flash app. The GUI of Flash is quite complex, and it isn't a typical code-compile-build that programmers are used to.

It seems all books focus on the graphics aspect of it. Can it have some data entry forms, talk to database and do some business? Possible, but not obvious.


The pendulum is swinging back to thick clients. Customers now demand more functionality that combines beautiful UI.


Enter Adobe Flex: script based language that produce Flash files.
It lets you build flash business apps quickly. But it is strangely combining javascript-like code and form description code. And it may take a while to get used to. Sun (Java) tries to do the same, with JavaFX. They mess up their own good Java language! Sun loses another battle if you ask me.

I have long waited for fun new things in programming. Flex is it.

Let's see if I turn my math demo programs to Flash....

No comments: