Chapter 1 - Overview of Mobile Application Development

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 21

Mobile

Application
Development
Overview of
Mobile
Application
Chapter One
Development
and Flutter
Basics
● Introduction to Mobile Application
Outline
● History of Mobile Application

● Flutter Introduction

● Flutter Architecture
Mobile Application
➔ Mobile application development is the set of processes and procedures involved in
writing software for small, wireless computing devices, such as smartphones and
other hand-held devices.
➔ Like web application development, mobile application development has its roots in
more traditional software development. One critical difference, however, is that
mobile apps are often written specifically to take advantage of the unique features
of a particular mobile device.
➔ a gaming app might be written to take advantage of the iPhone's accelerometer or a
mobile health app might be written to take advantage of a smartwatch's temperature
sensor.
Mobile Application
➔ A mobile application (or mobile app) is a software application designed to run on
smartphones, tablet computers and other mobile devices.
➔ A mobile application, most commonly referred to as an app, is a type of application
software designed to run on a mobile device, such as a smartphone or tablet
computer.

➔ Mobile applications frequently serve to provide users with similar services to


those accessed on PCs.

➔ Apps are generally small, individual software units with limited function.
1

History of Mobile Applications


➔ The first public cellular phone call was
made by Martin Cooper of Motorola on
3rd April 1973 in a publicity stunt in New
York.
➔ There would be another ten years of R&D
however before the first cell phone would
hit the market.
➔ The DynaTAC 8000X weighed in at around
2 pounds, cost $4,000 and didn’t run any
apps.
1
➔ The first recognisable apps came with

Psion EPOC Psion’s range of handheld computers –


mostly PDAs – that used the EPOC
operating system.
➔ First released in the early 90s the sixteen bit
machines (SIBO) which ran EPOC allowed
users programmes such as a word processor,
database, spreadsheet and diary.
➔ Later models in the range, running a 32-bit
OS, would come with up to 2MB RAM and
allow users to add additional apps via
software packs (or via download if you were
lucky enough to own a modem).
➔ EPOC, which was programmed in OPL
(Open Programming Language) and
allowed users to create their own apps,
would later form the backbone of the
Symbian operating system.
1
➔ Palm emerged as a major rival to Psion in

Palm OS the PDA market with its cheaper, lower


functionality range of PDAs – the Palm
Pilot.
➔ Commercial success allowed Palm to
release a new generation of machines in
1996 which utilised the Palm OS.
➔ This had a touchscreen GUI and came with
a raft of basic apps as well as tons of third
party apps programmed in C/C++.
➔ From Palm OS 3.0 onwards these included
a WAP browser.
➔ Following the acquisition of PalmSource by
ACCESS, Palm OS became the ACCESS Linux
Platform before being abandoned in favour of
webOS (which is now used in LG’s smart TVs).
J2ME/JME
➔ As feature phones got faster the possibilities for phone
apps expanded and it was Java Micro Edition that won
the race to provide a platform for developing them.
➔ Java ME started life as JSR 68, replaced Personal
Java and quickly became so popular that it evolved
into numerous standards for use across phones,
PDAs and other embedded devices like set top boxes.
➔ Symbian grew out 1of the Psion EPOC
operating system.
Symbian ➔ Originally developed by Symbian Ltd – a
joint venture of Psion, Ericsson, Motorola
and Nokia – the operating system was
almost ubiquitous.
➔ In 2009 250 million devices were running
Symbian.
➔ It was Nokia that really drove the
development of Symbian OS.
➔ The S60 platform was used on nearly all
Nokia handsets as well as some Samsung
and LG ones.
➔ The use of different, fragmented platforms
(Sony Ericsson and Motorola used UIQ and
there was MOAP(S) for NTT DoCoMo), each
with its own API, meant that there were a
variety of deployment techniques and no
standard marketplace for apps.
Symbian
➔ The incompatibility of apps across platforms and the failure to fully move to
open source (several key components were licensed from third parties) are
probably what sounded the death-knell for Symbian.

➔ A market share of 37.6% in 2010 had dropped to 4.4% in 2012 after Nokia

jumped ship for the Windows Phone platform and other OEMs gathered

beneath the banner of Android with its single, unified marketplace for apps.

➔ The last Symbian smartphone, the Nokia 808 PureView ran the Nokia Belle

update which used C++.


Android
➔ Based on the Linux kernel, Android started life as a proposed advanced
operating system for digital cameras until the company realised that the
market was limited compared to that for mobile phones.
➔ The Open Handset Alliance unveiled the Android operating system in 2007,
nearly two years after Google’s acquisition of Android. (The launch of Google’s
foray into the mobile world was delayed by the launch of the iPhone which
radically changed consumers’ expectations of what a smartphone should do.)
➔ you can develop a native Android app with Java or Kotlin
iOS

➔ Apple’s iPhone set the standard for the new generation of smartphones
when it was first released in June 2007 with its touchscreen and direct
manipulation interface. There was no native SDK until February of 2008
(Apple initially planned to provide no support for third-party apps).
➔ The iOS lineage started with NeXTSTEP, an object-oriented multitasking
OS from the late eighties developed by NeXT Computer
➔ The main programming language for iOS is Objective C. Development is
done through Xcode IDE which has an in-built iOS simulator.
Hybrid Mobile Application Development

➔ Some frameworks allow you to build ‘hybrid’ apps which are not truly native (since their

layout rendering is done via web views) or totally web-based (since they’re packaged for

distribution and have access to native APIs).

➔ The disadvantages of hybrid apps are that you only get limited access to the native

functionality of the phone on which the app runs and that such apps are usually slower

than ‘pure’ native apps.


◆ PhoneGap
◆ Xamarin
◆ React Native
◆ Flutter
Flutter Introductions

➔ Flutter is a cross-platform UI toolkit that is designed to allow code reuse across operating

systems such as iOS and Android, while also allowing applications to interface directly with

underlying platform services.

➔ The goal is to enable developers to deliver high-performance apps that feel natural on different

platforms, embracing differences where they exist while sharing as much code as possible.

➔ During development, Flutter apps run in a VM that offers stateful hot reload of changes without needing

a full recompile.
Flutter Introductions

➔ For release, Flutter apps are compiled directly to machine code, whether Intel x64 or ARM

instructions, or to JavaScript if targeting the web. The framework is open source, with a

permissive BSD license, and has a thriving ecosystem of third-party packages that

supplement the core library functionality.


Architectural layers
Architectural layers

➔ Flutter is designed as an extensible, layered system. It exists as a series of independent


libraries that each depend on the underlying layer.
➔ No layer has privileged access to the layer below, and every part of the framework level is
designed to be optional and replaceable.
➔ A platform-specific embedder provides an entrypoint; coordinates with the underlying
operating system for access to services like rendering surfaces, accessibility, and input; and
manages the message event loop.
➔ The embedder is written in a language that is appropriate for the platform: currently Java
and C++ for Android, Objective-C/Objective-C++ for iOS and macOS, and C++ for
Windows and Linux.
Architectural layers

➔ Using the embedder, Flutter code can be integrated into an existing application as a module, or
the code may be the entire content of the application. Flutter includes a number of embedders
for common target platforms, but other embedders also exist.
➔ At the core of Flutter is the Flutter engine, which is mostly written in C++ and supports the
primitives necessary to support all Flutter applications.
➔ The engine is responsible for rasterizing composited scenes whenever a new frame needs to be
painted. It provides the low-level implementation of Flutter’s core API, including graphics
(through Skia), text layout, file and network I/O, accessibility support, plugin architecture, and a
Dart runtime and compile toolchain.
Architectural layers

➔ The engine is exposed to the Flutter framework through dart:ui, which wraps the underlying C+
+ code in Dart classes. This library exposes the lowest-level primitives, such as classes for
driving input, graphics, and text rendering subsystems.
➔ Typically, developers interact with Flutter through the Flutter framework, which provides a
modern, reactive framework written in the Dart language.
➔ It includes a rich set of platform, layout, and foundational libraries, composed of a series of
layers. Working from the bottom to the top, we have
Architectural layers
➔ Basic foundational classes, and building block services such as animation, painting, and
gestures that offer commonly used abstractions over the underlying foundation.
➔ The rendering layer provides an abstraction for dealing with layout. With this layer, you can
build a tree of renderable objects. You can manipulate these objects dynamically, with the
tree automatically updating the layout to reflect your changes.
➔ The widgets layer is a composition abstraction. Each render object in the rendering layer
has a corresponding class in the widgets layer. In addition, the widgets layer allows you to
define combinations of classes that you can reuse. This is the layer at which the reactive
programming model is introduced.
➔ The Material and Cupertino libraries offer comprehensive sets of controls that use the
widget layer’s composition primitives to implement the Material or iOS design languages.

You might also like