Skip to content

Chapter 2: The App Landscape – Types, Tools, and Languages

Types, Tools, and Languages

Imagine you’ve had a brilliant idea for an app. Before you write a single line of anything, you face a series of surprisingly important decisions. Should it be a “real” app you download from a store, or something that runs in a web browser? What programming language should it be written in? What tools do professional developers use to build it? And how will your app get permission to use the phone’s camera, location, or contacts?

These decisions shape everything that follows — how fast your app is, how much it costs to build, which phones it runs on, and how many people can use it. There’s rarely one right answer. Instead, every choice is a trade-off, and learning to reason about those trade-offs is what separates someone who just uses apps from someone who can plan and design them.

This chapter is your map of the app landscape. You won’t be writing full programs yet — you’ll be learning the lay of the land, so that later, when you do build, you’ll know exactly which path to take.


2.1 — Three Kinds of Apps: Native, Web, and Hybrid 📦

Section titled “2.1 — Three Kinds of Apps: Native, Web, and Hybrid 📦”

Not every app is built the same way. There are three main types, and the difference between them is one of the most important concepts in all of mobile development.

A native appnative app: An app built specifically for one platform (like iOS or Android) using that platform's official tools and languages. Native apps are downloaded from an app store and can use all of a device's features, but must be built separately for each platform. is built specifically for one platform — iOS or Android — using that platform’s own official tools and languages. When you download an app from the App Store or Google Play, it’s usually native. Because it’s made for that exact system, a native app can do everything: use every sensor, run at full speed, and work offline.

  • Pros: Fastest performance, full access to device features, best “feel,” works offline.
  • Cons: Expensive — you often have to build the app twice, once for iOS and once for Android, with two teams and two codebases.
  • Best for: Games, apps that lean heavily on the camera or sensors, and anything where speed and polish matter most.

A web appweb app: An application that runs inside a web browser rather than being installed from an app store. Web apps work on any device with a browser but have limited access to the device's hardware features. isn’t really “installed” at all — it runs inside your web browser, like any website, and is written with web technologies. You reach it by typing a web address, not by downloading from a store.

  • Pros: Write it once and it runs everywhere there’s a browser; nothing to install; instant updates.
  • Cons: Limited access to device hardware, generally can’t work well offline, and usually can’t be listed in app stores.
  • Best for: Content and tools that don’t need deep hardware access — a reading site, a simple utility, a company’s customer portal.

A modern middle ground is the Progressive Web App (PWA)Progressive Web App (PWA): A web app enhanced with modern browser features so it can be installed to the home screen, work offline, and send notifications — blurring the line between a website and a native app. — a web app upgraded so it can be added to your home screen, work offline, and send notifications, making it feel much more like a native app.

A hybrid apphybrid app: An app that combines elements of native and web apps — often web code wrapped so it can be installed from an app store and access some device features. Related cross-platform tools let developers write one codebase that runs on both iOS and Android. tries to get the best of both worlds: one codebase that becomes an installable app on both iOS and Android. Closely related are cross-platform frameworks, which have become hugely popular because they let a team write the app once and ship it to both platforms.

  • Pros: One codebase for both platforms saves time and money; can be listed in app stores; access to many device features.
  • Cons: Can be slightly slower or less “native-feeling” than a true native app for the most demanding tasks.
  • Best for: Most everyday business, productivity, and social apps, where reaching both platforms affordably matters more than squeezing out the last drop of performance.

2.2 — The Major Categories of Apps 🗂️

Section titled “2.2 — The Major Categories of Apps 🗂️”

Millions of apps exist, but they cluster into a manageable set of categories. Knowing them helps you understand who your competition is, what users expect, and where an idea fits.

Category What It’s For Familiar Examples
Social networking Connecting and sharing with others Instagram, TikTok, Discord
Books & reference Reading and looking things up Kindle, Wikipedia, dictionary apps
Business & finance Money, work, and banking mobile banking apps, PayPal, budgeting tools
Lifestyle Daily life, health, and hobbies fitness trackers, recipe apps, meditation
Travel Getting around and going places airline apps, hotel booking, translation
Navigation Maps and directions Google Maps, Waze, transit apps
Productivity Getting things done notes, calendars, document editors

Categories aren’t just labels — they shape expectations. Users assume a navigation app will find their location instantly, a banking app will be secure, and a social app will be fast and endlessly scrollable. Part of designing a good app is understanding the unwritten rules of its category, then deciding when to follow them and when to break them to stand out.


Apps are written in programming languageprogramming language: A formal language used to write instructions that a computer can carry out. Different languages have different strengths, and mobile apps are built in several of them depending on the platform and goals. — and there are many, because different platforms and goals call for different tools. You don’t need to master any of these yet. The goal here is to recognize them and understand why a team would choose one over another.

Language Mainly Used For Notes
Swift Modern iOS, iPadOS, and Mac apps Apple’s current language — safe, fast, and readable
Objective-C Older iOS apps Swift’s predecessor; still found in older codebases
Kotlin Modern Android apps Google’s preferred Android language today
Java Android and enterprise apps Powered Android for years; still widely used
C# Cross-platform apps and games Used with tools like .NET MAUI and the Unity game engine
JavaScript Web apps and cross-platform apps The language of the web; powers React Native
Dart Cross-platform apps The language behind Google’s popular Flutter framework

Three big reasons explain the variety:

  1. Platforms have preferred languages. Apple built Swift for its devices; Google promotes Kotlin for Android. Using a platform’s own language gives you the smoothest access to its features.
  2. History leaves layers. Objective-C and Java were dominant for years, so millions of existing apps still use them. Old code doesn’t disappear overnight.
  3. Cross-platform tools change the math. Frameworks like React Native (JavaScript) and Flutter (Dart) let one team write an app once and run it on both iOS and Android — trading a little performance for a lot of saved time.

This last point is the idea of cross-platform developmentcross-platform development: Writing a single codebase that can run on multiple platforms — such as both iOS and Android — instead of building a separate app for each. It saves time and money but can involve small trade-offs in performance or platform 'feel.' — and it’s one of the biggest trends in the field. A generation ago, reaching both iPhone and Android users meant building and maintaining two entirely separate apps. Today, a small team can often serve both with a single, shared codebase.


2.4 — Device APIs: Unlocking the Hardware 🔌

Section titled “2.4 — Device APIs: Unlocking the Hardware 🔌”

An app can’t just reach into the phone and grab the camera or your location whenever it wants — that would be a security nightmare. Instead, the operating system offers carefully controlled doorways called APIs. On mobile, the ones that expose the device’s own hardware are sometimes called Device Application Programming Interface (DAP)Device Application Programming Interface (DAP): A device-level API that lets an app use a specific piece of a phone's hardware or built-in capability — such as the GPS, camera, or vibration motor — through a controlled, permission-based interface provided by the operating system. (Device Application Programming Interfaces).

Think of a DAP like a service window at a building. You can’t wander in and take what you want, but you can walk up to the correct window, show your permission, and request a specific service. The operating system controls the window, which keeps things secure and consistent.

Device API What It Unlocks Example App
Mapping / Geolocation Where the device is A food-delivery app finding your address
Device orientation Which way the phone is held A photo app rotating between portrait and landscape
Vibration / Haptics The buzz motor A messaging app buzzing when a text arrives
Forms / Input Keyboards and text entry A sign-up screen collecting your name
Media Camera, microphone, photos, audio A social app letting you post a photo or record a video
Notifications Alerts that appear even when the app is closed A reminder app pinging you at 3 p.m.

Using APIs is almost always the right move, but it’s worth understanding the trade-offs:

  • Advantages: You don’t have to build complex features from scratch, your app behaves consistently with the rest of the phone, and the OS handles security and permissions for you.
  • Disadvantages: You depend on the platform — if Apple or Google changes an API, your app may break; and each API typically requires user permission, so people can say no, and a good app must handle that gracefully.

That permission step is where technology meets ethics. Every time an app asks to use your location or camera, it’s using an API — and how responsibly it asks, and what it does with the access, is a question you’ll examine closely in Chapter 5.


Professionals don’t build apps in a plain text editor. They rely on a set of powerful tools and platforms that handle the heavy lifting. You should be able to recognize the major ones.

Integrated Development Environments (IDEs)

Section titled “Integrated Development Environments (IDEs)”

An Integrated Development Environment (IDE)Integrated Development Environment (IDE): A single application that bundles everything a developer needs to write, test, and build software — a code editor, a debugger, tools to catch errors, and a way to run the app on a simulated device. is an all-in-one workshop for building apps. It combines a code editor, tools that catch your mistakes as you type, a debugger for hunting down problems, and a simulator that lets you run your app on a pretend phone right on your computer. The two giants are:

  • Xcode — Apple’s IDE for building iOS, iPadOS, and Mac apps.
  • Android Studio — Google’s IDE for building Android apps.

Today’s developers increasingly build screens using declarative UI frameworks, where you describe what the interface should look like and the framework figures out how to draw it:

  • SwiftUI — Apple’s modern way to build interfaces for its devices.
  • Jetpack Compose — Google’s modern equivalent for Android.
  • Flutter and React Native — cross-platform frameworks that build for both at once.
  • Version control (like Git) keeps a complete history of every change and lets teams work on the same code without overwriting each other.
  • Testing tools automatically check that the app still works after changes.
  • App store consoles (App Store Connect and Google Play Console) are where developers submit, manage, and monitor their published apps.

Developers rarely work alone or in silence. The whole field runs on shared knowledge: developers ask and answer questions on sites like Stack Overflow, write blog posts explaining how they solved a tricky problem, contribute to wikis and documentation, and share code openly. When you get stuck — and everyone gets stuck — knowing how to search for answers, read documentation, and ask a clear question is as valuable a skill as any language. Learning to communicate about code is part of learning to build it.


Chapter 2 Activity: The App Categories Showcase 🔍

Section titled “Chapter 2 Activity: The App Categories Showcase 🔍”

Working as a class, you’ll build a shared presentation that explains the mobile app landscape — exactly the deliverable the standards call for.

Each student or small group claims one app category from Section 2.2 (social networking, books, business & finance, lifestyle, travel, navigation, or productivity). For your category, create one or two slides that:

  1. Define the category in your own words.
  2. Identify three real example apps, citing where you found them.
  3. Explain what users expect from apps in this category.
  4. Name which app type (native, web, or hybrid) most apps in your category tend to be, and why.

Swap slides with another group. Using specific, kind feedback, suggest one improvement to their slides — a missing example, an unclear definition, a claim that needs a source. Then revise your own slides based on the feedback you receive. This review-and-revise loop is how real product teams work.

As a short written response, choose one of these app ideas and argue which type (native, web, or hybrid/cross-platform) you’d build it as, using the trade-offs from Section 2.1:

  • A fast-paced 3D racing game
  • A city’s public bus-schedule tool
  • A note-taking app for students that must work offline

Support your choice with at least two specific reasons, and name one downside of your choice.


  • I can explain the difference between native, web, and hybrid apps
  • I can identify the pros, cons, and best use for each app type
  • I can describe what a Progressive Web App is and why it’s a useful middle ground
  • I can name the major categories of mobile apps and give examples of each
  • I can recognize the main mobile programming languages and what each is used for
  • I can explain why so many different languages exist and what cross-platform development means
  • I can define a Device API (DAP) and list several common types with example apps
  • I can describe the advantages and disadvantages of building on APIs
  • I can identify key developer tools: IDEs, UI frameworks, version control, and app store consoles
  • I can explain why communicating and sharing knowledge is part of being a developer