Welcome to Part 2 of this review of the Pluralsight course Android Beginner Series: Understanding Android by John Sonmez.
John is the founder of Simple Programmer, and the author of the best selling book Soft Skills.
He also hosts the GetUp and CODE podcast, where he talks about fitness for programmers. John is a life coach for software developers, and helps software engineers, programmers and other technical professionals boost their careers and live a more fulfilled life. He empowers them to accomplish their goals by making the complex simple.
The Android operating system
What is an OS?
John explains that an operating system communicates with hardware, provides services for Applications and manages software execution
John uses the metaphor of a gatekeeper: it controls the access to the device’s resources.
We also learn about some of the responsibilities of an operating system:
– Program execution
– Listens to hardware (interrupts)
– Memory management
– File access
– User interface
Android is built on Linux. We see an image of the Android Architecture. The main sections are:
– Linux kernel
– Android Runtime
– Application Framework
John describes Android as an operating system within an operating system.
The linux kernel responsibilities include hardware drivers and power management
Low Level Libraries
These are written in C or C++. John gives some examples here.
The Android Runtime contains the Dalvik Virtual Machine. It also includes the core Java libraries.
In Android we don’t have access to the full set of Java libraries, only a subset.
What Is a Virtual Machine?
John explains that VMware, VirtualBox and Virtual PC are all examples of virtual machines.
However those are for running another copy of an operating system on our computers.
There are also process virtual machines, also known as application virtual machines.
The Dalvik VM is an example of this. It virtualizes the operating system services.
We see that the virtual machine sits below the Applications and above the Operating System.
John describes the virtual machine as like a super application that can do almost anything.
John compares the Dalvik VM with Java’s Virtual Machine (JVM)
The Dalvik VM is optimised for mobile devices and runs one VM per application.
We begin with the Android Architecture diagram again, and in this clip we’re learning about the layer sitting above the Android Runtime and underneath the Applications
This is a set of Java libraries that define how Android applications work.
It gives us the tools and components we need for writing Android applications.
This framework gives us an abstraction that means we don’t (typically) need to understand how the low level C and C++ libraries work.
It is however still possible to work directly with the C and C++ libraries if we want to.
John explains that the standard apps that ship with the Android operating system are built the same tools that we have access to.
We can replace any of the Built In Apps with your own apps.
Each version of Android has a code name that is named after a snack treat:
- Cupcake (v1.5)
- Donut (v1.6)
- Eclair (v2.0, 2.1)
- Froyo (v2.2, 2.2.3)
- Gingerbread (v2.3)
- Honeycomb (v3.0, v3.1, v3.2)
- Ice Cream Sandwich (v4.0)
- Jelly Bean (v4.1, v4.2)
- KitKat (v4.4)
- Lollipop (v5)
- Marshmallow (v6)
John talks a bit about the notable features in each version and the version release dates.
For more details see the official Android Story
API levels indicate changes to the Aplication Programming Interface.
We see a chart showing the percentages of users on each version of Android. This is out of date.
For the latest distribution see Android Dashboards
The modern day phone is a bit like a Swiss army knife – it can do almost anything
- Sensors (e.g. Motion/Environmental/Position)
- 2D – 3D Graphics
- Data Storage
Accelerometers and Gyroscopes are examples of motion sensors
We can emulate real hardware using software.
The speed of emulators has increased significantly over the last couple of years. For example Intel’s Hardware Accelerated Execution Manager has given emulators a significant boost.