Understanding Mobile Development – in mostly layman’s terms

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:

  1. Apple – iPod, iPhone, iPad, Apple TV.
  2. Android – phones, tablets (due out this fall), Google TV, Nook reader, and a lot of other devices soon to be released.
  3. Blackberry – still a leader in the corporate market.
  4. Nokia – world-wide leader in mobile devices, but mostly overseas.
  5. Windows – mobile phones, Windows tablets in the works.
  6. Palm – mobile phones.
  7. 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.

As web development diversifies, I think it is safe to assume that there will be a need for both desktop-based and mobile-based web designers/developers. Already, a entry-level web developer is expected to know something about web standards… especially use of html, css and javascript; the core technologies of HTML5. Other programming languages like Php/MySQL, XML, JAVA, Actionscript and other languages are still important as they provide back-end funcitonality to HTML5 frontends. It should be noted that HTML5 itself has some interesting capabilites that give it back-end functionality… such as the ability to save local data and drag/drop files.

Ways to create mobile “Apps”

There are three basic ways:

  1. Native Apps
  2. Web Apps
  3. Cross-compilers (program in one language, and compile for a different)

Native Apps

“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/,

Web Apps

“Web Apps” are created with HTML(5), CSS(3), and Javascript APIs and are “contained” inside a native wrapper… a technique that allows the apps to run on multiple platforms. The focus seems to be on “webkit” enabled devices and use of HTML5. The main benefit to this method is the use of common technologies and the transportability of the content to ANY mobile device…Apple, Android, Nokia, Blackberry… or others.

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.

Using the Javascipt APIs you can access many native capabilites of devices… including geo-location, GPS, WiFi, phone status, accelerometer, multi-touch/gestures, contacts, audio/video, phone, and other functions. Javascript libraries exist to help create rich interfaces and interaction… like Worklight, XUI, YUI(yahoo), iUI, Sencha Touch, BaseJS, Mobile AJAX, Sproutcore, and I am sure, many others.

The most important thing to remember here is that most mobile device use is based upon accessing internet-based content… not use of completely self-contained apps. This seems to be the trend, especially as HTML5 (html5,CSS3,javascript together) become more of a reality. In July, Impact Mobile President Gary Schwartz told Mobile Marketer“Apps are moving to the super app: the mobile browser. It happened on the desktop from widgets to browser. Now we are seeing this in an accelerated fashion with mobile thanks to HTML5.” In fact, I personally think that HTML5 will become a “reality” on mobile devices sooner than it will on the desktop. This is especially true for audio and video media. Also, with HTML5 you can save local data… not just cookies.

Tools for Mobile Development

There a number of tools specifically for mobile web and app development:

  1. PhoneGap www.phonegap.com (the most popular)
  2. Accelerator http://www.appcelerator.com/
  3. WidgetPad www.widgetpad.com
  4. Rhomobile http://rhomobile.com/ (ruby based, so not a good option…but it is pretty robust)
  5. Whoop http://www.whoop.com/
  6. AppMobi XDKhttp://mkt.appmobi.com/
  7. AppMakr http://www.appmakr.com specifically for Apple.
  8. Sencha Touchhttp://www.sencha.com/products/touch/
  9. jQTouchhttp://jqtouch.com/
  10. jQuery Mobilehttp://jquerymobile.com/

More about PhoneGap vs Appcelerator (the two most popular web-app tools):
http://jonathanstark.com/blog/2010/04/05/phonegap-vs-titanium-mobile-et-al/

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)
http://www.amazon.com/Beginning-iPhone-Web-Apps-JavaScript/dp/1430230061

There are of course, arguments for native vs web apps… as native apps can be more robust.
http://mobileroadie.com/blog/2010/01/web-apps-vs-native-apps/

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:
http://news.cnet.com/8301-30685_3-20015954-264.html?tag=mncol;txt
http://news.cnet.com/8301-13506_3-20015927-17.html

Books on Android and Flash:
http://www.amazon.com/Pro-Android-Flash-Building-Smartphones/dp/1430232315/ref=sr_1_2?ie=UTF8&s=books&qid=1287717689&sr=1-2-spell
http://www.amazon.com/Android-Development-Flash-blueprint-developing/dp/0470904321/ref=pd_sim_sbs_b_2
http://www.amazon.com/Professional-Flash-Mobile-Development-Applications/dp/0470620072/ref=pd_sim_sbs_b_3

Apple Vs Google Devices

There are many reasons to consider both platforms, but here are the basics of each platform.

Apple

  1. First to market with cool devices.
  2. Their development is closed… ie, they make the hardware and software for their devices. This insures quality and consistency.
  3. Profits are based on sales of devices.
  4. iPhones are currently only available on AT&T nut may also be available on other carriers soon.
  5. Runs on iPod, iPhone, and iPad.

Android

  1. Came to market after Flash. Needing to catch up.
  2. Open-source development. Very flexible.
  3. Profits are based upon advertising.
  4. Devices are available on nearly all US carriers. Not sure of the global availability.
  5. 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:
http://www.techworld.com.au/article/352264/developing_iphone_android_pros_cons

Here is a list of Google Android devices:
http://www.androphones.com/2010-android-phones.php

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:
http://www.siliconindia.com/shownews/App_store_war_Will_Android_reign-nid-72685-cid–sid-.html

Why Android?

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:

There are many reasons to consider the GIS program as a great partner for the mobile development curriculum. In my experience, Google is the most common source for geo-location data. It is integrated into a lot of their services… from photo tagging, mobile blogging, mapping, Google Latitude, and a host of other products. Since mobile devices are equipped with GPS, and other location-aware technologies (WiFi and cell tower referencing), they are an obvious choice for location-aware apps that access geo-tagged data or deliver mapping. The javascript API for geolocation and mapping is quite robust and integrates well with mobile devices… either Apple or Android.

More on geolocation API:
http://code.google.com/apis/maps/documentation/javascript/
http://techxplorer.com/2010/03/16/geolocation-using-the-browser-in-the-android-os-part-2/

Digital Media:

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 Animation:

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.

Conclusion:

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.

, , ,

Leave a comment

Getting Started

Welcome to my new blog. I talk about blogging all the time… but never really take the time to do it. So, here I am. A blog is a very useful tool to get out the ideas you have (or I have) to the masses, and that is exactly why I am doing this.

I am an educator, teaching digital media at a college in Asheville, NC. If you want to learn digital media skills, or Adobe software, or even a little Blender, then I have some resources for you. Some of my lectures are useful, some not. You decide.

Enjoy….

Leave a comment