Book
  • Introduction
  • Welcome !!
  • Chapter 1: The mobile ecosystem
    • Fragmentation is the devil
    • There is more than one type of mobile app
    • ... more than one type of app
    • ... one type of app
    • Under pressure (ee da de da de) !!
    • Further reading!!
  • Chapter 2: Let's start with design thinking
    • A taste of design thinking
    • The five steps
    • Design for everybody
    • Accessibility in mobile apps
  • Chapter 3: Give me a context and I will give you an app
    • Users
    • Personas? Users ? What is the difference?
    • Please, help me to model the context
    • The context canvas
  • Chapter 4: Powerful models
    • Data architecture is the foundation of analytics
    • From data to information and knowledge
    • Information/Knowledge in our mobile ecosystem
    • Questions to ask yourselves when building and classifying questions
    • The visualization-data map
    • On the scene: describing how personas interact with your app
  • Chapter 5: A GUI is better than two thousand words
    • 'Good to Go:' Let's explore the Design Systems
    • Designing GUI Mocks
    • No prototype... no deal
  • Chapter 6: About mobile operating systems ... and other deamons
    • The Android OS ... son of LINUX
    • iOS son of Darwin? or is it iOS son of UNIX?
    • Kernels
  • Chapter 7: Yes, software architecture matters !!
    • Self-test time
    • About design and design constraints
    • Architects' mojo: styles and patterns
    • What you need is a tactic !!
    • Self-test time 2 (for real)
    • Further reading
  • Chapter 8: Finally... coding
    • MVC, MVVM, MV*, MV...What?
    • Programming models: the Android side
    • Hello Jetpack, my new friend... An Android Jetpack Introduction
    • Programming models: the iOS side
    • Controllers and more controllers
    • Flutter son of... simplicity
    • Programming models: Flutter?
    • Flutter: State matters... Let´s start simple
    • Flutter: State matters... Complex stuff ahead
    • Micro-optimizations
  • Chapter 9: Data pipeline
    • Generalities data pipelines
    • Data storage types
    • Types of data pipelines
  • Chapter 10: Error Retrieving Chapter 10
    • Eventual Connectivity on Mobile Apps
    • How to handle it on Android
  • Chapter 11: The jewel in the crown: Performance
    • As fast as a nail
    • Memory bloats
    • Energy leaks
    • Final thoughts
  • Chapter 12. Become a performance bugs exterminator
    • Weak or strong?
    • Micro-optimizations
    • The single thread game !!
    • Using multi-threading like a boss !!
    • Caching
    • Avoiding memory bloats
    • Further readings
Powered by GitBook
On this page
  1. Chapter 1: The mobile ecosystem

... more than one type of app

PreviousThere is more than one type of mobile appNext... one type of app

Last updated 1 year ago


In addition to native apps, there are other high-level categories of mobile apps: mobile web apps, and cross-platform apps. When you are in the process of creating a mobile app you have to make a first choice regarding the development platform: native, cross-platform, mobile web. But why are we talking here again about platforms? Well, because there are other development platforms (in addition to Android and iOS) and those are not native.

Note that in the case of Android development, the official platform provide us with native and cross-platform development. Android native apps can be created with Kotlin, Flutter/Dart, and Java, but we can also create cross-platform apps by usin and .

A mobile web app, is a web application suitable for being displayed in a mobile device resolution, i.e., the application is responsive and can be visualized in a browser running on a mobile device. This sounds pretty good in the sense that you can have both web and mobile versions, and you do not need to create a version for each mobile platform (Android & iOS). A big difference between native and web mobile apps, is that native apps need to be installed on each device and are typically downloaded from a market; for using a mobile web app you just need a browser and a URL. Again, a web mobile app sounds like a very good choice because you do not have to deal with the mobile fragmentation problem. However, remember that there is no free lunch, and there are some limitations in mobile web apps.

Mobile web apps are very limited in terms of accessing the resources in the devices, because they are not programmed using the native APIs. Because the apps run on the browser, then you have access only to the features/capabilities provided by the browser. In addition, mobile web apps require internet connection for accessing web resources. On the other side, native apps are the best solution for offline usage and features.

A potential solution for the offline problem in web apps is to follow the "progressive" apps guidelines. You can read more about it here https://developers.google.com/web/progressive-web-apps/

What is the best choice between native and mobile web apps? The answer is... it depends on what you wanna do. Web mobile apps are a good option for prototyping initial versions of an app or if you already have a web app and wants to prepare the mobile version quickly. But remember that with a web app you do not have access to the native APIs.

So, is there a better choice? We would not say a better choice; We would say there is a third type of app that is in between native and web mobile apps: Hybrid and Cross-platform apps.

Kotlin/Native
Flutter/Dart