What is an App?

What is an App?

  • Introduction to Modern Application Development.
  • Defining what an "app" means in the context of modern technologies.

Definition of an App

  • Looking up the definition on Google, which leads to Techopedia.
  • An app is a computer software or program, typically a small specific one used for mobile devices.
  • Originally, "app" referred to any mobile or desktop application.
  • The rise of app stores, especially with the Apple iPhone, led to selling mobile apps to smartphone and tablet users.
  • The term evolved to mean small programs that can be downloaded and installed easily.
  • Focus on solving a specific problem with an app.

Examples of Apps

  • Familiar icons:
    • Amazon app (smiling icon).
    • Twitter app.
    • Microsoft Word (document editing).
    • Firefox and Chrome (web browsers).
    • Mail clients (reading email).
    • Instagram (social media).
    • Visual Studio Code (text editor).

Text Editors vs. Word Processors

  • Text editors are oriented towards handling text, especially for writing programs.
  • Peripheral support: syntax highlighting, automatic indenting, etc.
  • Examples: Visual Studio Code, Sublime Text, VI, Emacs.
  • Notepad (Windows) and Gedit (Linux) are simple text editors.
  • Text manipulation is important for markup languages, controlling what is displayed.

Terminals and Command Line Interface

  • Familiarity with the terminal or command line prompt is necessary.
  • Running programs on a system is important for application development.

Functional Division of Applications

  • Web browsers, code editors, word processors, social media applications.

Division by Platform

  • Desktop apps: standalone programs that can be used without a network connection.
Desktop Apps
  • Standalone programs that can function without a network connection.
  • Examples: Editors, word processors (Microsoft Word), Visual Studio Code.
  • Files are stored and accessed locally.
  • Web browsers require a network connection to be useful.
  • Mail clients (Outlook, Apple Mail, Thunderbird) perform reading, composing, and sorting emails locally but need a network to send/receive.
  • Local data storage is required for offline functionality.
  • Email clients download emails using protocols like POP or IMAP.
  • Word processors should function without a network connection.
  • Developed using Software Development Kits (SDKs).
  • SDKs are often OS-specific.
  • Windows-specific SDKs with frameworks for creating windows, GUIs, and API functions for OS linking.
  • Desktop apps are full-blown applications, not just smaller apps.
  • The boundary is blurring; focused applications can be distributed as standalone apps across multiple operating systems.
Mobile Platform Apps
  • Phones and tablets are primary targets for apps.
  • Phones are more dominant than tablets.
  • Developing mobile apps is typically targeted towards phones.
  • Tablets (iPad, Samsung tablets) are important due to their larger screen size.
  • Constraints:
    • Limited screen space.
    • Lack of keyboard and mouse.
    • New interfaces: touch, audio (speech-to-text), camera (gesture recognition).
  • Less memory (RAM) than desktops or laptops.
  • Lower processing power to conserve battery.
  • Need to run for extended durations on battery power.
  • Frameworks:
    • Operating system specific (Apple ecosystem).
    • Swift programming language with Apple's SDKs for iPhone/iPad development.
    • Applications developed for iPhone should work on iPad and macOS.
    • Android phones vastly outnumber Apple iPhones.
    • Cross-platform frameworks for developing on both Apple and Android.
  • Apps are strongly network-oriented due to the nature of the device.
  • Examples: Twitter, Instagram, Amazon shopping app.
  • Standalone mode is often not meaningful.
Web Apps
  • The web provides a platform for building applications.
  • Browsers (Chrome, Firefox) are ported to run on multiple devices (Linux, Windows, Mac).
  • Consistent interfaces across different operating systems.
  • Heavily network-dependent.
  • Rise of dynamic websites since Web 2.0 in the early 2000s.
  • Dynamic pages change based on user information.
  • Programming with languages like JavaScript allows manipulation on the browser itself.
  • Processing can be pushed onto the user's end (browser).
  • Web apps are the main focus of this course.
  • Goal: understanding fundamental principles irrespective of the final platform.
  • Distilling common elements to develop neutral applications.
  • The web provides a nice platform for achieving this.