Over the last 10 or so years, web based applications have used HTML. HTML describes the look and feel of the application to the web browser, a piece of software on your local computer. The web browser then interprets the description into a usable ( you hope ) application capable of interacting with users.
This process has worked extremely well, mostly for lack of viable alternatives.
Anyone who has ever used a computer can tell you that web applications offer a very simple set of features. With few exceptions, interactions such as dragging and dropping, using the Right-Click context menus, and other common computer actions are auspiciously missing from the web.
The reason behind this is HTML is not an application language. It is a mark up language for displaying. The original intent was never to have applications on the web, rather a manner for scientists to share research.
As I mentioned above, websites and web applications exist on a remote computer as the description of a visual model. The web browser itself interprets the description and renders visual content. Partly by incompetance and partly by conspiracy, different web broswers interpreted in different ways. Some instructions understood by one browser would be ignored by another. Worse case, the same instruction would be rendered in a completely different way.
Through the years, many schemes for managing these differences emerged. Some developers created different applications for different browsers thusly escaping the compatibility problems. Some chose to reduce functionality to the least common denominator. Some chose to "Internet Enable" their thick client software. Each of these manners had an inherent set of problems proving tough to overcome for the long haul.
The folks with different versions for different browsers ran into serious trouble when making changes to their applications. A change must be made and tested in multiple copies of code. This expands the time and resources needed to alter the applications.
The folks with reduced functionality had a hard time competing with those with enhanced functionality and lost users and sales.
The folks with 'web-enabled' thick clients had trouble keeping all of their users on a particular version. Having multiple versions in use on a single application is a veritable nightmare to support.
Through it all, the brave web developers slugged it out among competing technologies, competing versions and competing userbases. This can be best described by watching a UN meeting transpiring with all the participants yelling their cases at once and and the translators dutifly translating into hundreds of languages.
10 years later, HTML is still the dominant presentation language on the internet. When developing an application, developers commonly spend a disproportionate amount of time centering a piece of text, or getting table borders to align properly.
Web applications must be tested on no less than 6 browser/version combinations, each of which has its own quirks and annoyances. All of this greatly slows down the pace of innovation and leaves the web users of the world in the lurch.
This brings me round to my initial statement, I love Flex. Flex is a technology built on Adobe Flash. Flash is a browser based technology that renders on all browsers equally. Thus, a description for a table is rendered EXACTLY the same on all browsers. An image aligned flush with another image renders EXACTLY the same on all browsers.
Finally, a consolidated presentation language for the web. I can finally cease spending days on table alignments and on diagnosing silly padding rendering errors in browsers. I can finally just write code that visually just works.
I Love Flex.