views:

361

answers:

3

I have been building enterprise software for the last 10 years. In this time we have seen enterprise applications move from client server to thin clients. We have also seen the move to hosted solutions, albeit under a few names (asp, SaaS, cloud computing). With all these changes the impetuous has been mainly from driven from the IT department not the end user. In the first rounds of these revolutions the user experience was reduced in the name of single point of management and reduced desktop footprint.

During this time there have been many attempts to give the user a rich experience while still satisfying the crotchety IT department. The first was by the industry leader Microsoft in the form of the ActiveX control. The guys from Sun then followed suit with the applet and then more recently java webstart. All of these solutions seemed to scratch the itch but never gained wide expectance by the more stringent IT departments.

Then flex came on the scene from Macromedia. What did they do differently? Is it sustainable? Does Microsoft’s emulation with Silverlight prove they have changed the rules of the game? Will Web programming be changed forever?

+4  A: 
  1. Adobe have succeeded because almost all users of the main browsers on the main platforms already have installed the only runtime component required for Flex; which is the Flash player. The Flash player has already demonstrated that it isn't a vector for Bad Stuff; it runs in its own sandbox in the browser, isolated from the hardware and the OS. So no new (and potentially dangerous) software is installed.

  2. There exists a substantial developer community for Flash technology, and the addition of some new controls in Flash, and maturity in ActionScript for writing software, has tipped it over the threshold for being fully useful as a RUI.

    (Activex is Windows-0nly; Anything in java is perceived as destabilizing and too heavy; and java hasn't managed to wangle its way into ubiquity, nor will it probably ever do so. So both generally get installed by edict, rather than user choice. This in spite of the fact that Adobe is probably the most disruptive source of unrequested "update-checkers" and other near-malware we deal with in our ecosystem.)

  3. Microsoft started out with Silverlight pretty aggressively, requiring only the installation of the equivalent of the Flash runtime; but it's not ubiquitous even on Windows machines yet; penetration to other platforms is quite a way in the future; and MS hasn't proven to have the political smarts to appear harmless yet. But don't count it out. I think they've moved a step back by switching to .NET languages (with a limited CLR) for development; this seems to me to be the same strategy that has deoxygenated their WinCE strategy; but again we'll see. But at least they have made an obvious move away from language agnosticism to appearing to want to coerce developers into .NETland.

  4. Web programming is changing forever one way or another; users will demand a better, more fine-grained UI; there's no perfect answer in sight yet, but at least there is competition for hearts and minds. I think the most encouraging signs come from Microsoft's strong move into platform-neutral stuff like MVC, Iron Stuff, and increasingly unpolluted code streams to the browser.

le dorfier
+1  A: 

My take on Flex's success:

1- Adobe made the right move in opensourcing not only AIR, but Flex, the Flash VM, and the PDF standard now as well.

2- Flex's rich Flash heritage (it runs on any Flash enabled browser) means that the vast majority of browsers already support it and do not need to download a large plugin to access it.

3- Adobe embraced all the major server-side technologies and provided support for them so that a PHP. MS, or Java shop would all feel comfortable using Adobe's client side technology.

Previously, Flex was closed-source, expensive, and even relied on a server-side installation, which negated it's reach even though the Flash client was so widely available.

Abdullah Jibaly
A: 
  • YouTube and the general ubiquity of Flash video entrenched the Flash player into over 95% of the browsers that are accessing the public Internet.
  • Incorporating Flex GUI for form design with widgets and an extremely well designed GUI SDK was a major turning point for the Flash player. Flex 2 and Flashplayer 9 were the tipping points of when this technology really jelled. Enterprise developers began to quickly realize that this technology was just the right approach for doing their applications. (At JavaOne in 2006, Adobe Flex 2 was the most impressive and pivatol technology that I saw there.)
  • The Flash runtime has just enough stuff to run RIA GUI well in a web browser sandbox setting - Java applets required the full JRE (about 16 MB). The Flash runtime was a much leaner and smarter design for its intended purpose. (Sun has only now begun to remedy this for Java via their JavaFX and redesigned JRE that can download a few MB as sufficient to run a web applet. They don't have anything like YouTube Flash video to drive their installations, though.)
  • Writing Flex RIA applications is a very leveraged experience compared to writing old-school web HTML/JavaScript AJAX apps. Can achieve a great deal more and have less effort to accomplish such.
  • Adobe bolstered Flex with other important pieces, such as BlazeDS (and now they're cooperating with SpringSource to make BlazeDS and Spring-Framework a smoother integration).
  • The single-thread GUI in combination to async service calls (or messaging), and ActionScript3 closures is great programming model:

    Flex Async I/O vs Java and C# Explicit Threading

  • Likewise, Adobe Flex has a great implementation of properties, events, and databinding.
  • A declarative language, ala MXML, is indeed a better approach to describing a form (what is essentially the view in the MVC pattern). It is more concise than equivalent imperative ActionScript code that would accomplish the same thing, and thus clearer. The hierarchical structure of MXML script tends to naturally match well to the panel/widget construction of views as well.
  • With Flex RIA approach, the MVC pattern can be implemented completely on the client tier. Web frameworks that implemented MVC in the middle-tier - with the presentation layer executing in the remote client-tier, was a fundamentally flawed approach to MVC. MVC should be done right at the tier that is directly user-facing. (Once again, Adobe Flex does things right architecturally.)
  • Despite that HTML/DOM/JavaScript is considered the pervasive standard of the Internet web, the Adobe Flash player is actually a more ubiquitous and consistent standard - spanning different browsers and operating system platforms. The HTML/DOM/JavaScript standard is in actuality a fragmented mess that grows more fragmented everyday as Google and Microsoft drive different directions on things regarding the web browser. Adobe Flash player ends up being a wonderful end-run around this dilemma. It's a great programming experience for the coders and has sufficient ubiquity for the business suits.
  • Adobe is smartly well supporting the major platforms of Windows, Mac OS X, and Linux. They pay special attention to the Linux platform. This will pay off in the long term as developers are already settling on Linux to do their development from, and it's used extensively for servers hosting their middle-tier. Adobe's recent 64-bit Flash player for Linux is just a marvel. They already have AIR 1.5 available on Linux. They are doing a decent job there of supporting the platform that the developers care about.
RogerV