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.
- 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.
- 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.