Flex or HTML5 - Which Is Best?
Since becoming an iPad owner I've been forced to question my previously-un-questioned love of Flex.
With no sign of Apple ever letting iOS run the Flash player, there's little chance of ever running a Flex app on an iPad.
I tend to use Flex apps for the behind the scenes admin of websites. Sometimes that's for sites I own, but often I build the Flex app for the use of whoever actually owns or runs the website. El Administrator.
At the moment I'm working on a website for which I'll be responsible (contractually) for the day-to-day upkeep. The obvious choice, for me at least, is to create a Flex-based tool that lets me keep an eye on things and perform any required admin tasks and changes as and when needed.
There's a chance I might need to take the tool on the road though. If I go away for any amount of time I'll still be required to keep things ticking over. I could always just take my laptop with me, but I'd much rather take the iPad, for obvious reasons.
The natural alternative to a Flex-based tool is to build one using HTML5. The problem here is that I'd have to learn HTML5 (although that's probably more of an added bonus than a problem) and so it will take longer to make. With Flex you can create powerful admin tools in no time at all and with not much code. With HTML5 I don't know if the same is true? Is HTML5 as powerful and rich an interface as Flex?
Then again, maybe I should just buy an Android-based tablet, as that would run Flex apps and be just as (if not more) portable. Decisions, decisions.
Your not alone. Yes, that's a real problem. If you make a website using HTML5 and you insert a video, then corporative users with I.E. 6/7/8 cannot see your video. And if you use Flex / Flash then iPhone / iPad users cannot see your video. A true headache. That remembers me some code "If I.E. then do this else do this one".
I don't share the Steve Jobs decision about Flash.
Reply
His decision to not allow Flash doesn't bother me as much as I thought it might. I almost agree. I don't know the full reasoning, but AFAIK, it's because "9 out of 10" times Safari crashes it's because of Flash and he doesn't want buggy software reflecting badly on his OS, which is fair enough, I guess.
Reply
Show the rest of this thread
I prefer using the standards, therefore I am favouring HTML5. Flash only bloats your browser ;-)
As an example, why not using a thing like http://www.datatables.net/index for a datatable instead of using Flex.
Reply
Looks nice!
But it's another (external) code dependency. That's what I've never really liked about "apps" written in HTML - you have to find and include all these other libraries. Which is why I like Flex - all the code you need is there already.
Another thing I love about Flex is how easy it is to position all your elements. Has HTML5 made that any easier or is it still a case of bending your mind around the whole floating positioning stuff. I still don't get all that.
Reply
But surely you're just replacing one limitation with another. HTML5 is not that well implemented across browsers yet.
Flash has been around a long while. And it's not going away any time soon. Android supports it. BlackBerry supports it. It's just the iPharts that don't.
Adobe are still pushing it further than ever. Indeed Air keeps getting updated, refined, improved all the time. In fact there are quite a few major games written in it (the number 8 MMORPG in the world - Dofus - of which I've been playing for about 4 years now).
I would say, stick with Flash for the time being... and get a better mobile platform. I still use an Acer linux based netbook. Old, lightweight, reliable. Plug a BlackBerry into it and you have access from anywhere.
Reply
I agree with Dragon - you should get a netbook. Build your admin app in Flex because you feel comfortable with it and because you'll be using it for your 'mission critical' operation.
Netbooks are also cheaper then iPads. Leave your iPad at home and you wont' have to worry that anything will happen to it. I don't feel comfortable carrying my iPad around - it wasn't cheap and I would hate to see even a tiniest scratch on it.
Reply
Jake just build an AIR app -
http://www.adobe.com/devnet/logged_in/abansod_iphone.html - these apps can now be packaged and submitted to Apple.
Reply
Not really an option Mark. Nice to know it's doable, but, in this case the target audience is one user (me) who will test and tweak the app as it gets used. The idea of going through the Apple approval process and/or having appear in the App Store isn't going to work.
Is there a way to install an "app" on your own iPad without having it approved or added to the App Store? I know you can in Android, but from what I saw of the Apple process, you can't easily do this (or that you need to pay to register as a developer and some other stuff).
Reply
Show the rest of this thread
HTML5 (inc SQL) with jQuery and plugins eg jquery datatables. Only issue is IE - but ie9 is HTML5 I believe
Reply
IE is only an issue if you want to use local storage or some of the media elements.
http://www.modernizr.com/
Brings HTML5 elements to IE.
There's also HTML5 shim. Sorry can't find the link from my phone.
http://css3pie.com/
Brings CSS3 to IE, like rounded corners and shadows.
Reply
Show the rest of this thread
I'm in favor of 2 options.
First buy the android pad just because I like toys. From a business perspective its a tax write-off so its a legit option.
Second, probably what I would actually do is build the console in Flex and just remote from your iPad into a server (citrix or terminal services or whatever) and do the work from there. Its cheaper and easier on you.
I wouldn't go to HTML5 just because like already mentioned you would have to first learn it then its still not widely supported yet. It still worth learning but in a live environment I want to know the tools that I'm using. Test the new stuff in test then role it out later when you've perfected, gotten comfortable with, it.
Reply
"First buy the android"
Damn it Aaron, you've planted a seed in my head now! Karen's not going to be happy and I'll be blaming you ;)
Reply
Show the rest of this thread
Jake,
I don't know anything about Flex and I like the standards best as others have said but I agree with Aaron. I know you have a bunch of machines. Set up a VPN. Run a VNC server on one of those machines so you can access your Flex app. with a VNC client on your iPad. You know that you will already travel with the iPad. Why carry more stuff? In the mean time spend your "spare" time developing the same in HTML 5 using some of these tools mentioned. It's the future after all. Extremely good project based learning!
Reply
Could always jailbreak the ipad then install Frash which will allow flash to run on the ipad.
Reply
I think I've never read that you used the Blackberry, but I work with a company that uses some of them, and I see (with joy) that Blackberry's tablet will use Adobe's development tools (http://devblog.blackberry.com/2010/10/blackberry-playbook-sdk-adobe-air-development/). And with BB you can install your own apps only for you or selected people.
Apparently, they will be giving some tables for free (http://devblog.blackberry.com/2010/10/blackberry-playbook-developer-promotion-information/) for companies that code apps, I guess a generic site admin tool might be one of those.
Anyway, I did some of the demos you did with Domino and Flash, I might re-do them :) Thanks!
Reply
I second this. But then again I'm somewhat biased about BlackBerry myself. After all, I do work for them. :)
Reply
Jobs won't allow flash on the iPhone or iPad because it would allow app creators to build apps that could circumvent the AppStore. Considering how much cash the AppStore brings Apple it's no surprise.
Why re-invent the wheel? Ideally what you would use is a framework that deploys to HTML, and ideally it would deploy to either HTML 4 or HTML 5 depending on the combination of browser support and functionality needed.
I've voiced it before, but XPages could be a great fit for you here, especially with the extensibility library in 8.5.2.
IBM's momentum behind XPages is enormous. Considering the integration with Dojo 1.4 (which 8.5.2 uses), it's ultra-highly likely that 8.5.3 will ship with Dojo 1.5, incorporating a bunch of integration with 1.5's native support for mobile devices.
http://xpages.info
Reply
Jake is not exclusively using Domino for his web projects. XPages are a proprietary technology that currently work on nothing else but a Domino server. And putting Domino servers on the web is not cheap either.
In theory IBM could make XPages work with other Servlet container like Apache Tomcat. I don't see this happening anytime soon.
If it is just for an admin interface you could very well use HTML5 and just code for one browser.
I expect this to take a lot of time but you could for sure reuse some of those components in other applications.
You could even develop a Flex version too as I expect that it will take you little time.
Reply
Henning's right. I'm no longer solely a Domino developer. In fact the project I'm talking about here is based on ASP.NET. I didn't mention that as I thought it wasn't relevant to the point being discussed.
Why ASP.NET and not Domino? Various reasons, which I might discuss separately in a flame-bait-style blog entry ;-)
Good point about the app store revenue though. Hadn't considered that angle.
Reply
Forgive me for being a Luddite, but you could just write it using the standard Domino tools, and it'll run in Safari or any other browser. It doesn't have to look great since it's not for a client, it just has to work.
Reply
Here's another possible option; Titanium from Appcelerator. They say that Titanium let's you write one code set to create an application for iOS, Android and the desktop including XP, Windows 7 and OS-X.
Quote from their site:
"A free and open source application development platform, Titanium lets you create native mobile, tablet and desktop application experiences using existing web skills like Javascript, HTML, CSS, Python, Ruby, and PHP."
http://www.appcelerator.com/products/plans-pricing/
I haven't needed it so I have no actual experience with it, but it's free to use without their support. I think it's worth a look.
Peace,
Rob:-]
Reply
Further research revieled that it isn't "write once, run everywhere". Each target environment requires different code. They aim to make "native" apps for each environment. You would code using JavaScript, HTML and CSS.
Reply
Show the rest of this thread
I'm a standards man so I will always opt for the HTML/CSS solution.
Having said that, you should know that as far as I know, HTML5 brings absolutely nothing to the table concerning the things you would need in an admin screen. There is no such thing as an HTML5 grid that you can drag and databind to a web service. There is no such thing as inline editing either. There are no dropdown menus. I could go on. You could create all of those things as you do now in HTML4, CSS and JS, but HTML5 does not bring those capabilities at the abstraction level you are looking for.
HTML5 does help for easier input validation in the browser, more semantic markup, plugin-free native audio/video, offline content, and drawing capabilities using the canvas element. For browsers that support it, that is.
Therefore, your real question is more like "Should I build this in HTML4 or Flex"? If your concern is productivity, Flex wins. If your concern is accessibility, HTML wins. My advise would be to go the HTML4/5 route, as you will need those skills eventually anyway. Do have a look around at some of the suggestions for ready-to-go components, to which I will add the following:
http://www.telerik.com/products/aspnet-ajax.aspx
This is commercial and somewhat optimized for a .NET back-end but have a look around and see how advanced dHTML components have become lately. You can hardly tell the difference between a RIA and a DHTML component anymore.
Reply
Glad you confirmed all of the above for me Ferdy. It's the conclusion I was starting to arrive at, sadly.
All the talk I'd seen of HTML5 *apps* and of how HTML5 was a "Flex killer" led me to believe it was much more than it actually is. Apart from the CSS3 niceties and offline capabilities what does HTML5 actually give us aside from new elements which allow us to markup our pages in a more semantic way?
Reply
Show the rest of this thread
I guess it all depends on how complex are the interfaces that you create. Without going into flex, I actually tried Ext.js for a while, but in the end all my needs where already covered with jQuery, which, combined with Asp.Net MVC (Dead to Webforms! - Sorry), makes creating forms and interfaces a breeze.
What I intended to say is that if the interfaces are not that complex, once you know your way with MVC + jQuery + HTML4/5 + CSS, it's nearly as fast as Flex or any other RAD tools, and you get the nice warm feeling of doing things nice and standard :)
(with the added benefit that you'll do all your development inside the same IDE).
On the other hand, if the UIs you create would actually be hard to recreate with HTML, I would be pragmatic and stay with Flex.
And as others have mentioned, while HTML5 does bring some nice things to the table (drag & drop, local storage, offline files, better input types), you'll mostly be using the usual HTML4.
Regards,
S.
Reply