If you want to to do systems programming, use node.js
If you want to build GUI applications you can use appcelerator It can even make applications for the iPhone and Android.
What about closed-source? In the (hot) mobile app stores, nobody knows you 're a dog. And, i mean, girls wuuuv their phones, right?
> Also, 96% of all mobile developers are male, and only 4% are female.
http://www.appcelerator.com/blog/2013/01/where-are-all-of-the-female-mobile-developers/
Let the mental acrobatics begin.
2 things:
1) I'd just like to throw out there, as a lifelong programmer (of 33 now), that Objective C is confusing to even a lot of us. Its syntax is really verbose and in some people's (not everyone's) opinion it muddles up and confuses things a great deal. If you're interested in programming, don't give up just because Objective C was so nuts. Try something else.
2) Depending on what you're trying to build, you may be able to build your iOS app using HTML/CSS/Javascript - tools like Phonegap and Appcelerator make this possible.
Bonus:
3) I know there's a ton of Flash hate in the Apple world.. but we've been tinkering with Air 2.7's ability to deploy apps to iOS and the performance is actually awesome...
There is no jQuery-specific platform, as jQuery is nothing but Javascript and requires a js engine as well as something for visuals.
That said, Air is really just a standalone Webkit runtime with some other stuff bolted on. You can use jQuery like normal and HTML like normal. Its like having a chromeless browser to do anything you want to with... just like OS X widgets. Its a little dated, but I built desktop apps for Time Warner Cable for Dashboard, Vista Gadgets, Air and iPhone using 90% of the same codebase between platforms.
Also, there's Titanium, which, despite its huge play in the mobile market, still does desktop apps as well, I believe.
You're going to have a very hard time if you don't have any previous development experience, I doubt 3 weeks is enough time to learn to make anything more than a very basic app. I'd say you're looking more at months to learn, years to master.
OTOH, stranger things have happened.
Have a look at Phonegap or Titanium - they both require knowledge of HTML/CSS/JavaScript but they're about the simplest path to code your own from concept to product. I've made a few apps with Titanium and overall it was a fairly simple experience, though you're not going to be able to do the kind of things you see in apps coded with a 'real' OO language.
There are also some sites that offer apps with 'no programming required'. I've never used one personally, but I'm guessing they're pre-made app templates that you slap a logo and your own content on. Most of them seem to charge a subscription fee. Personally I'd avoid this route.
Years ago I wrote a cross platform app with instagram-style photo filters in Titanium, which was/is a javascript bridge to native APIs, with a fairly sane set of base cross-platform functionality. The idea being that 95% of your code would be fully cross platform, and you could target the remaining 5% for iOS and Android (still in Javascript) easily enough. E.g., stuff like launching Intents.
I wrote the photo manipulation code as native code (ObjC and Java), and was able to link those in to the Titanium-based app. It worked.
It was absolute fucking misery, but it worked.
My experience with Titanium is why I now explain to clients that cross-platform is trouble, and native is the way to go.
Maybe React will fix this, I don't know. Honestly, I really love developing for iOS and Android natively, respectively. Both SDKs have a flavor that fits the platform.
Plus, debugging is so much easier when you're using the native tools.
If you are using logins/profiles/payments look at using a framework as these will often have them built in and ready to go.
A framework might not be ideal in the long run but to get a MVP up and running I'd recommend it to save costs but still get a good product. When you've proved your concept you'll be able to redevelop the app fully.
http://www.appcelerator.com/titanium/
Appcelerator is one I've heard of that is meant to be good.
To answer OPs question, how long is a piece of string? There are so many variables that there's just no way anyone can put a figure on it without even knowing the basic idea.
Time, price, quality... Pick 2 of them unless you have an unlimited budget because you will need to compromise somewhere without unlimited funds.
Paul Hegarty's class on iTunes, while an excellent course, might be a bit advanced if you've had minimal experience with programming. If terms like classes, instances, and objects don't sound familiar to you you should start with a basic Object Oriented programming before jumping into any iOS programming course.
Alternatively try Titanium. http://www.appcelerator.com. It allows you to build native iOS apps using JavaScript syntax, which is a much easier road if you are just starting out in programming.
> The only way to do this is with a mac, and a program called xcode (and a language called objective-c, which basically sucks).
No it's not. Examples: Javascript Lua Ruby. Even if you were locked into xcode, which you aren't, you could still write your apps in C or C++ because xcode supports both of them and the core libraries for iOS are written in C, you just wouldn't have access to cocoa.
>the iPad we were using had decided to auto-update
No apple device auto updates without user permission. Upgrading OS X is only $20 as well.
The fact that this post is upvoted is ridiculous. There's plenty of legitimate reasons to criticize Apple and iOS, but your post doesn't include any of them.
It's funny, we agree on so much yet come to completely different conclusions.
I agree it's about maturity, and if mobile platforms provided a set of stable APIs which remain unchanged over time, It'd be a completely different story (and, with some exceptions, this is exactly why desktop web apps were able to supplant PC software in many ways). But mobile isn't a static target at all, it's moving and changing daily. The iPhone is only 5 years old, and iOS 5 is significantly more advanced than it was 5 years ago (similar on the Android side).
I also agree that the native compiled languages are made with IO and other low level "ground-up" tasks in mind. That's what we've got on mobile: accelerometers, geosensors, cameras, cellular,etc. In that context, mobile manufactures target what makes sense, and web based apps strategies haven't shown they can keep up yet. Heck, maybe the whole open web as a platform makes sense, but following what the big players have done seems to indicate otherwise: Palm tried and failed to bring a web-first development stack to the forefront and Microsoft semi-tried with Silverlight and gave up on that too.
I suppose we disagree on one key thing, and that is this whole "powerful, cross-platform, owned by no one" credo. That's fine, reasonable minds disagree. You make a cogent argument that many might agree with. That said, I'll note that Joe Hewitt, the guy that kinda spawned this whole thread, completely disagrees with you on that (while interestingly, still advocating for webapps). And that's the thing: owners of key technologies (Apple, Google, etc) have made their choice, they've gone native, and other people, most notably Facebook, are left making lowest common denominator solutions that lag behind.
But I suppose that last part is just my opinion, so we'll see.
I found the following books useful:
iPhone and iPad Apps for Absolute Beginners by Dr. Rory Lewis. This book is really for the absolute beginner. There is a companion web site with videos for each chapter.
Cocoa and Objective-C Up and Running by Scott Stevenson. This is more of an Objective-C for Macs than iPhone book, but I found it very beneficial in learning the language and useful as a reference.
The Apple developer site has loads of example programs. They're not really tutorials. They tend to be complete programs demonstrating a concept.
Stack Overflow is a good place to get help with problem solving.
You could go another route and use a tool like Appcelerator Titanium
You can write apps in HTML,CSS and Javascript. Checkout this eBook
If you are looking for something that is cross platform / cross languages (python/php/html/js/more) check out Titanium Studio. It was until recently Aptana Studio until Appcelerator took it over and integrated their product line of mobile/desktop SDKs. It is based off eclipse so you can get pylint and other eclipse packages installed with ease. Also, Appcelerator did a webinar this week going over the editor and some of its features for developers.
Using this example:
http://www.appcelerator.com/blog/2013/11/node-acs-soap-web-service-integration/
I have created a sample here:
var soap = require('soap'); var url = 'http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl'; var args = {ZIP: '90210'};
soap.createClient(url, function(err, client) { client.GetCityWeatherByZIP(args, function(err, result) { console.log(result); }); });
Check out http://www.appcelerator.com/.
This is a mobile platform that let's you write code in JavaScript (which is itself a useful language to know for other things like web site development) and run it on IOS, Android and Windows Phone. I believe you can do websites on it as well. You can also just write websites that render on a mobile device using HTML and JavaScript.
If you learn enough to put a basic app together on Appcelerator you will have enough grounding to do it in many different platforms.
Alternatively, just start playing with HTML and Javascript. It's not very active, but there's a lot of good info in /r/learnwebdev and /r/learnprogramming is good as well.
That is great advice but I would add that I would try to make something on my own first (think minimum viable product). Is this something you could make using a mobile Wordpress site or a development tool like Titanium or Corona? Wont be as robust as a app done from the ground up with a full tech stack but if you can get a few paying customers and prove the market it will be easier to recruit a technical co-founder.
also http://www.appcelerator.com/titanium/titanium-studio/ is a good IDE that will allow you to build the apps in different languages.
PLEASE NOTE: The ONLY way to properly compile a successful version of an iOS app is to do so on a Mac. You can't get the tools that you need to do so unless you are on one.
Javascript is a web scripting language. You would probably want to learn Java instead if you're heading down the Android mobile development route(or Objective-C for iOS) but I'm pretty sure you can still create mobile apps using Javascript. There are frameworks such as PhoneGap and Appcelerator Titanium that can help you do just that. :P
A quick google search about those frameworks I listed lead me to this link:
http://stackoverflow.com/questions/17249500/xamarin-2-0-vs-appcelerator-titanium-vs-phonegap
It sounds like to me, you are looking to create an application for a market that does not already have a solution for the mobile space. The first thing that I normally tell people is if you are planning to spend 100 hours developing this application, you should spend at least 10 hours actively search Google for a comparable application. In most cases, people are able to find what they are looking for in a few minutes, but if you don't you will at least get good ideas about applications that are in a similar market.
Assuming that you do decide to continue developing you application, I suggest that you attempt to strengthen what you are already doing (web design). I know that there are services such as titanium that all you to essentially build mobile applications using javascript and html.
I stand corrected. Maybe it was just having to use their "Titanium Studio" product and having to register with them to even use the software. Maybe I did something wrong, but the whole experience of trying it out seemed very painful.
Also, they do have their closed source extensions they'd like you to buy.
Thanks. That sounds like a cool combo. I'm looking to get into widgets next. It only took about an hour of coding once I figured everything out. Trying to figure out why it was done with semi-transparent images instead of CSS took a while haha.
I've been doing a lot of web programming for the past 1-2 years. I love it. Fun stuff. I just discovered Titanium Studio + iOS SDK, so I'm looking to do a mobile native app written in HTML/PHP/CSS/MySQL potentially just for fun.
Yeah - I experimented with most of the frameworks to see if they are feasible as part of my work. All you have to do is download a few of their showcase apps to see the limitations:
http://www.appcelerator.com/showcase/applications-showcase/
How many Android apps are in there which look native? 0.
There are tons of games coded in Javascript. Facebook games, Google Chrome games, web games, even games that are coded in JS and converted into other languages like Objective-C (via programs like Appcelerator).
There are a number of libraries centered around JS game development.
Titanium allows to make a native app simply with HTML/JS/CSS, although I heard the software is not very stable yet.
If you have time and power you can use simple database like <strong>Appcelerator</strong>, <strong>Firebase</strong> or simple backend with your own scripts.
But here's the simplest solution ( tragic but works )
1.Write a file with Content ( use JSON format* or just divide them via symbol) and upload it to e.q Dropbox or file server.
2.Use this URLSession script and modify data input for your needs (play with the concept via Playground)
let url = URL(string: "http://json-schema.org/example/geo.json")! let task = URLSession.shared.dataTask(with: url) { data, response, error in
guard error == nil else { return } guard data != nil else { return } guard (response as? HTTPURLResponse)?.statusCode == 200 else { return }
do { if let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any] { print(json) } } catch { return } }
task.resume()
Use Iconic or Phonegap. Or you can use Titanium Accelerator.
You've never used either one. You probably don't even know what Titanium is. Titanium makes real apps.
Look at the bottom. Look at all the companies that have Titanium apps.
I didn't mention Xamarin, either. Xamarin is more powerful and makes 100% native apps for iPhone, Android and Windows Phone. It's a phenomenal platform, but it's expensive, so I'm not mentioning it. If you can write .Net apps, you can make a Xamarin app.
What would you consider some of the disadvantages to using a language compiler such as Monkey X? For instance, Appcelerator is a well-known equivalent to this that focuses on mobile development, but when you attempt to go further into something complicated like game production, you begin to find significant hurdles and dead ends.
Monkey X seemed like a great way to develop faster and without the fuss of starting from scratch with another language. While you successfully created a great game with it, obviously, what were the shortcomings you found in going this route?
And thanks for this AMA! I'm brushing up on HTML5 and have my eye on WiiU development in the future, and you've offered a lot of great insight here.
Phonegap ist absolut nichts wert! Die user experience ist da nie mit dem OS kohärent.
Ich entwickle seit 2 Jahren mit Titanium Mobile und es ist absolut genial (Native UI elemente, unzählige 3rd party module). Wenn du willst kann ich dir beim porten helfen. Dein Backend/API würde ja eh schon stehen.
One other way would be to just use Java/Python to make the app "native", but all the guts of it are done inside a WebView using HTML, CSS, and JavaScript. If you find you need to do something on the Filesystem, there are bindings which are able to bind JS functions to Python/Java methods.
It's basically what things like Titanium and PhoneGap do to enable web devs to make native mobile apps from HTML, CSS, and JS - with limitations of course.
Check it out, perhaps it's a route worth investigating? Otherwise I still think what you've done is pretty awesome :)
Phonegap/Titanium/Xamarin are multiplatform wrappers that attempt to allow the developer to share one codebase across Android/iOS/Windows Phone and others. Phonegap and Titanium allow writing using front end web technologies (HTML/CSS/JS), Xamarin is written using C#. In my experience, it's quicker to get a barebones app running on all platforms using one of these, but it's much much harder to refine them to a polished and performant level. Another issue I've seen is, especially with Phonegap/Titanium, is that they share UI across all platforms so it doesn't really feel native. Xamarin recently unveiled a write once/deploy everywhere type solution to this, but I haven't used it to see how well it actually works. There will be people that disagree with me on the downsides and there are places that write professional applications using these technologies, but I find, especially when you're pushing the limits of a platform, that it's much more easily handled by writing native code and maintaining codebases for each platform.
Edit:
OK, a friend finally figured this out. Basically you need to download an older sdk manager and ndk:
In the console or terminal you can run:
$ titanium setup $ 8
Select the locations of the sdk and ndk when requested.
Go into Titanium Studio Preferences > Studio > Platforms > Android and make sure the sdk & ndk homes are correct.
> After reading up on phonegap and seeing some videos I kept seeing people mention occurrences of errors, and obstacles in using phonegap. It almost seemed like you had to learn phonegap itself and all it's idiosyncrasies, which naturally would take time.
It's possible that I am just a unique case or that I've only used it more recently so the kinks have been worked out, but that was not my experience. There were certainly some quirks to work through when the app seemed to work in testing but looked funky once it got on device, but those were relatively easy to figure out. I also stepped into a situation where my team already had some experience with it, so I learned by proxy. And on top of that, we relied very lightly on phonegap plugins and used other resources to get most of our heavy lifting done. So my case certainly comes with a lot of caveats, but I didn't find it especially difficult.
> I came to the conclusion it's perhaps better to do a JavaScript app package in one of the few out there like [1] http://www.appcelerator.com/ Would you recommend this route?
If you're developing strictly for Android, then I can say without even having the experience that Phonegap is probably not your best option. It's not terrible but I am sure there are better ways. The only appeal of Phonegap to me is knowing I can create basically an Android and an iPhone app at the same time with the same code. Or, secondarily, that I can create an iPhone app without needing to learn obj-c.
> Also, what's your opinion on cordova?
I haven't used it myself so I can't really comment. I am familiar with it and am told it compares to Phonegap. Some people do prefer it, but I'm not a good person to ask about that.
>since there are no cross-platform frameworks that run on both
~~There's actually many. There's this from Google themselves which compiles Java to Obj-C. There's Appcelerator which also allows you to target Blackberry, and lets you write in Javascript (but which would be bad for most game-like operations). There's also Monotouch which allows writing in C#, and allows porting with monodroid.~~
I just re-read what you wrote, and you said frameworks. Did you mean as in engine, etc.? If so, disregard the above, that's probably right.
I don't know Java at all (hence why I decided to try app inventor), the other two options are phonegap and Titanium. I've only played with Titanium thus far but the ide has been a pain to setup, complaining about java (like the path, then complaining because I had jdk7 installed rather than jdk6) then unable to properly update the android sdk etc.
I believe Titanium is based on eclipse, but I managed to get that up and running without a problem.
You can build apps with javascript with appcelerator: http://www.appcelerator.com/
With some extra coding you can even make them available on both iOS and Android (you'll need a mac and an iOS device, however).
Do you have an android phone?
I made it in HTML, CSS and JavaScript, since I'm a web developer and that's all I know. I used PhoneGap to convert it to a mobile app. The downside to this is that the app is basically just a mobile website.
Appcelerator is another tool like phonegap, but it uses JSON, which I haven't learned. I would recommend learning Appcelerator over PG because apps use native UI elements and such, which is exactly like a proper app.
If you are looking to code an iOS app with web languages and can handle Javascript, I'd highly recommend Appcelerator Titanium
I used it for a class project about a year ago, and it couldn't have been easier to put together a native app. The (native) controls are available through a very nice API, and I think you'll see the benefit to creating a native app vs. a web app.
Then again, I have no experience with web app creation (and iOS webviews), so I'm not the man to input on that.
As far as not wanting to sign up for an Apple account (seriously Apple, why not allow for free "testing" accounts??), I'd take a look at this gizmo here: TestFlight. I'm pretty sure it allows one to test iOS apps on-device without an Apple Dev account.
I posted this response further down this thread on accident. I wanted to make sure you saw it:
Titanium and PhoneGap are two options. They basically are just apps that contain an embedded web browser that is hard-coded to display your web app. I've only used PhoneGap, but I assume any other option would work similarly. It provided some hooks into native Android (or iPhone) functionality such as accessing the GPS, Camera, etc. It was definitely an easy way for a web developer to jump into developing something that seemed more native to the end-user. I used jQuery mobile for my UI framework, and was very happy with it. Just don't expect a native-feeling app from this, you can definitely tell it is less snappy than something actually native, and there are a lot of quirks that can bite you along the way and make your app seem broken (stuck hover states, clumsy handling of gestures, swipes and multi-touch, etc).
PhoneGap actually bundled all of my resources (html, js, css) with the native app and I had AJAX calls to communicate back with the server. So everything was loaded locally and there wasn't really any loading time. This definitely helped make things seem more responsive, but again, far from the performance of a native app.
There's 2 options that I know of.
You've got Phonegap which, to my knowledge is pretty much what you're asking for. A wrapper of sorts for a web application written in HTML and JavaScript. It's got some good documentation and so far as I know is released under the MIT License.
Then you've got Titanium Appcelerator which is sort of the same thing though it can support php, official release last time I checked did not though some people have gotten it to work. And as I understand it, it compiles to an actual native executable with a native UI and all.
Though form personal experience the documentation is horrible unless you're willing to pay a LOT of cash to get access to their developer network.
OP check out Titanium It's not great but it's pretty easy to make a native app with this framework using pure javascript. Might be useful if you wanted to start working on some apps while you're still learning Obj C
If your previous experience is with ActionScript, you might look into Appcerator Titanium. It lets you build Android and iPhone apps with Javascript.
Alternatively, the subset of Java you need to know for Android development is actually pretty easy to pick up.
This is going to sound weird, but what about using Titanium
You write everything in HTML/CSS/Javascript and it includes SQLite as the database. I used it to build an inventory tracking program for my girlfriends etsy account.
I suggest it mostly because everything is built in. You don't need to setup databases or learn some new UI API (assuming you already know basic HTML). Javascript is pretty easy to work with and there are a lot of prebuilt libraries and tools.
Thanks for that, then I had completely misunderstood what WPF is. One could possibly say that it corresponds to e.g. Appcelerator Titanium or Adobe AIR then? (I don't yet have experiences with any of these yet but intended to check the Titanium as I'm an open source freak and like python and javascript)
> iPhone apps could be ported almost effortlessly.
You can sort of do this now using the Titanium Mobile Framework.
Not to sound like a shill for the company, but you can write a single codebase that ports to both platforms, with fairly minimal platform specific stuff in your code. Highly recommended.