Chapter 1
Introducing Cloud-Based Mobile Apps
WHAT YOU WILL LEARN IN THIS CHAPTER:
- Using your existing skills as a web developer to build mobile apps
- Understanding how HTML5 will be used as an app-development standard
- Learning how to dynamically create JavaScript functions
- Using the WebKit browser engine for app development
- Creating a mobile web app that responds to touch
- Installing and using the nginx web server
This book is for web developers who want to build mobile apps and cloud services. If you know HTML, CSS, and JavaScript, you already have the skills to build not only mobile apps but also the cloud services that power them.
The code examples in this book show you how to build complete apps. You are never left to put together the pieces yourself. The code is simple and includes error-handling logic, so you’ll learn how to build production-ready apps and systems.
Over the course of this book, you will build three complete applications. You’ll learn how to put together all the elements of the technology stack, and you’ll learn about a wide range of technologies and services. This book will enable you to get to work but avoids unnecessary detail and theory.
This book is an accelerator for your skills. You can use it to efficiently make the leap into mobile and cloud development. Rather than attempting to be a reference for all the details, which you can find on the web anyway, it is a stepping stone for your skills.
HOW TO BUILD MOBILE APPS IN THE CLOUD
This book describes how to build apps that run on the new generation of smart mobile devices. It also shows how to build out the business logic behind these apps, and how to run that business logic in a cloud hosting environment, such as that provided by Amazon.
This book focuses on the two leading platforms: iPhone and Android. These two, between them, cover the vast majority of smartphones and provide access to the largest market.
NOTE In this book, the term iPhone should be taken as shorthand for any iOS-based device, including iPad and the iPod Touch devices. Similarly, the term Android refers to any device running Android version 2.1 or higher, including any of the Android tablets that are competing with the iPad.
It’s important to understand the types of apps that can run on mobile devices:
- Mobile web apps — These apps are really just websites, designed to function in an app-like way. They run in a web browser on a device.
- Purely native apps — These apps are written in a device-specific language, using a device-specific programming interface: Objective-C for iPhone apps or Java for Android apps. Native apps can access all the capabilities of the device and can take many forms, from simple utility apps to advanced 3-D games.
- Hybrid native apps — For these apps, you use HTML to build the user interface but wrap the HTML in a native container. Such apps can access some of the native capabilities of the device but can still be developed using HTML.
In this book you will learn how to build mobile web apps and hybrid apps.
The other component that many apps have is not something that lives on the mobile device at all. It is the business logic, data storage, and service integration that support the operation of the code on the mobile device. This element of app development is just as important as the visible part that you install on your device. Placing this code in a cloud-hosting environment is the best approach to developing a robust support system for your app, and this book shows you how to build the server elements of your app. You will learn how to do this by using your existing JavaScript skills. You’ll run your code on the server using Node.js, a high-speed, high-capacity JavaScript server engine.
Using Your Existing Skill Set
As a web developer, you already possess all the skills you need to be a mobile app developer as well. If you can build websites, you can build mobile apps. If you are a web developer wanting to build mobile apps, you do not need to learn new languages such as Objective-C or Java. You do not even need to learn new languages to build the code for servers that support your app.
All you need to know is HTML, CSS, and JavaScript. This book assumes that you have a working knowledge of these three basic web languages. Even if you are more comfortable with design and graphics and are stronger in HTML and CSS than in JavaScript, you will still be able to follow the examples in this book and build your own apps.
This book takes a practical approach and shows you how to build real applications. The examples stick to common language features and avoid anything esoteric. The first set of code examples in this chapter lay the JavaScript ground work that will see you through to the end of the book.
You will use your existing skill set to build mobile web apps. You will then support those apps by using some server-side JavaScript, running on cloud servers, and you’ll see all the steps needed to set this up. Then you’ll learn how to create hybrid native apps using HTML, CSS, and JavaScript.
Determining What Tools You Need
You’ll need some development tools in order to fully explore the examples in this book. You will certainly find a physical iPhone or Android device very useful for testing and development. You need to run mobile apps on an actual device to really understand how they will behave once users get hold of them.
To a certain extent, you can develop the apps and code examples in this book on any of the three major operating systems: Mac, Windows, or Linux. However, you will find that a Mac is the best choice, simply because the iPhone development tools from Apple can only run on a Mac. Your Mac can also run the server code quite easily. One thing you should do is upgrade to the latest version of the Mac OS X operating system, as this will support the most up-to-date versions of the iPhone development tools.
Windows and Linux are also acceptable, although you will have to do a little more configuration and setup work. In particular, on Windows, you will need to install the Cygwin UNIX environment so that you can run Node.js. Cygwin is available from www.cygwin.com. As discussed in Chapter, 11, you will also have to rely on third-party services to build hybrid native iPhone apps.
You can build mobile web apps and the necessary server code using your existing development tools. All you need is a good code editor, and I’m sure you’ve already chosen a favorite for coding websites. You’ll also be using the command line quite a bit, especially for the server code. But don’t worry if you’re not comfortable with the command line; this book gives you exactly the commands you need to run.
Later in this book, you’ll need to download and install the software development kits (SDKs) for iPhone and Android development. These SDKs are provided as part of the Xcode (for iPhone) and Eclipse (for Android) development environments. Xcode runs only on a Mac, but you can run Eclipse on all three operating systems.
The final deve...