What is Android?
Android is an open-source software stack that includes the operating system, middleware, and key
mobile applications, along with a set of API libraries for writing applications that can shape the look, feel, and function of the devices on which they run. With the introduction of tablets and Google TV, Android has expanded beyond its roots as a mobile phone operating system, providing a consistent platform for application development across an increasingly wide range of hardware.
mobile applications, along with a set of API libraries for writing applications that can shape the look, feel, and function of the devices on which they run. With the introduction of tablets and Google TV, Android has expanded beyond its roots as a mobile phone operating system, providing a consistent platform for application development across an increasingly wide range of hardware.
Android is an eco-system of 3 things – free Open Source OS (OSOS) for embedded devices – An OS Development Platform for Apps – Devices that run Android OS and Apps created for it.
Android has powerful APIs, excellent documentation, a thriving developer community, and no development or distribution costs. As mobile devices continue to increase in popularity, and Android devices expand into exciting new form-factors, you have the opportunity to create innovative applications no matter what your development experience.
History of Mobile Devices
In the days before Twitter and Facebook, when Google was still a twinkle in its founders’ eyes and dinosaurs roamed the earth, mobile phones were just that — portable phones small enough to fit inside a briefcase, featuring batteries that could last up to several hours. They did, however, offer the freedom to make calls without being physically connected to a landline.
Increasingly small, stylish, and powerful, mobile phones are now ubiquitous and indispensable. Hardware advancements have made mobiles smaller and more effi cient while featuring bigger, brighter screens and including an increasing number of hardware peripherals.
After fi rst including cameras and media players, mobiles now feature GPS receivers, accelerometers, NFC hardware, and high-defi nition touchscreens. These hardware innovations offer fertile ground for software development, but until relatively recently the applications available for mobile phones have lagged behind their hardware counterparts.
Mobile Application History
C/C++ coding in specific hardware which was targeted – Later on came platforms like Symbian, allowed target target devices - Still accessing the device hardware needed lot of complex C/C++ programming. Biggest Advancement came with Java hosted MIDlets. IT defines an architecture that abstracts the underlying hardware & lets the developer develop application targetted to multiple devices – Only Drawback with MIDlets was it dint give low level hardware access and sandbox model prevented lot of things making a MIDlet like a simple desktop application or a mobile version of Website. Rather what was required was to make advantage of the inherent mobility of the handheld device.
Minimum Native Android Apps (A suite of preinstalled apps as part of AOSP- Android Open Source Project)
1. Email Client
2. SMS mgmt app
3. PIM – Personal Information Mgmt including calendar, contact lists
4. WebKit-based Browser
5. Music Player
6. Picture Gallery
7. Camera & Video Recording App
8. Calculator
9. A Home Screen
10. An Alarm Clock
Additional Apps given sometimes
1. Google Play
2. Google Maps Application fully featured for navigation and directions
3. Gmail email client
4. Google Talk – instant messaging Client
5. Youtube player
Android SDK Features (Lot of APIs)
GSM, 3G, SMS – GPS (Location Based Services), Maps, Geocoding – Wifi hardware access – Full multimedia hardware control including playback, recording with camera/microphone – Media Libraries to play and record audio/video/images – APIs for SENSOR Hardware including Accelerometers/barometers/compasses – Bluetooth , NFC – IPC Message passing – APIs for contacts, Social Networking, calendar – Background Services, apps, processes – Home Screen Widgets and Live Wallpapers – Integrated OS WebKit – based browser, path-based 2D graphics, OpenGL 3D graphics – Localization using dynamic resource framework – An application framework to replace native apps and reuse existing apps.
Why Develop for mobile and why not think of reusing the desktop apps in mobile?
The ubiquity of mobile phones, and our attachment to them, makes them a fundamentally different platform for development from PCs. Smartphone applications has changed the way people use their phones. This gives you, the application developer, a unique opportunity to create dynamic, compelling new applications that become a
vital part of people’s lives.
Why Develop for Android ?
Open Source, by Developers – for developers – no certi required to become android developer – no approval needed in distributing your apps – easy monetizing and upfront payment on Google Play – Total control of brand is with developers.
Why Prefer over other platforms?
Things that android has which most other mobile platforms do not have or are very complex in them: Google Map applications – Background services and applications – IPC – All applications are equal – Wifi Direct and Android BEAM – Home Screen Widgets, Live Screen Wallpapers & Quick Search Box
THE WHY COMPLETES HERE, NOW WE COME TO HOW
Programming Language: Java
If you have experience with java you will find syntax, grammar, techniques, they would directly translated into Android, although some of the optimization techniques may be counter intuitive
Execution is by custom VM: Dalvik VM rather than traditional JVM. It is a middle tier between apps and hardware. Thus apps implemented over DVM need not worry about particular underlying device implementation. Dalvik executable files are executed by DVM. Thus on compilation, .java files are converted into .dex by converting the bytecode into dalvic executable using tools available in SDK.Should we develop android apps on Windows or Linux or Mac? Since it runs on DVM, there is no particular advantage of developing on any particular OS.
What is below DVM? It’s a Linux 2.6 Kernel that handles low level hardware interactions – drivers, process, memory, security, network, power
Android Runtime = Core Libraries (core java and android libraries) + DVM
If we do not have Android runtime, the android phone would rather be a simple mobile linux implementation
Application Framework = provides classes to write android apps. It is abstraction of hardware/UI/resources
Application Layer = All native & 3rd party Apps which makes use of Application Framework classes and services
No comments:
Post a Comment