Why Mobile Devices?
Mobile computing is expanding rapidly… faster than any other web-based technology, and I think we can safely expect there to be an increasing need for a workforce skilled at mobile development. Many studies have pointed to the explosive growth of the adoption of mobile devices. In a recent informationweek post, “The explosion in Internet-enabled devices will coincide with an equally dramatic increase in mobile Internet users worldwide, IDC said. The number of users worldwide will more than double by the end of 2013 from 450 million this year… Mobile Internet use will more than double, and most activity will be in online shopping, blogging, and accessing business applications.” That’s pretty fast growth considering mobile computing is so new.
There are a number of platforms that generally count as internet-accessible devices:
- Apple – iPod, iPhone, iPad, Apple TV.
- Android – phones, tablets (due out this fall), Google TV, Nook reader, and a lot of other devices soon to be released.
- Blackberry – still a leader in the corporate market.
- Nokia – world-wide leader in mobile devices, but mostly overseas.
- Windows – mobile phones, Windows tablets in the works.
- Palm – mobile phones.
- others? Smart fridges?
Mobile and Our Economy
Fitting with our economy, mobile development has an element of entrepreneurship. This is of course harder to identify easily, since entrepreneurship is elusive by nature. There are possibilities for people to make money independently by creating and selling apps on either the Apple or Android stores. And, contract employment is entrepreneurship in a way. Unfortunately, most of the main apps that are making serious money are games…not business apps. Not to say that business apps are not important. In fact, I think this is the untapped potential of mobile apps. For example, there are apps like Wired Magazine that are making money, and are moving towards mobile as a platform for their services.
Ways to create mobile “Apps”
There are three basic ways:
- Native Apps
- Web Apps
- Cross-compilers (program in one language, and compile for a different)
“Native” apps are those created with the native programming language for their platform. For us, that means either Objective-C (Apple) or Java (Android). The benefit of this method is that you can take full advantage of all the capabilities and functions of the devices. It is arguably the best method for creating apps for devices since it offers the most robust performance.
There are, of course, issues related to this type of development. First both Objective-C and Java are both complicated languages, and require a fairly high level of programming and logic to be effective. I personally think that this level of programming is more often encountered in Computer Science majors at the bachelors and Master’s levels and think that our mobile program could be a ideal feeder for a bachelors program in computer science.
There are also issues with hardware and software. For Apple devices Objective-C can only be created using Apple tools on Apple computers. We would need to have at least one lab of Apple computers to develop this way. There are other options of course… including cross-compilers (more below) and online app creation tools such as http://appbreeder.com/, http://iphoneseattle.com/, and lots of other ones.
For Android the open-source (free) Eclipse editor is commonly used along with the Android SDK and can run on either Apple or PC computers. There is also the free AppInventor online at http://appinventor.googlelabs.com that serves as an online tool to create native apps for Android. In addition there are others like mobileapploader.com, http://isites.us/,
The “web apps” method also applies to creating websites that are accessible on mobile devices, ie, website development for mobile. Many websites have mobile versions like http://m.cnet.com/ or http://touch.sproutcore.com/npr/… however you may not be able to browse many since they will “sniff” your browser type and send you to a desktop version.
Tools for Mobile Development
There a number of tools specifically for mobile web and app development:
- PhoneGap – www.phonegap.com (the most popular)
- Accelerator – http://www.appcelerator.com/
- WidgetPad – www.widgetpad.com
- Rhomobile – http://rhomobile.com/ (ruby based, so not a good option…but it is pretty robust)
- Whoop – http://www.whoop.com/
- AppMobi XDK – http://mkt.appmobi.com/
- AppMakr – http://www.appmakr.com specifically for Apple.
- Sencha Touch – http://www.sencha.com/products/touch/
- jQTouch – http://jqtouch.com/
- jQuery Mobile – http://jquerymobile.com/
More about PhoneGap vs Appcelerator (the two most popular web-app tools):
There are also books available about this approach:
http://building-iphone-apps.labs.oreilly.com/ (entire book)
http://building-android-apps.labs.oreilly.com/ (entire book)
There are of course, arguments for native vs web apps… as native apps can be more robust.
Cross-Compilers (aka “native” apps)
“Cross compilers” are used when you create code in one language, and output it to another. The best examples of this are the Flash packager and the Unity Engine that package for both Apple and Android. Adobe Air (Flash/Actionscript3) can run either as a compiled native app or as regular Flash content on an Android, but Flash can can only run as a compiled native app on Apple. Using Flash (Actionscript3) you can access nearly all the native capabilies of the devices.
Due to the fact that you can develop Adobe Air Apps for either Apple or Google (and others) with the same basic workflow I think this is a great option for us. I have done some beta testing with Flash (on Android only) and found this by far to be the easiest way to create “native” apps with custom graphics, text, animation and media.
Yes… there was a short time that Apple blocked Flash on their devices. Since that decision has been reversed and Apple opened up the market to Flash-created Apps again this is now a possibility… although Flash will still not run in the Safari browsers.
More about Apple allowing Flash:
Books on Android and Flash:
Apple Vs Google Devices
There are many reasons to consider both platforms, but here are the basics of each platform.
- First to market with cool devices.
- Their development is closed… ie, they make the hardware and software for their devices. This insures quality and consistency.
- Profits are based on sales of devices.
- iPhones are currently only available on AT&T nut may also be available on other carriers soon.
- Runs on iPod, iPhone, and iPad.
- Came to market after Flash. Needing to catch up.
- Open-source development. Very flexible.
- Profits are based upon advertising.
- Devices are available on nearly all US carriers. Not sure of the global availability.
- Includes phones, tablets, Google TV, B&N Nook reader, and other devices. The development is more open, but suffers from fragmentation since there are so many different devices.
Apple devices sell very well, but Google is catching up fast despite the fact that they started after. Google devices are available on almost every major network. Also, Google has partnered with a lot of companies to integrate their Android OS… such as Barnes and Noble, Sony, Logitech, Motorola, and Intel.
More about pros and cons of Apple vs Android:
Here is a list of Google Android devices:
About RIM Blackberry, Windows, Palm and Nokia. They are not major players currently with emerging devices, although they should not be discounted for the fact that they are still commonly used for accessing web-based content.
Google vs Apple App Stores
One distinction between Apple and Android is with the app stores and purchases made by users. Apple users are used to paying for the apps, whereas Google users are used to getting things for free… with the majority of the apps being advertisement (Google/AdMob) supported. Although Apple has more apps currently, the Android store is catching up. Also, Apple apps can ONLY be delivered through the Apple app store (where there is tight control), whereas Android apps can be delivered via the Android market, a developers website, 3rd party websites… or even an email.
More about the app stores:
My personal feeling is that Android is still a safe bet. Here is why: http://news.cnet.com/8301-13579_3-20017903-37.html
“Although Apple recently changed its developer agreement and clarified its approval process, 85 percent of the developers surveyed see Android as the most open platform, compared with 6 percent for iOS. And 57 percent see Android as having the most capabilities versus 36 percent for iOS. App developers praise Apple’s iOS for its strong market share and revenue stream, but a huge number see Android as the platform with the most diverse potential over the long haul.
Among the more than 2,000 developers surveyed this past month by IDC and Appcelerator, 72 percent said Android is best positioned to power a larger and greater variety of devices in the future, compared with 25 percent who said the same about Apple. As a result, 59 percent of the app developers favor Android’s long-term outlook versus 35 percent for iOS, according to the “Appcelerator IDC Mobile Developer Report, September 2010.” (PDF)”
GIS and geolocation:
The media track would first focus on the creation of audio and video. Then, would shift towards using audio and video effectively on devices. This is one of the fastest growing aspects of mobile devices. The rate of consumption of video especially is increasing the most.
From http://www.reelseo.com/mobile-tv-2010/ – “research revealed consumers are confident in the uptake of mobile TV and video, with 74 percent of respondents expecting an increase in usage by 2010.” I also think that HTML5 (especially use of the <audio> & <video> element) is going to become more of a reality on mobile devices before desktop browsers. There is no distinct winner of the accepted video codec on desktop browsers, but on mobile devices the most common hardware decoder is for H.264 video… a clear winner at this point. Find out more at diveintohtml5.org/video.html.
3D capabilities on mobile devices are quickly improving. With the Tegra2 NVIDIA chipset especially we will see great improvements in 3D on mobile devices… giving rise a new set of capabilities like gaming and visualization. Since we already teach 3D modeling and other skills, this track would enable students to use their 3D skills for mobile devices.
I think the Unity 3 engine shows the most promise. We can also use OpenGL ES, but that is serious programming. With Unity, you can use the same development tool for Apple, Android, web, and XBox 360! Also, the basic editing tool is free. http://unity3d.com/unity/whats-new/unity-3. Currently we teach Sketchup… which is a free Google modeling tool. The Sketchup models can be used in the Unity Engine.
This is a new and quickly changing field, and it is hard to keep up with it, but NOW is the time to get into it. Don’t wait. It is on our doorsteps already.