Does anybody have any experience developing with all of these for the iPhone, in particular with regards to the performance of sequential view/image rendering?
For example say a flipbook style app containing 100 slides containing images/videos/text and then quickly swiping through them, with smooth easing transitions between them.
Which technology would be best suited for this?
I have started to play with Titanium and so far it looks very promising, I would very much like to find some more resources about AIR on the iPhone but they seem (for me) to be quite scarce, any ideas?
I have used Phonegap and Titanium for iPhone development.
Titanium is a much better choice for your purpose as it runs the UI as native code.
Phonegap will only render your app in webkit, so performance is never going to be optimal.
Another framework you should consider is Corona - which has more in common with Flash than either phonegap or titanium.
I have created an app using Titanium, and while it worked pretty good on the iPhone, performance on Android was horrible. I know you asked about iPhone performance, but I guess it's nice to know eh :)
Anyway, Titanium performance will never be equal to true native performance. but very usable.
I don't have experience with sequential view/image rendering, but I've been involved in the development of a couple of Phonegap, AIR and Titanium projects, and the winner for me is Titanium.
Phonegap is good, but tends to go sluggish once you start working with a lot of data.
Titanium has been indistinguishable, performance-wise, from a native application for the most part (and easier too!)
I haven't done too much with AIR, but it's reputedly not so good, although the next version of the packager is supposed to be much better.
i have used PhoneGap and Titanium, in the end I choose Titanium I did write an application requiring a photogallery type od swiping though pages and it works wonderfully.
This is a link to the final application in the app store
http://itunes.apple.com/us/app/kodak-gallery-quickie/id413197524?mt=8
Related
I'm aiming to do an app like Badoo:
http://itunes.apple.com/us/app/meet-new-people-chat-socialize/id351331194?mt=8
Basically it involves chatting with people and GPS geo-location.
Question is - I have two options:
A. Have this developed in native XCode for iOS
OR
B. Have this developed in HTML5 + PhoneGap
Assuming either route is with an experienced developer, how much time does B save over route A in terms of getting a viable product out?
Performance, speed, and UI are all important for this, so obviously native is ideal... but how much time would PhoneGap save in getting it out?
Thanks so much!
Have this developed in PhoneGap, as you can target multiple platforms. And also phonegap also supports geo location functionality. so its a win win with phonegap.
if you are going to target ONE platform, do the Xcode route. if you are going to target android and ios together, then please Phonegap.
I'm a fan of native development even if you are deploying to multiple platforms.
However, the main point is if you have skills in html/css/javascript and potentially want to support multiple platforms then by all means go with PhoneGap.
If you have skills in iOS development then go native and reconsider what to do if you want to support other platforms later.
IMO, once you've developed an application in one language, then the amount of effort required to do another version in Android, PhoneGap, or whatever is greatly reduced. If you know the target platform well it is painting by numbers.
If you are building for iPhone/iPad (JUST IOS), then xcode will be your best friend and it will be much faster to develop in xcode in that case, as documentation and sites like this one (stack over flow) have many code snippets around and it will make your life easier. And not to mention that storyboards are also excellent in making your User interface. If you take the xcode route, it will still take you roughly the same amount of time as phonegap.
HOWEVER, if you want to make the SAME app for iphone and android, then phonegap will save you 50% project time, and this only applies when you are talking about one app for both android and iphone
Just out of curiosity, where do your skills lie in? ios or html/css?
Titanium claims it can do the same app on average 70% faster than native XCode.
What's been everyone else's experience in terms of difference in speed of development (between native XCode and PhoneGap or titanium) ?
Let's say an app like Kik Messenger or Badoo ....
Typically, a good XCode developer can do it in 4-5 weeks, assuming graphics and backend are in place.
What would it take for an experienced Titanium (HTML5) person to achieve this? (roughly)
Time to market depends on quality of specifications, process and people, much more than the underlying technology or framework.
Coding a real application with Appcelerator Titanium is not that easy, and runtime performances are SLOWER than native code because it's using a javascript engine as a bridge. Especially with a big TableView, it's much more slower, and the feeling is just not the same. But once you have purged the memory leaks, the feeling is nevertheless incredibly better than with HTML5.
You should be interested in Titanium or PhoneGap(now known as Cordova) if you plan to distribute your application on other devices or if you really don't like Objective C.
If not, keep it with the Native Xcode.
I would add that Cordova will not make any UI, but let you access camera, accelerometer or GPS with javascript inside HTML5 code. You would probably use Sencha Touch or jqueryMobile with Cordova.
In my experience, if the app is not a simple template app then you would be better advised to create a native app for each platform.
As Rob says, trying to overcome the lowest-common denominator situation and overcoming limitations in cross-platform "solutions" usually means it takes longer to code than doing it natively in the first place.
You might even hit a problem which causes you to abandon ship and start from scratch as native apps. So if you decide to go a PhoneGap or Titanium route then make sure you research fully before starting and that you won't have future requirements not covered by them.
If you are an iOS developer and you are developing it only for iOS device, then it is better to code using XCode. If you are more into Javascript and developing for both android and iOS then you should use Titanium or Phonegap. Between Titanium and Phonegap, I found it easier to code using Titanium(and yes fast as well). But I am not sure how much worth is using Titanium. http://usingimho.wordpress.com/2011/06/14/why-you-should-stay-away-from-appcelerators-titanium/
I'm actually performing a fairly intensive survey of all the major cross-platform mobile development kits right now. I started by making a sample application from scratch in IOS that uses a few simple device features, and then reimplemented that as an Adroid app. Both of those took about a day to complete (the android took maybe half a day longer). Since I've never written an android app before, I think that's a good baseline in terms of comparing development time between the various other frameworks I'm testing out.
I'll update this comment in a few weeks with a blog post when I'm done, but for the moment I've been finding that these cross-platform kits are vastly more difficult to use and take a lot more time, even for the simplest applications. and despite this, there's still quite a bit of custom per-device code that has to be written for UI and fundamental idiosyncratic differences between how device services function, so you don't really get the value of a true "single code base" that you may have been expecting.
I think the main value in these may turn out not to be anything related to development time or code reuse, but instead only as a way for non-app-developers to create simple prototypes that can later be handed over to the "real" mobile developers to be built out into true native apps afterwards... Not really all that useful in my opinion, but maybe my thoughts will change as I delve into this further.
Appcelerator is not HTML5, it is a native app built in a higher level language of JavaScript. It abstracts the complexity of common elements away and provides huge value, ping me offline to know more. I run our California business.
I am a C Sharp.NET & Silverlight developer and now thinking to swicth to SmartDevice development specially for iPhone & Andriod based phones. I have looked over web and found some cross platform development frameworks like
http://developer.openplug.com
http://www.phonegap.com/
http://android.xamarin.com/Welcome
but not sure about which to choose. Naturally I would like to keep my learning curve less but also would like to choose platform which provides more power, so I am looking for your suggestions and 'Getting Started' tips and also which device you think will be in demand in future iPhone or Android ? .
Thanks,
Maverick
I wouldn't recommend any of those. The problem is, that those "cross-platform" development frameworks, still aren't cross-compilable. This means you still need to develop an application for each platform, but you can reuse heavy calculations if you are using models af MVC.
Another thing is that those frameworks still aren't 100% native supported, so you'll loose some features from the native frameworks when developing applications.
I've read a lot of articles and to be honest, these cross-platforms seems to be dying out, cause both Android and iOS are moving very fast in each their direction and the cross-platforms cant keep up. But it's still up to you.
In would recommend you to choose one of those platform and learn it from scratch. With your C Sharp background, maybe iOS and Objective-C would be the most natural choice.
Enjoy
Edit: Regarding you last question:
I dont think it matters which one you choose, both will be domination for a long time. You should pick the one you can identify yourself with.
since you are C# dev, go for MonoTouch. I heard good things about it.
Miguel de Icaza is behind Xamrin. He wrote the most prolific .NET platform for UNIX, mono. I believe both he and his team have the capacity to bring you the most coverage for common features on Droid and iOS. My friend has a startup and is releasing an app shortly for iOS on Xamrin. It is a video streaming app.
HTML 5 will get you the most cross platform for the investment. Of course, like everyone else has said, if you need lots of native integration or if you want to use the latest APIs upon availability, you have to go native.
I'm really worried that when I write iPhone app with Sencha Touch and put it in PhoneGap container the user experience would downgrade.
I particularly see the bottlenecks in:
fluency of the screen transitions (animations)
fluency of scrolling
Please have in mind that there are lot of 3G iPhones runnin iOS 4.x that made them very slow. I'm discarding the support for the original iPhone.
I, being a trained UI professional, can spot the ST app just by touching few things in it.
Does the shift from Safari to PhoneGap container increases the performance?
Do you have any experience with it?
I haven't used ST or PhoneGap, but I have used an app built with them. I can say definitely experience about the apps was worst in my 3GS. If you're planning a demo, prototype or test, you're safe with them. However if you want to make an app with competitive UI/UX, you should not.
(and even you want to make prototypes, it should be better having some papers)
For your question, the speed. It's definitely not comparable. HTML + CSS is feature-rich, easy to use framework. Of course, it's slow as much as it's easy. Most of HTML based UI tools uses just UIWebView which is a part of native framework. In fact UIWebView is Mobile Safari itself. So the performance of the tools never be better than Mobile Safari. If you want to check performance in animations, just visit http://www.chromeexperiments.com/ with Mobile Safari. I checked none of showcase is running smoothly even many of them does not require strong graphical power.
Native apps are compiled and optimized with cutting edge technologies from professional researches over decades. And there are a lot of options to tweak and tune the code for performance. However a few of them are applied to HTML. Because HTML should guarantee feature-rich, easy-to-use framework always. And most of optimizations (which makes performance improvement) are trade off between feature and simplicity.
However in iOS 4.3 Mobile Safari's performance is improved. But I don't believe it's meaningful for apps with shining UIs.
I saw a considerable graphic framework with JavaScript. In fact, it was game framework with scripting in JavaScript. So it has no relation with HTML or CSS. (I forgot the name of it, however it was incomplete product)
PS.
And there is another big reason for you. The UI behavioral inconsistency. The frameworks mimics native UI of iOS but incomplete. So it feels uncomfortable like imitated copycat brands.
However you have no need to care about it if you don't want native UI.
Edit
It's been a long time after I answered this question, but I realized that I also have to mention about GC. JavaScript is GC based language. It means, it has unpredictable GC time which makes main thread stops. This makes UI struggles. On native implementation, you have control to use GC or not.
This wouldn't be a problem on Android. Android always had those struggling because of GC on Java. Consequently, users will not feel any difference. But on iOS, your HTML5 based app never provide better experience than competitor's native app.
There are many workarounds for this GC time issue. Such as incremental-GC, realtime-GC and so on. But actually, there's no real solution. Because the primitive problem is you don't have control.
It turns out that putting a PhoneGap wrapper around any webapp (including all ST2 apps) can actually significantly decrease their performance. This is because the UIWebView which it uses is actually not the same as iOS's Safari browser which has had a number of enhancements to make it more perforant. One reason behind this is that as of iOS 4.3, Safari make use of the "Nitro" JavaScript engine which is pretty fast, this is not available on the UIWebView which is used by PhoneGap (although as of iOS5 it's available for webapps running in full screen mode).
A few people have experimented with the performance to see what the impact is, one looking at the performance of the Facebook App and another at canvas performance.
It turns out that the embedded UI browser maybe worse than the Andriod one as some tests have shown.
I found the performance of ST apps to suck even outside of PhoneGap.
At time of writing I would say: Good for mockup and quick app with no high demanding graphics.
But things could change over time as both project (PhoneGap and Sencha Touch) are improving day after day.
And hardware is becoming more and more powerful (iPhone 4, 5, ..., dual arm cpu, ...) so there will be a time where ST and PhoneGap based applications will have performance close to native apps, and this might come after than expected.
So keep an eye on these projects and keep on developing "basic" applications with them to test their performance.
I built a business app with Sencha Touch with and without PhoneGap. Any major performance impact is from Sencha Touch (1.x or 2), not PhoneGap. As Eonil explains, this is because PhoneGap is really using the native browser. I've noticed ST performance "good enough" on iPhone 4 (and I'd argue 3GS with iOS 4.3+; depends on your users' expectations). On Android, only really recent devices are adequate for ST 1.1, but ST 2 has focused on Android performance. I'm sure Sencha will continue to innovate and drive performance because their business depends on it.
If you do use Sencha Touch (or any JavaScript), be sure to use the minified (-debug) version.
I've also built trivial native apps on iOS and Android, and indeed there is no comparison; native is far faster.
I've made several app with ST2, and wrapped for native.
You can of course compare the two, however they are very different beasts!
Put simply, if your Sencha app performs well in Safari and Android Stock, it will perform in a similar manner once it is wrapped for iOS or Android. Phonegap/Cordova do not effect performance much, these are simply the bridge/container to the native functionality.
I think if you are worried about performance, look at the many tutorials around optimizing ST2 apps. There is lots that can be done to improve transitions and list scrolling.
If you are happy with how your app performs as a web app, then I think you have kind of answered your question already. Webapps are not native, and this masquerading done by some of the bigger frameworks is misleading. Ultimately the user will have expectations that are not always met.
Am looking into developing an iPhone native app using Titanium Developer
Since this is still in beta, I am wondering if there are any better options and/or if its a good idea using such software to develop native apps (which are not games; not graphic intensive)
If you don't want to wait, you can do what a lot of us did: develop apps in Cocoa Touch. It works perfectly well for games as well as non-graphic intensive apps.
The similar and more mature PhoneGap framework has been used in a number of iPhone apps and Apple only seems to object if the application autoupdates.
That being said, I wouldn't recommend using web frameworks unless your application is really simple--you will get a much better experience from a native application (on both Android and iPhone)
My company uses Titanium and it's working fine so far. It's also a pleasure to develop iPhone app using javascript and co. I'd recomend you give it a try, it's really simple to set up and start coding.
Some reading up: http://boldr.net/iphone-app-with-titanium-mobile/