Featured in
Architecture & Design

Mini-talks: The Machine Intelligence Landscape: A Venture Capital Perspective by David Beyer. The future of global, trustless transactions on the largest graph: blockchain by Olaf Carlson-Wee. Algorithms for Anti-Money Laundering by Richard Minerich.

Featured in
Process & Practices

In-App Subscriptions Made Easy

There are various types of subscriptions: recurring, non-recurring, free-trial periods, various billing cycles and any possible billing variation one can imagine. But with lack of information online, you might discover that mobile subscriptions behave differently from what you expected. This article will make your life somewhat easier when addressing an in-app subscriptions implementation.

Featured in
Operations & Infrastructure

Mini-talks: The Machine Intelligence Landscape: A Venture Capital Perspective by David Beyer. The future of global, trustless transactions on the largest graph: blockchain by Olaf Carlson-Wee. Algorithms for Anti-Money Laundering by Richard Minerich.

Featured in
Enterprise Architecture

Mini-talks: The Machine Intelligence Landscape: A Venture Capital Perspective by David Beyer. The future of global, trustless transactions on the largest graph: blockchain by Olaf Carlson-Wee. Algorithms for Anti-Money Laundering by Richard Minerich.

What is the Future of Flash and Flex?

Adobe wants to strengthen Flash and Flex’s position in the enterprise and especially in the mobile space. But a recent study shows that jQuery has overtaken Flash as a deployed web solution on the top 17,000 websites.

Andrew Shorten, Group Product Manager of Developer Tools at Adobe Systems, published a post on Adobe’s official blog, talking about Flash and Flex’s current status and providing some hints on what is to be expected next for Adobe’s flagship platform. Shorten acknowledges that while once Flash was the only solution for cross-platform web development, now HTML5 is becoming an attractive choice for some:

There are countless examples where, in the past, Flex was (rightly) selected as the only way to deliver a great user experience. Today, many of those could be built using HTML5-related technologies and delivered via the browser, and at Adobe, we will provide tooling to help designers and developers create those experiences – Edge and Muse are two such examples.

Having HTML5 in view and working on related tools (Edge and Muse), Shorten considers that HTML5 is not the “right choice for all use cases” and that enterprises still choose Flex due to its “performance, framework maturity and robust tooling.” Shorten continued by outlining the main directions for Flex and Flash, namely enterprise and mobile, with an emphasize on mobile. He promises Flash&Flex will be a runtime and development environment for enterprise business applications:

We will continue to heavily invest in strengthening Flex for enterprise use, ensuring that you can deliver expressive, robust applications. As we share more details about our upcoming releases, you’ll see our commitment to tackle areas such as Spark component completion, accessibility, build system integration, performance analysis tooling and integration of a next-generation compiler, making Flex the #1 choice for building enterprise-grade RIAs.

Regarding the future in mobile development, Shorten mentioned:

We’re continuing to focus on runtime performance, native extensions, new components, declarative skinning, adding more platforms and improving tooling workflows, such that in our next major release timeframe we expect that the need to build a fully-native application will be reserved for a small number of use cases.

Shorten did not specify more, adding that more details will be provided at Adobe MAX, October 1-4, held in Los Angeles, USA.

It’s not sure why Shorten posted these bits about Flash & Flex’s roadmap, but it could be related to a report analyzing the top 17,000 websites and published by appendTo, LLC a day earlier, the result being succinctly expressed as: “jQuery Overtakes Flash on World’s Top Websites.” appendTo is a company providing consulting, training and development for applications based on HTML5 and jQuery. According to the report, 48% of the world’s top websites have jQuery deployed on their site, while 47% have deployed Flash. The analysis is based on data provided by HTTP Archive, an organization collecting Internet-wide data. Mike Hostetler, co-founder and CEO of appendTo concluded:

This data confirms a trend that’s been a couple years in the making. More and more website developers are choosing jQuery and JavaScript over Flash and the rate at which this transformation is occurring is only accelerating.

Once found on most websites, Flash has started to lose ground in favor of web technologies such as HTML5 and JavaScript. Will the trend continue? Will companies choose Flex for its maturity and wait until HTML5 tools become more mature? Will HTML5 take over web development? Only time will tell for sure how it is going to be, but we can speculate.

Adobe has been a poor steward for Flex. They still don't have commercial quality Eclipse plugin to help developers build Flex applications. Oh, they charge money for their plugin, but it's probably the worst commercial plugin in the Eclipse space.

It takes Adobe years to come out with new versions of Flex.

With Adobe quality is and always has been problem one. That will never change until the culture of Adobe changes.

The fact that HTML 5 can overtake Flex before the HTML 5 standard has been completed shows how badly Adobe has mismanaged Flex.

Flex is dead. Primarily because it offers nearly nothing, and the user experience is worse, not better. If anything, Flex is better for developers (subjective), but far worse for users (almost inarguable). Furthermore, Adobe screwed up bigtime with Flex 4... Flex 3.5 was simpler and cleaner. This might be mostly due to the fact that the interop between them was terrible, and that Spark wasn't a complete replacement for Halo. Bad, bad, bad... I am regretful for choosing flex for two major projects. Flex is dead.

Flash has a potentially bright future, and Adobe has many options to keep it dominant. Even if people hate the player plugin, Adobe could build a VM port to JavaScript (there are hobbyist developers who proved the concept), or they could tackle this at the compiler level and compile AS3 and FLA assets down to native JavaScript equivalents (other platforms have done this). Or, even if they continue to take a plugin based approach, they can still dominate on the web, as Microsoft, Google and Mozilla all have healthy relationships.

However, *what* Flash is used for will change. Probably any good Flash developer will admit that Flash has been abused on websites (see almost any car manufacturer website). Websites and advertising banners should not be using Flash in 2011. Perhaps in the past it was necessary, but that hasn't been the case for years. And video... whatever. As long as it works in my browser reliably, I don't care if it's Flash or H.264 or Ogg... As an end user, I could not care less.

What Flash is still the best at though, is rich content like games and other interactive media. The Flash player, frameworks, libraries, the AS3 language and the tools are heads and shoulders above anything you'll see in the HTML 5 space for likely a decade. It's not even close (try to play sound reliably, across all browsers and devices with HTML5 -- have fun).

There's a chance that someone could come along and do exactly what I said above... take a better language than JavaScript, and some vector based asset creation tools, and have them compile down to JavaScript and HTML5 canvas etc... but Adobe has a huge head start and over a decade of experience -- not to mention the network effect of available developers and artists who know the toolset. All Adobe needs is either a new compiler or VM (or both). Everyone else would be starting entirely from scratch.

So my guess is: Flash will get better, possibly target a different runtime. Flex will die. HTML5 will dominate in every space other than games. Mobile will continue to rely on native code for the best experience (Java on Android, Objective-C on iOS)...

As a side note, tools/frameworks like Unity are very interesting... but at the end of the day it's both a plug-in like Flash and a cross platform language like Java (it's Mono underneath). So they have some mountains to climb.

It's good you pointed the difference between Flex and Flash. I totally agree with you about the future of Flex (and Flash). However, a little misleading for the article to put Flex and Flash in the same boat, taking into account that the company which conducted the research is biased ('dedicated' in their own words) towards jQuery, affecting the interpretation of results.

It doesn't matter whether the web has more JQuery content than Flash/Flex, I would actually find the opposite scary. Flash/Flex should not be used to display basic information or as a technology of choice for most simple websites, even e-commerce sites, etc. Those restaurant websites with flash content which eventually give you the menu your searched for ages as a PDF download always have been a good example of Flash misuse.

HTML5/JS is a terrible technology when it comes to delivering ambitious enterprise applications. Now, most websites are not "enterprise applications"... So that's probably fine. The language, tooling, browser differences and quirks, level of people/coworkers in general in programmation/OOP (Google probably doesn't have this issue) are so many obstacles that one will encounter if he goes that road. Now there will always be people who manage to produce great stuff with crap means; I've seen the pure JS PhotoShop online, not bad... But doesn't mean much. A team of talented people can go a long way with a crap technology (Somehow PHP comes to mind). I've also seen someone make an awesome and visually engaging game in assembly, impressive yet doesn't qualify Assembly as the technology of choice to develop games.

Saying Flex is dead is premature but I also question myself about its future... Every day.

If one wants to produce a rich, cross browser/OS application that scales... Flex is still the right choice although the amount of effort required is going to be high (with Flex experts).

Flex has many issues, all its crap legacy code from years ago, features piling up, some bad design decisions or even the code quality at times (Have tons of examples in mind). In a nutshell, Flex is a framework that provides a lot of features at the cost of bad performances (You can not opt out from most features), unless you are a master in performance tweaking and know Flex inside out, in which case perfs will be somewhat ok... If you are running it on a good desktop machine! Needless to say, Flex doesn't perform on mobiles.

One of the worst decisions by Adobe in years has been to decide they could reuse the existing Flex codebase with a few adjustment and make it run on mobiles. The heavy skinning architecture, insane CPU cost of the style system, sub-optimized invalidation/validation code (meaning it runs too often for nothing, because SDK developers sometimes call invalidate() just in case and all the new features you can not opt out from will invalidate a bunch of stuff) don't run well on a mobile. On the other hand, Pure flash apps run pretty well on mobiles! (Even after thowing a good IoC framework into the equation) It's really just the bloated Flex/AIR SDK that causes performance issues. The flash player seems to be getting better and better thanks to motivated people like Thibault Imbert. The AS3 language could use a bit of a lifting though. On the other hand, the Flex SDK only seems to become more and more bloated with no ambitious architecture changes planned (Last time I heard, Flex5 is nothing like an overhaul of the framework. In 2011/2012, you would expect the flex SDK to evolve toward a plugin based platform as opposed to a Spaghetti with tons of singletons, statics, procedural code and sub-optimal generated code voodoo dating from more than 6 years).

When browsing the flex SDK code, I often think it looks more like a community based project than a real, mature product aimed at enterprises; The few Flex leads/architects are probably very good, some of their minions on the other hand... The basic OO principles violations are numerous and sometimes absolutely unacceptable (Complex class hierarchies with the base class caring about the details of the subclasses?), even some basic common sense principles like not having 500 lines private methods are commonly found.

And don't even get me started on Flash Builder...

That said...

Even with all these issues and as sad as it is, there is no real competition so I guess that makes flex the winner by default... For now.

Even with all these issues and as sad as it is, there is no real competition so I guess that makes flex the winner by default... For now.

I think that "For now." is pretty true right now depending on the audience of developers, but does not have much time remaining. I helped to build a large loan origination app in flex, but we made the shift to html/js about 4 years ago because we thought we could do it leaner (as well as some other reasons). The way we went about it was not for the feint of heart, and I've written a significant body of framework code. What we've done isn't really in a state to just hand out and use, but it works very well, and the experience tells me that its definitely very very possible to create a Flex alternative in html/css/js.

We have a stack right now that has declarative UI and databinding every bit as good as MXML (I could possibly argue better, at least last time I checked), that integrates extremely easily with our Java backend using JSON, REST, and code generation. It has a pretty powerful build system that does dependency analysis and can automatically create lazy loading code modules so that the tens of thousands of lines of javascript code split out over hundreds of files can still load efficiently into the browser as needed. During development, I still have fast lightweight recompilation of client code on page refresh. (One of the worst parts about flex development IMHO)

The UI is as flexible as html/css/js allows, and any number of existing third party components can be integrated fairly easily, but it is still extremely simple to write custom components to gain the benefits of the framework's databinding etc.

And while the framework I helped to develop isn't readily available for show and tell, I've watched a large community start to develop frameworks down a similar path. Some are really lightweight like backbone.js, while others are a little heavier like Sproutcore (watch for Sproutcore 2.0). The tooling and documentation, and solutions are not quite ready for mass use at enterprise businesses, but the browser and language etc. are ready. Its just a matter of getting a few more iterations and some backing from a company like Microsoft - who is now pushing html5. Even Adobe is creating html5 tools.