Thursday, January 20, 2011
Apple and "Apps"
I have been working on some iPad software for a new product.
The Apple software development environment for the iPhone/iPad is very interesting. First of all, without jailbreaking, its very hard to do much on these devices without Apple's "permission".
Permission involves, among other things, paying the $99 to be an iPhone developer. But that only gives you access to restricted parts of the iOS (what Apple now calls the operating system on its iPhonish devices) portion of their web site. To actually develop software you need to download the XCode software development system and all its associated iOS goodies.
The XCode environment has been around for some time - I think since the days of the original 17" aluminum MacBooks. Its easy enough to use and, compared to Windows, its really not all that bad. I have also spent a lot of time with the .NET software development environment (I am on VS2008 and about to switch to VS2010). Its a bit more polished but, considering the number of developers involved at both companies, Apple gets high marks for doing so much with so few.
For iOS you use the XCode environment to build iPhone/iPad (iaps) applications. To do rudimentary testing there is a on-computer (on your laptop or computer, not you iPad/iPhone) simulator. The simulator is an app that looks like an iPad or iPhone but its just a program. Your software can run on that for a variety of testing.
I say its rudimentary because out of the box I was able to find differences in the OpenGL implementation on the simulator and the iPhone. For most things though, so long as they do not involve things like GPS, accelerometers, multi-touch and other hardware not available on the hosting device it seems pretty good.
Running your application on an actual device requires you to link your development environment to the device. You have to do this through the Apple website and its tedious to do the first time. However, once its all up and running its fairly easy to work with. Basically you connect the device to the development machine with a USB cable. Then the software is loaded there instead of the simulator.
Debugging works just as if you are on your own computer debugging software. I've had very little trouble with the connection between the two - only having to reboot things once to straighten out a problem.
In terms of building apps Apple has made it fairly easy to get started. Its easy to see why they are so successful in this area based on my experience so far.
Along these same lines Apple has also set up an "app store" for Mac OSX applications. This is very similar in concept to the iPhone app store except things cost a bit more.
In the long run I think that most software people buy on a small scale for computers will be handled by something like this. Its easy to use for both the user and developer. It allows the developer to instantly access a large market with very little work. And users have a relatively uniform experience.
The alternative is the world of "jailbroken" devices - which Apple must also live with.
However, I think that this gives users even more choice and is not necessarily bad for Apple, either.
As with the transition of print to digital and electronic media I think that software will now start to transition from the "amorphous" form it has now to specific, concrete things. These "things" will be represented by little, cute icons in an "app store".
Users will no long have to deal with "installs" and "reinstalls" to get things they want or need.
Devices like tablets and phones will become as powerful as laptops today.
(Apple's iOS 4 has most everything Mac OSX does, but on a smaller scale: networking, OpenGL, USB, etc. etc.)
Large, complex software elements will live on "servers" or "in the cloud" away from users. "Experts" will manage these systems away from the prying eyes of the everyday users.
Posted by John Gault at 7:46 AM