Speaking the Language of Apps
If you've ever used an iPhone, an Android phone, a Blackberry, or any other smartphone or tablet, you know what I mean when I say "app." App is short for application, and on a mobile device (such as a smartphone or a tablet computer), it means a piece of software that allows the device to do something it couldn't do before. You might have an app for getting driving directions, reading and sending email, playing solitaire, finding restaurants, and many other tasks.
People who create these apps are mobile app developers. They may work alone or in a team. Their tools include computer code, text, graphics, and sound. Some apps come preinstalled on mobile devices. You can download others from the Web or from an app store.
We typically divide apps into two broad categories—native and Web—depending on which tools the developers used to create the app and how it's distributed.
Native Mobile Apps
You download native mobile apps from an app store and install them on your mobile device. Programmers build them using the native programming language of the device's operating system (OS). An OS is the program that allows all the other programs on a computer to run smoothly without interfering with each other. Some examples of programming languages are Objective C (for Apple iOS, which is Apple's mobile operating system) or Java (for Android).
Native apps can talk directly to the operating system, camera, calendar, contacts database, and various other capabilities of your phone. Some of them function when the device is in offline mode (unconnected to the Web), and they may include sophisticated graphics, sound, and interactivity.
My favorite native mobile apps include Angry Birds, Words with Friends, Kindle, Audible, and RunKeeper.
You can use a native app on only one type of device, although developers often create versions of native apps for each of the popular mobile device operating systems. For example, native apps developed for Apple iOS run solely on the iPhone, iPod, and iPad. Native apps developed for Android run on Google Android devices only.
Mobile Web Apps
Web apps run inside a device's Web browser, and mobile app developers build them using Web standards such as HTML, CSS, and JavaScript.
Java What?
You may be familiar with the terms I just used, but let me explain them more fully, just in case.
- HTML means Hypertext Markup Language, and it's the language people use to create documents on the World Wide Web.
- CSS stands for Cascading Style Sheets. This addition to HTML gives developers and users more control over how to display pages. Using CSS, you can create one style sheet that (for example) sets rules for how a header should look, and then you can apply those rules to dozens or even thousands of pages without having to type in everything by hand.
- JavaScript is a programming language that you can use to create more interactive and dynamic Web content. Confusingly, JavaScript and Java are different languages developed by different groups of programmers.
Like native apps, Web apps can operate in offline mode, and they can feature sophisticated graphics, sound, and interactivity. They are increasingly capable of accessing native device operating systems and hardware.
Because they use standard Web languages, Web apps can run on any device with a Web browser. This includes smartphones and desktop computers.
My favorite mobile Web apps include YouTube, Gmail, Twitter, and Financial Times. Interestingly, in each of these cases, the developers created a Web app after developing a native one. In each case, the Web app is at least as good as (and usually better than) the native.
This table shows the main differences between native apps and Web apps:
Native apps | Web apps |
---|---|
Downloaded and installed on mobile device |
Run in Web browser |
Specific to one operating system |
Cross-platform—can run on any device with a Web browser |
Can access device functions directly |
Can access device functions through the browser |
Written using "native" programming language, such as Java or Objective C |
Written using HTML, CSS, JavaScript, or some combination of these |
Now that we have our basic definitions down, let's talk about why so many people and companies are certain that mobile Web apps, rather than native ones, are the future.
Think for a moment about the history of computing over the last few decades. (Don't worry, we're not going to go over all of that here . . . you can Google it if you're interested!) Before the Web came along, everything you wanted to do on your computer required you to insert a disk of some sort and install software.
Before Google Maps, Wikipedia, Mint.com, Facebook, and Priceline, there were physical stores where you'd buy boxes containing CDs and manuals. Every so often, the software's author would release an upgrade, and you'd buy a new disk and install it.
Because vendors distributed the software on CD-ROM, it was difficult to update, and it was usually out of date. This could be an occasional inconvenience in the case of map software, but it was expensive and a major hassle in the case of accounting software.
Part of the price of the software you purchased went to the store that sold you the software, part went to the distributor, and part went toward the fancy packaging. When you got home with your new software, you'd put the disk in your disk drive and run or install the software, and then you'd put the disk and manuals on a shelf.
It's clear now that this sort of installable, native software that you buy is on its way out for most day-to-day computing applications. What's replacing it is the concept of software as a service.
Software as a Service (or SaaS) treats software as something that you pay for when you need it (or that advertisers or someone else pays for) and that you access using a Web browser. You might log into websites to get your email, to organize your photos, to chat with friends, to manage your finances, and to do so many other tasks.
In the business, we call this cloud computing. Perhaps the greatest part of all of our computing moving to the "cloud" is that you can access your data anywhere and on any computer, and the software is always up to date.
On smartphones, however, we're still mostly downloading apps from a centrally controlled source, such as Apple's app store, and we have to keep going back to that store to install updates. The distributor takes a huge cut of the action (30%, in the case of the Apple app Store!), and your "shelf" space on your phone is limited. If you're like me, you run out of storage space on your smartphone regularly and have to delete pictures of your cats so that you can fit the latest updates to your apps.
So far, browser-based apps haven't achieved the same sort of success they've had on desktop and laptop computers. That's because of technical limitations, such as a shortage of bandwidth and computing power, along with a lack of agreed-upon standards. But this situation has been changing rapidly in the last couple of years because of two factors—HTML5 and the WebKit browser engine.
HTML5 and WebKit
HTML5 is the latest version of the language of the Web. This version features built-in support for video and audio, great new ways to do animation, offline browsing, better handling of errors, and more. Perhaps most importantly, HTML5 is easier to write than previous versions of HTML. The creators of HTML5 have tried to make it adapt to the people who are writing it, rather than forcing authors to adapt their style to it.
When the people at Apple decided to include their own Web browser with their computers, they decided it would be faster and less expensive to modify an existing open-source browser than to build their own from scratch. (Open source means the computer code is available to anyone to use, modify, and redistribute for free.)
After evaluating the possibilities, they settled on a browser known as KHTML to serve as the foundation of their Safari and Mobile Safari Web browsers.
Apple eventually released its expanded version of KHTML, called WebKit, as open source, which the KHTML license agreement requires. Because of the popularity of the iPhone and the quality of WebKit (not to mention that it's free), almost every mobile Web browser manufacturer put it at the heart of their Web browsers. These manufacturers include Google, Palm, Nokia, Amazon, Opera, and Blackberry.
In 2013, Google announced that it is creating its own browser engine, called Blink, which is based on WebKit.
The same browser engine runs on iOS, Android, Blackberry, and others. So you can be pretty sure that anything that runs in Mobile Safari, for example, will run (with a few nips and tucks, of course) in the Android browser.
The combination of HTML5 and the rapid adoption of WebKit (and other HTML5-compliant browsers) on mobile devices is exciting news for mobile app developers because it means that we have to learn to code in fewer languages and do less work in order to make our apps available to more people.
What's Your App?
Before moving on to the next chapter, I want you to do a couple of exercises.
First, jot down the first five things you can think of that people do with smartphones. I'll get you started:
1. Make phone calls.
2. Send text messages.
3. Order pizza.
Second, if you have an idea for a mobile app, write a sentence or two about that idea. Don't worry; you don't need to show anyone your list or your idea. However, if you want to share your thoughts, feel free to do so in the Discussion Area!
Once you have your idea and your list, move on to the next chapter. We'll talk about what makes mobile applications special and what makes a good mobile app.