Mass Confusion: The hysteria over Flash, Silverlight, HTML 5, Java FX, and Objective C

I’ve been working on a whitepaper titled “Choosing The Appropriate Web User Interface Technology” for more than a year now, with input from Sun, Adobe, Microsoft and everyone here at EffectiveUI. I’ve rewritten the damn thing four times now and have decided to abandon the effort. The blunt truth is that there is no credible way to articulate, in a simple whitepaper, the complexity of making a platform decision. I could write a book on the subject, but the problem is the book would be out-of-date by the time I wrote the outline.

If today EffectiveUI’s clients  were to ask, “Should we look at Flash, Silverlight, HTML5, Objective C, Java FX or some other platform?” my answer would be, “Now, more than ever, it depends.”

What’s worse, many bloggers are adding to the confusion by forecasting the death of some platforms or drawing the wrong comparisons from one to another. So to help clear up some of the confusion (or, perhaps add to it a bit), I thought it would be helpful to review some of the things our clients are thinking about.

Enterprise-Grade Considerations

There are a matrix of considerations that go into deciding what platform is right for your particular organization. These considerations should be weighed uniquely every time you decide to take on a new software project. They include:

Existing Technology Skills

Choosing the right user interface (UI) platform should start with a simple question: What can my development team execute and maintain?

Although answering this question is critical to the success of a project, you must also consider what platform is best suited to meet the business and end-user requirements. Sometimes it actually makes sense to choose a platform your team is not familiar with because its business and end-users’ needs have outgrown your team’s current skill set.

Longevity

How long do you believe your platform of choice will be around? In essence, this is a bet you are placing on the platform. This is also one of the most volatile considerations because of new announcements happening every day that change the game and disrupt the playing field.

Integration

Legacy systems, data structures, client machines and business processes will all inform the choice of a UI technology. Some platforms integrate better with specific legacy systems than others.

Scalability

In any software system, scalability must always be a consideration. However, when creating a UI, a scalability discussion can become complicated. This is primarily due to the inherent distributed nature of UIs. In browser-based software, much of the computing and processing can be done either on the client machine or on a server.

An example of this distinction can be seen in the creation of a simple calculator. Developers can write a Web page that takes in user input, sends data back to the server to do the calculations then sends the results back to the client machine. Alternatively, developers can simply create code to run on the client machine, removing the requirement for the extra processing on the server.

If this simple calculator example is applied to more complex tasks, such as sorting a set of data alphabetically, drawing a line chart or validating data entry, one can begin to understand that offloading processes to the client machine will inherently make the system more scalable. Careful architectural planning is extremely important when making decisions between client and server processing.

Maintainability

Software typically needs regular maintenance. Changes in legacy systems, increasing user demands, additional business requirements, bug fixes and improvements in scalability are all reasons for maintenance. The more difficult it is to maintain a software project, the longer it takes to make changes, and the more apt those changes are to break something else in the system.

Security

Security also can pose a challenge. As with scalability, you must decide early on in a project what data clients will see and what data the server will maintain.. Typically, if architected correctly, all UI platforms are equally secure. As long as the application programming interface (API) infrastructure is not exposed to provide unauthenticated data, the site should be reasonably secure.

THERE IS NO COMPLETELY SECURE UI PLATFORM. This is because each may require integration with a back-end service. The UI is only as secure as the API that supports it.

UI security can be broken down into two primary buckets. The first is described above, in what we call “system security.” The second is client security, or the ability for the UI to hack into a client’s machine and run malicious code.

Performance

How well does the platform perform under sever-data crunching, multitasking or other CPU intensive operations?

Platform Capabilities

The UI platform needs to be robust enough to handle more sophisticated processes as end-users engage in more complex tasks. In our simple calculator example earlier, any platform would be perfectly fine. Some online systems, however, have higher demands for social interaction, real-time data, video, collaboration, charting, etc. This level of sophistication requires a UI platform that can handle more integrated online interactions.

Strength of the Development Community

How easy will it be to find developers for your project?

Platform Maturity

You must mitigate the risk of running into platform bugs. There is no way to eliminate the risk of software development issues, but addressing the maturity of the platform will help reduce some of these risks.

Ubiquity/Compatibility

Simply put, will the end user have to install something to get the system to work? Every platform, project and line of code has some level of balance that will need to be achieved between system sophistication and system compatibility.

Tooling

Are the tools used to develop and design your UI sophisticated enough to alleviate frustration among your teams?

User Experience

We define user experience as a means of driving better user adoption. User experience can be somewhat subjective, but most will agree that software that is pleasurable to use will have a much higher user adoption. Certain UI platforms give design and development teams more flexibility to create better software.

Religious Conversion

There is a major shift happening in software development — the shift toward user centricity. Most IT projects today are started because of a user adoption pain-point. Building software that focuses on user adoption first and enterprise maintainability second requires nothing short of a religious awakening for most CTOs (and many CIOs and CFOs, too). The platform that is right for your organization may be the one you can actually get adopted companywide. You must consider the religious and political nature of the developers and dev. managers before trumpeting adoption of any technology. By the way — this is where startups have a major advantage over larger enterprises; they get to adopt newer techniques and platforms without religion or legacy issues.

Platform Philosophies

Philosophically, each provider views his or her platforms as uniquely positioned to do things a bit better. But what does “better” mean for you? After considering 20 different ways to slice the data, I decided to look at each from what I believe is its long-term vision.

Adobe Flash

Flash’s philosophy:

Write once, deploy anywhere.

Flash’s advantage:

Its ubiquity, active developer community and the maturity of the flash player itself

It also has the best designer tools and a great designer/developer workflow model.

Flash’s challenge:

One word: Apple. You can view Flash content on almost every device on the planet produced in the last five years with two glaring exceptions: The iPhone/iPod Touch, and now, the iPad. This alone has caused every one of our Flash developers to pick up either an HTML5 book or an Objective C book. Additionally, Apple’s and Adobe’s relationship is strained at best. Neither company is showing a lot of maturity when discussing the other. Watching them fight is a lot like watching two parents squabble in front of their children during a divorce. I wish, for the sake of developers and consumers, they could find a way to get along.

Who will choose the Adobe platform?:

Companies that want the best, cross-platform user experience for browser and desktop applications

Those same companies will see development on the iPhone and iPad as either not relevant or so relevant that they believe they need to develop custom experiences for those devices.

Microsoft Silverlight

Silverlight’s philosophy:

Write everything from the database to the client using the same skills and developers.

Silverlight’s advantage:

The story plays. If I am the CTO of an organization that has invested heavily in Microsoft technology, Silverlight needs to be looked at seriously.

Silverlight’s challenge:

Ubiquity. I know that Silverlight is seeing some great traction, but it still pales in comparison to the Flash player. Additionally, to believe Silverlight would ever appear on the iPhone or iPad is like believing Daisy, our COO, will give me the company credit card and tell me “go have fun in the Apple store” … never gonna happen.

Who will choose the Microsoft platform?:

Silverlight does make a ton of sense for companies that control the whole technology stack. Many organizations have the luxury to enforce a Silverlight download to their sales team so they can view the new sales  portal they built in Silverlight (for example).

Sun’s Java FX:

See everything under Microsoft Silverlight and replace “Silverlight” with “Java FX” and “Microsoft” with “Sun.”

Microsoft and Sun are basically competing against Adobe for the client side of computing. I believe they are betting enterprises will want to stick with their Java or .Net developers and deploy on their proprietary runtime. In other words, they are betting that Flash will not be taken seriously by large enterprise IT departments that already have huge Microsoft or Sun investments.

Apple, Objective C and HTML5

All right — I know Apple does not own HTML5, but it is placing huge bets there. Apple’s development model is very clear: Control as much as it can on its own, and rely on a fully open standard for “the rest for the developers out there.” You may also ask “Does Apple even belong in this list?” – Well, they do because of the disruptive impact they are having in our industry right now. You can not have a conversation anymore about software and the web without also talking about the iPhone.

Apple’s philosophy:

The user always comes first.

Apple’s advantage:

A huge headstart on mobile and similar bets on mass consumer computing with the iPad. It Apple values user experience over developer experience which is clearly resonating with the late adopters of technology.

Apple’s challenge:

Its challenge is maintaining its leadership position in such a crowded and coveted marketplace. It also is going to be challenged by when its customers realize Club Penguin, NeoPets, Mint, Hulu, Disney or Farmville do not work on the self-proclaimed “Best Way to Experience the Web.”

Who will choose Apple’s platform?:

Simple — those companies that want to reach Apple’s customers.

A little note about HTML 5

HTML 5 is still in its infancy. It is certainly not a Flash or Silverlight Killer. However, it will be a viable option in many circumstances, but will not answer the call for more sophisticated, complex and richer web experiences.

What about Google and Android?

Who? Sorry, but we are rarely asked to participate in building software for the Android. Of course our eyes are on it, and we are building a few interesting things on the platform, but Google has yet to figure out what Apple has down, and that is the unified user experience. From iTunes to the App Store to eBooks to the devices.

Worth a mention, Unity

Unity3D is an interesting provider in the this mix. You probably have not even heard of them, but they provide an alternative to Adobe’s philosophy of “write once, deploy anywhere”. Unity’s philosophy is “write once, deploy native”. You can create an application, and compile for all kinds of deployments. Currently included:  iPhone/iPod Touch (and almost certainly the iPad), Mac Desktop, PC Desktop, Nintendo Wii, and a proprietary, Unity3D browser plugin. What makes this platform so compelling is the right device support, the ability to develop in C#, Python, Javascript, and their focus on 3D. 3D is an area where most other platforms really struggle, and an area of opportunity to differentiate. We are very intrigued by Unity, and you should keep an eye on them as well.

Where does this leave us?

I asked Brook, our chief software architect, about where he is steering our development team. He put it simply and concisely: “Dexterity.”  Right now, all of our clients are realizing how unique their situations are compared to other organizations building online software. Where we have seen the most success is when we help articulate the end-user’s needs, the business challenges, and craft a strategy for each of our clients, specific to their organization’s individuality.

23 comments
  1. Steve said:

    “Apple’s philosophy:

    The user always comes first.”

    I disagree. Apple always comes first. Apple excises many choices from the user (swappable battery anyone?) in order to enforce Apple lock-in.

    Apple surely have a powerful marketing force, convincing a certain small percentage of consumers to fork over their sheckles, believing that Apples stuff is “the most {insert superlative here} on the planet” when usually it’s not, really. Bug free? Immune from worms and viruses? How about too small for the spiteful little virus writers to care about?

    But then that’s just fuel on the fire for the fanbois and gurls ;-)

  2. Steve,

    I would argue that Apple decided against a swappable battery because the extra casing required to house the battery, and the mechanisms to open/close the case took space away from what could be used for a bigger battery.

    They decided to provide a longer battery life against a swappable battery – something, as a user, totally agree with.

    Say what you will about Apple, they have a loyal following. And they OWN the high end market (a report just came out today that said Apple owns 90% of the above $1,000 pc market)

  3. Steve said:

    They own the *expensive* market. You can choose any meaning you want to out of statistics, depending upon the perspective you want to portray.

    Apple decided to make devices that cannot be owner-maintained. You, as a user, are happy with that decision. I, as a different user with different preferences and priorities, am not happy with that. There’s no “Apple is right and Fred is wrong”, here. It’s about choice. You chose to accept Apple’s decision on devices not having swappable batteries (something simple with every other phone and laptop on the planet) or memory or chips or …

    But the choices Apple make are still about Apple first, not the consumer. By deciding to force you to go to Apple for simple maintenance and repairs, Apple deliberately made you pay more for such maintenance, and made sure you paid them for it. By deliberately forcing iPhone owners to buy all software and apps from Apple, Apple deliberately removed a significant level of vendor, feature and functionality choice from the user, in order to extract more cash from iPhone users.

    Of course, the *official* line is that Apple has standards, and they want to enforce them on the software we buy, and on every app we install. Officially that is a *good thing* for the consumer, but the reality is that it is a *far better thing* for Apple.

    IMHO :-)

  4. I will agree that I overstated Apple’s philosophy a bit… maybe, for their “i” line it would be “put the mass consumer first”. Folks like you and I typically are not the target for ibooks, imacs and iPads… There are users in the world that actually want FEWER choices when it comes to technology… and I, for one, try to point family members to the products that will cause fewer “tech support” calls to me :)

    But, we are missing the bigger point of my article (and making the point at the same time) – The decision on what platform you need to target is a very complex one, and it is only getting more so. We all have our opinions on which platform is most important, but enterprises need to do the proper legwork to understand what their USERS want before they make technology decisions they may have to live with for years to come….

  5. Steve said:

    Yes exactly – which is why rule number one, as we all know, is know your audience.

    Chewing on that Apple for a sec longer – Apple carefully selected (and shaped) target audience for maximum returns on their efforts. They consistently choose the less-than-ordinary approach of also shaping tools and hardware. I don’t have to like it, but it certainly works!

    Your article, I think, leans towards understanding your options and your audience and then selecting tools that are best suited to your goal(s). We don’t all have the luxury of being able to turn that upside down like Apple does :-)

  6. jfxia said:

    Okay, a couple of minor corrections — it’s “JavaFX” (one word) not “Java FX”, and of course it’s now an Oracle technology, not Sun.

    I don’t know if you read too deeply into JavaFX before writing your blog, but I think you’ve misunderstood its strengths, weaknesses and direction. Java has an exceptionally strong position in the mobile and embedded space. Pretty much every modern phone (iPhone being the exception) has JavaME pre-installed, and Blu-ray has Java at its heart. But its desktop and client side web presence is feeble (applets having been largely replaced by Flash).

    The JavaFX strategy is to build a brand new platform, including a innovative DSL, to target specifically sophisticated UI and animation development. The idea is to permit developers to create one single application that can span desktop, web, mobile and TV. The gamble is developers won’t mind learning a brand new language and way of working, in return for the productivity boost it will give them. The danger is this: JavaFX is being built from inside an engineering environment (the Java community), yet it needs to woo artists and designers to be successful.

    Flash/AIR’s strength/weakness is almost the reverse. It has a very strong hold within the artist/designer community, but to be a serious RIA technology it needs to woo engineers — specifically it needs to develop a healthy community of third party libraries and APIs. (JavaFX Script compiles to bytecode, meaning it can interact with the million and one existing Java libraries already out there.)

  7. Thanks for the great comment – I should know its JavaFX and not Java FX (as we have done quite a bit for Sun on the platform)

    You are exactly right on the cross-device benefits of JavaFX. I still believe that Sun’s objective ultimately is to sell more Sun backend systems, software and services. JavaFX makes a ton of sense for those enterprises that want to leverage their existing Java infrastructure to build richer, client side applications

  8. Anonymous said:

    Anthony – Thanks for stirring the pot! What this says to me is the conversation has rightly evolved to the user experience (please excuse my obvious bias). Let us not forget the not too distant back-end holy wars. Java vs. .NET and Ruby etc. SOA, Web Services and API’s are almost an assumed get in the game position now. This only reinforces the importance of leveraging a compelling way to get at the data. At the end of the rainbow the right workflow and presentation tends to trump all.

  9. jfxia said:

    “I still believe that Sun’s objective ultimately is to sell more Sun backend systems, software and services.”

    I suspect this is true of any company. :)

    What is weird about JavaFX is if you look at its design and APIs it doesn’t reference any existing Java services or back end architectures. So far everything has been totally agnostic, with JavaEE users at no greater advantage than LAMP or .Net users. Perhaps this will change with future releases (I’m sure it will now Oracle are in charge) but thus far JavaFX has been developed in a kind of vacuum, without regard for other Sun/Java products. I don’t know if this is accident or design :)

  10. Another platform that may be of interest is Revolution (http://www.runrev.com) – it deploys to native MacOSX, Windows and Linux applications, to the web via revWeb (a browser plug-in for MacOSX, Windows and soon Linux), offers a free entry-level version (revMedia), and is working on support for Windows Mobile, Maemo and iPhone/iPodTouch/iPad (revMobile)

  11. I think you are missing some of the biggest Silverlight advantages that are based on .NET and Microsoft app stack.

    .NET allows you to do some things that Java/Flex can’t compete with..like scaling to 8 cores or using F#/VB.NET/C#/Python etc whatever to write Silverlight apps

    Microsoft Integration…here are some devices/software where you can find Silverlight today: Bing search engine, Microsoft Maps, SharePoint 2007/2010, XBOX 360, Windows Mobile 7, Windows Desktop, Windows Azure (cloud) and Zune HD. Adobe cannot match that level of integration is highly dependent on other software companies.

  12. We looked at Rev a bit. Probably not something we would currently recommend to clients as it requires them to learn a whole new scripting language (based on hypercard no less). They’ve been refining their runtime since 1997, and are still struggling to gain traction. I know they have an impressive client list, and I’m sure they can point you to some great case-studies, but they have a ton of work yet to do to be something we would tell our clients to look at.

  13. I’m not missing any of those things. I agree with you that Silverlight is a credible runtime with interesting differentiators. And, I think I did say that Microsoft’s best story for Silverlight is the integrated technology stack.

    This article was not meant to compare the technologies. It is only to highlight what enterprises should consider when choosing a UI platform and to express an opinion on what types of companies might choose one platform over another…

  14. Mike said:

    I feel these companies need to start working together more rather than bickering about what’s best.

    Integrating their platforms as well as simplifying and unifying the user and developer experience.

    There comes a time when you have to cut the crap, grab the bull by the horns and just do something; make a standard and accept the losses.

    Or else we’re going to be lingering in this limbo of incompattibility and non-standarization for many, many more years to come.

    There will be times where some will be left out in the cold and many alienated; but that’s the reality of standardization.

    I may be dreaming, but it’s a good dream to have, eh?

    I feel that google may provide a glimpse of such a dream though, it’s all very barebones and fragmented right now but I feel it’s something they’re edging towards.

    Now this may sound cheesy; but let’s hope they use the power they have and the power they will gain as they progress, for good and not bad.

  15. hayden said:

    If Bing and iPhone can sleep together, so can Silverlight and iPhone

  16. DavidH said:

    Anthony, I just read your blog today for the first time, referred by the link on ‘mass hysteria’. Speaking of Directions and new Standards and Platforms for the future–WHY do I hear NOTHING about the inherent problems of ballyhooed “Cloud Computing”?

    First–I have tried some of the Google cloud apps, starting with Documents from my Gmail account. I have had to abandon the experiment in short order. My internet connection is screamingly fast here in Europe, faster than what I had in the States by far. But no way is any application run from the internet going to provide the same speed and feeling of security as a program sitting on the same machine I am using.

    We are used to speed, speed and to saves that happen in a second or so. I use the latest Safari and Firefox versions and both a MacPro 8-core and an iMac. Using several of Google’s cloud apps usually came to a point where they would “stall” and were plainly not in a connected state with the server/s. Saves would spin and spin until it was clear that I was no longer in an active cloud state.

    Cloud computing will always come down to the thin little single connection being offered by my ISP and there are always far more factors that want to interrupt my connection, too many server issues, too many slow ups, too many routers to negotiate hundreds of times a second just to pass my data and the server app and change of data back to my computer to make the reliability something dependable.

    Compare that to my machine environment where the software communicates and controls and changes and saves instantaneously by comparison.

    The Second Issue which is mind-boggling in its apparency yet I don’t see being discussed: SECURITY.

    At a time when internet security has never been so threatened from so many criminal and militaristic sources and where we read everyday of another major database hacking of even the most secure-minded corporations, how are we to believe that mass-migrating our company or personal information and processes onto an anonymous ‘cloud’ of servers will not be the stupidest direction for a corporation to take?

    Companies can not handle the flow of data they are entrusted with now as it is. Dispersing ever more sensitive data such as the internal documents vital to the functioning of any company out onto the internet means that criminally minded hackers will have more and more pipelines to tap into, more streams to intercept, more computers to infect with backdoor exploits. And these guys are always ahead of the security industry. The security industry is always in a bop-the-weazle mode as the next data breach pops up where they were least expecting it.

    Cloud computing is DOOMED before we even start if the trend continues where data is the new gold standard…whether legitimately obtained or not.

    Cloud computing also means more EXPOSURE for all participants.

    Remember, it is not just delivering APPLICATIONS that the Cloud Computing promoters are focused on, it is the interchange and saving of data not just on one, but duplicated across many computers that sit outside the corporation, perhaps spread across several countries and continents.

    And there is not a single Cloud Computing provider that will provide a Your Data is Completely, Absolutely Secure guarantee.

    Not even encrypting the data is foolproof. Once the encryption method is also cloud distributed then it is eminently hackable.

    If the data and the applications that work on that data are kept in-house there is much more that can be done to secure that data than will ever be available once it is spread across a dynamic cloud–which is just a bunch of computers not under any verifiable standards of security, and offers no magic that makes them better than updating software installed locally.

  17. David,

    I would argue that no internal, enterprise IT department could offer the “Your Data is Completely, Absolutely Secure” guarantee either. Consumers have been trusting their data “in the cloud” to enterprises for MANY years now. I think Microsoft, Google, IBM (etc) all all betting that business will realize their data is secure enough, and that the ROI of cloud computing will far outweigh the potential security risks.

  18. nash said:

    Hi, you say:
    See everything under Microsoft Silverlight and replace “Silverlight” with “Java FX” and “Microsoft” with “Sun.”

    This is totally untrue. JavaFX is completely different than its counterparts(silverlight and flash or flex). Flex uses mxml, silverlight uses xaml. Both are xml technologies. JavaFX instead of copying these technologies(which your statement seems to propose), has come up with JavaFX script, which is a DSL(domain specific language) developed specifically for graphic and animations. The advantage of DSL like JavaFX script is that animation is much more easy to script than other approaches whereas using a general purpose language like Java or C# can be very verbose and quite painful to work with for RIA applications. The approaches taken by flex or silverlight which relies on XML technology, isnt a good alternative either as XML is more suitable for configuration rather than scripting. In JavaFX, by few lines of scripting, we can have great animation effects.

    Flex(mxml/actionscript combo), silverlight(xaml,C#,VB.net.. combo), JavaFX(JavaFX script), take your pick.

    Also someone commented few posts back that JavaFX seems to be developed in a vaccum. This again is not true as Java objects can be directly using in JavaFX script if required.

  19. Kenny Bones said:

    What about Adobe Air? And Flex? Or even WPF?

  20. Leon Dviry Segal said:

    It seems obvious that the writer leans/used mostly Flash, from his comment – “Who will choose the Adobe platform?:
    Companies that want the best, cross-platform user experience for browser and desktop applications”

    Mind you but that is a very subjective writing and honestly doesn’t do any right to the the major differences with Silverlight implementations.

  21. Anonymous said:

    this guy knows nothing.. he really sucks.. HTML5 javascript and AJAX are the future

Leave a comment