ArticleDirectory
- Phonegap
- Flash/Adobe AIR
- Titanium
- Corona
- Unity/unity3d
- Xcode/native iOS development
- Conclusion
Native Development, titanium, Corona, unity, phonegap and more
Ever since the iPhone has revolutionized the mobile phone and everything
About it, there have been several tools out there to create apps
The iPhone, the iPad and all the android driven devices. I have been
Toying around with some of them and reading up on others. I concluded
That there's a lot of tools out there and every single one of them is
Completely different. The thing that struck me the most though, is how
Please people don't understand the differences. So here goes a blogpost
About the different tools I 've come into the SS and what they actually do.
I'll run through them starting from the easiest ones to get started
To the more hardcore ones.
I'm very aware I might be forgetting some tools. However the ones
Listed here are the only ones I actually used at least once. Feel free
To add other tools, the way they work and your findings about it in
Comments.
NOTE: If anything, I consider myself an iPhone developer, not so much
An android developer, let alone a mobile developer. My findings and
Views on things are based on my preference towards iOS development. I'm
Not bashing the Android platform. I just know more about the IOS
Platform. I just wanted to state that for the record before you read on.
Phonegap
I'll kick off with phonegap. Why do I think this is the most simple one?
Well, it actually doens't require the knowledge of anything new
Create your first app. If you have ever built a mobile web app, you can
Create a phonegap app.
Phonegap is essential a web app-the same one you built the other
Day at work-embedded in a native wrapper. You build the app using
Html/CSS and Javascript. You can use plain old JavaScript or make your
Life easier by using jquery, prototype, sencha touch, mootools, etc
Handle the interaction. Just likeAny otherMobile website.
What the enduser sees is in effect a web app running inside
Webview. So what's the native wrapper? Well it provides Javascript
API's to give access to the contacts, filesystem, camera, microphone,
GPS, etc. phonegap provides the bridge to the API's normal Web apps
Can't get access to. It's that simple.
Personally I don't see the appeal; most definitely because
Browser performance doesn' t come close to native app component
Performance. Think about scrolling through a list of 1000 entries.
I know a lot of people babble on about how you can'Just turn your webapp into a native app'.
But what's the point !? That native app doesn' t provide anything the Web
App doesn't and it's an app. You coshould as well make it a full fledged
Web app which users can just add to the homescreen.
URL: Phonegap
Flash/Adobe AIR
Yea, you didn't see that one coming, did ya? Yes, flash can create IOS
apps too. And of course you can create Android apps too (and you can
even create flash websites for Android !). Why does flash come second in
this list? Well anyone who can create a flash app cocould create a iOS app
using flash. the eagle-eyed viewer has already noticed how I mentioned cocould
in that last sentence. I have tried to create several apps (that
actually do something) and every time I ended up realizing the same one
thing: it performs like shit .
for those of you who don't know: I spent the past 7 years being an active ActionScript developer. i'm not what one might call a flash-hater .
I 've tried to create simple games and apps for iOS using flash. A game
using the accelerometer (which crashed when too much Accelerometer Data
came in simultaneously. limiting that datastream kind of went in the way
of the actual game) and an app using the microphone (processing
microphone input on an iPad 1 was so hard that any UI interaction wocould
make the audio playback stumble ). both of them ended up staying ideas
until I finally get my head around native iOS development.
flash can compile native IOS apps. those apps are not interpreted at
runtime. adobe says they're actually generating the Native Binary that
You wocould get if you built it using xcode. seeing how the performance of
several natively-built games is perfect and flash-generated apps (not
even games) perform horribly, I 'd say Adobe has quite some work before
making flash a viable tool for (at least) iOS development.
And I know what you're thinking right now:"Dude, what about that flash game that made #1 in the App Store, not too long ago?". Yea... Let's talk about that... WhyDidn't
It run on my 1st generation iPad? Did the app need a camera? No. Then
What else does the iPad 2 have, that iPad 1 doesn't? Yes: CPU/GPU power.
Let's face it: it's not an overwhelming 3D game. It's a 2D game. It
Shocould run just fine on the 1st generation iPad. in comparison: The Back To The Future game (which is completely in real time 3d) runs just fine on my iPad 1. and so does the (rightfully named) epic Citadel demo featuring the Unreal Engine for IOS.
And if you have ever created a flash app, you know how annoying
Debugging can get. Well debugging a flash app on a device isn' t exactly
What I 'd callFun.
URL: Flash cs5.5-flash builder 4.5.
Titanium
This is actually my favorite. it gives best of both worlds. titanium
provides close to native performance (by using the native components)
whilst having a simple and powerful API that gives access to just about
Any interface either iOS and Android has. I created a few apps using
titanium and all I can say is: it's the fastest iOS app development tool
I 've seen yet. you can create great looking and feeling Applications in very little time.
You create the app writing JavaScript and calling titanium's APIs."How is this different from phonegap"
You think? Well,Javascript you write is interpreted at runtime
(I'm guessing a webview). However this webview is invisible and only
Does business logic. In fact: it only doesCustomLogic. For example: When you create a tableview, youCallTitanium. UI. createtable ()
In Javascript. This CILS a titanium API that runs native code in
Background and returns a native IOS/Android component with native
Performance.You populate the table component using more JavaScript.
Once the data is in there, the table behaves exactly as fast and smooth
As any other tableview in IOS... Because itIs a tableview in IOS. (Or in Android... You get the point)
The javascript callto the titanium API Are Mapped to native code In
The titanium framework and Generate native components . Events in those
Components are sent back to your code in Javascript where you can handle
Them. End result is very fast performance . Slowest part of any
Titanium app is app logic/handling events in Javascript (And Let's face
IT: That's still faster than you can blink). Ui interactions, UI
Animations, UI effects and some platform specific calculations are
CompletelyNative. Yes,Native Is key here. It means performance. Better performance Means Allows better user experience. (Some people still mess it up, even if performance is as good as it can be ).
That native performance is wonderful. That's why I love titanium.
Only bad thing I 've come to notice. You can't do any kind of image
Processing.So if you're thinking about building the next Instagram (camera image processing app:Instagram ),
Don't use titanium. Even though you have complete access
IOS '/Android's camera API, You can't heavily edit the image... And
Same goes for editing audio/video. So in the end:Titanium can only
CreateData-Driven applications.
Oh BTW:Titanium is free.It comes with a lot of luxury, some great
Tools, good debugging and access to everything native on iOS and
Android! All that, for free. And open-source!
URL: Titanium Mobile Application Development
Corona
I first heard about Corona about a year ago. When I checked it out back
Then, I didn't seem all that convincing and I didn't spend much time
Grouping it. However when I was writing this blogpost I gave it another
Glance and I have to say:LotHas changed.
It looks like Corona has truly grown up and provides a massive API
Create 2D games for iOS, Android and others. You write your code inLua
And when done you create a game that runs at native speed. Since I
Haven'ttested this myself, I wasn' t really convinced at first... Until I
Saw the demos that were created in only a few hours and completed MED exactly like the blockbuster hits in the app store. That's immense!
Yea, remember those ideas for Flash games I had? I might just give corona a run for it's money. Again:Might just.
If I spend 200 $ for an application that shoshould replace my free tools
(Titanium & xcode), I 'd better really build a game with it.
URL: Ansca mobile-corona
Unity/unity3d
This is by far the most exciting tool of all. One problem: unity is
Designed to create 3D games. If you want to create a todo-app, this
Isn't what you're re looking.
The development environment is great, you can write the code in
Javascript, CSHARP and a handful other ages. The components can be
Put together using Drag & drop. There's an insanely extensive
Debugging environment. And when you feel the need to change some of
Generated objective-C Code... You can. Unity generates an actual xcode
Project before compiling the final app. You can access that project and
Change things according to your needs.
The 3D assets can be created with almost any 3D modeling application
Out there: 3D Studio MAX, cinema 4D, blender and a few others. Unity
Even provides ways of nicely importing them. There's also a 3D Modeling
Feature in Unity itself, however I don't know anything about it.
Soundscapes for the game can be created with any application you like
And then imported into unity. Again: There seems to be a sound
Editor/creator inside of unity which they claim is pretty complete.
The one thing that I really love about unity is the debugging
Features. It's just brilliant. There's several levels of testing your
App.
-
- In-ide testing: just hit the play button and you can run the game inside the development ide using the keyboard and mouse.
- everything working fine? Okay, but now you 'd like to test how the
input with the iPhone or iPad work: Touch and accelerometer-based input.
Well... there's an app for that .
the unity remote connects your iPhone/iPad over wifi to your unity ide
and sends the relevant input to the game running inside the IDE. at the
same time you can see the game output (game UI) on your iPhone/iPad. the
result is quick and easy testing of the game 'on the device' (since
both input and output are both on the device) without installing it on the device .
- okay: now we want to really test on device . you
know, the way you 'd do it in xcode for example. that's possible too:
just run the app on the device and have full on-device-debugging power.
it's just a few clicks away. the full debugging power comes straight out
of xcode. there isn't any other tool that comes close to xcode's
device-debugging. at the same time y Ou can see all your logging inside the unity ide too. there's actually multiple ways of debugging depending on your personal preferences. how's that for 1 tool... Some Creative Suites don't offer this kind of debugging choices.
When you're ready to deploy your app, unity creates the actual native
App. Android, BlackBerry or iPhone (or desktop) (and soon flash !!) Are
Supported. And if you think the performance of this will be horrible
Since you're creatingMassive3D game without writing native objective-C: Nope. The performance isOff the hook. It's insanely good. Don't want to believe me? That's okay. How about Electronic Arts? Yea, if one of the world's most famous game developers choses unity, there is probably something to it.
URL: Unity3d
Xcode/native iOS development
xcode is the official toolset provided by Apple for any mac and iOS
development. and yes: This one is last in this list since, in my humble
opinion, objective-C is hard. I learned a way of implementing MVC at
school but as it turns out, the one used in iOS development is very
different. it requires quite some adaptation. there's lots of strange
syntax I 've never seen. the developm Ent environment is pretty big and
complex. then there's the . h and . m files (" what's the difference ...? ").
there's something called storyboarding that seems insanely weird at
first, but actually makes total sense once you get what it's... Etc.
Yes, xcode is definitely the hardest tool of them all to get started.
However I don't think xcode needs a lot of explanation. It's the tool
Provided by Apple. It's what Apple considers the best tool they cocould
Get in the hands of their developers. And to be truly honest: It's
Pretty complete suite. It creates a Native Binary. There's nothing more
Close to home than this.
URL: Apple Developer Tools
Conclusion
Conclusion? There's no conclusion! This was supposed to be a list
Different tools to create apps for iOS (and Android and others) and
Explaining how they're different from their colleagues/competitors.
But since you're asking for one: I 'd say depending on the kind of application you're looking to build there's a tool for you.
- For3D games: UseUnity. It's powerful, it's specifically designed
To help you create games and you can create for multiple platforms.
-
- For 2D games: I 'd recommend Corona. It looks pretty promising.
API provides quite a lot of preinstalled game features (e.g. Physics
With box2d). I'm pretty sure you can create a decent game with this,
Faster than you wowould in xcode with objective-C.
-
- ForPurely data-drive apps: UseTitanium. You get the best of both worlds. Fast Development & Native look and feel.
- For heavy calculating apps (e.g.Image/video/audio processing): Go
Native. It's the only way. You cocould create a titanium module which does
The heavy lifting (using objective-C )... But what's the point. You cocould
As well just create the entire app in xcode then.
-
- I don't know when I 'd ever use phonegap to create an app...
-
- Don't use flash.
I hope this was helpful for some of you. Let me know what you think in the comments.