Mobile App Development

This post is a work-in-progress..so some of it is very rough, some without complete sentences or thoughts. Feel free to comment and critique as it progresses, though.

There are effectively only two platforms left on the market for the average consumer:

Android (Google) and iOS (Apple)

Trademarks of Google AOSP and Apple respectively.

Developers go where the market is, generally meaning native Android (Java, Kotlin, etc.) or native iOS (Objective-C, Swift)–right?

Well, these are certainly still valid options (‘old way’), but other, attractive options (‘new way’) are available, which I’ll cover below.

Old Way: Native Apps

  • Android
    • Moving to new language (Kotlin, and eventually Dart, or even Flutter)
      • Kotlin has a shallow learning curve from Java
    • ‘Fuchsia’ will be the new OS (not Linux-based), as Google looks to replace both Android and Chrome OS (both Linux-based) with a single OS that they control from the ground up.
  • iOS
    • User base is at best holding steady, but not growing
    • Apple makes it ‘difficult’ to develop apps
      • macOS-based — XCode only runs on macOS
      • Generally requires Apple dev account (at least $100/yr/dev)
      • App store deployment effectively required, even if app targeted to small business or group
        • Administrative/’paperwork’ overhead
        • If charging customers for app, Apple takes large percentage cut from every sale, meaning it must be passed on to end customer

New Way: HTML5, Hybrid and Transpiled-to-Native Apps

At their core, both iOS and Android apps share almost ALL of the same concepts–UI elements, structural application components, etc. This similarity made them ripe targets for third-party frameworks to convert a common ‘mobile app’ source code base into two, distinct, native apps for each of the dominant mobile platforms. Enter hybrid and transpiled apps.

  • Javascript/Typescript ‘transpiled’ and hybrid frameworks
    • NativeScript (transpiled into native Android and iOS)
    • React Native (native apps)
    • Flutter (google-sponsored, iOS and Android native apps)
    • Ionic (HTML5 mobile apps, hybrid, non-native)
    • Xamarin (MS-sponsored, .NET cross-platform)
    • PhoneGap (hybrid compiled, non-native, very old, was Cordova)
  • There’s also just the simple HTML5 web app that can be run as a ‘progressive mobile web app’
  • The beauty of all three types is that, to varying extents, they all leverage HTML/CSS/JS skills learned in web development to make functioning mobile apps

Leave a Reply

Your email address will not be published. Required fields are marked *